751

Пишем программу для утюга на ассемблере

Серия Хобби

Пост носит сугубо техническо-юмористический характер, прошу всерьёз не воспринимать, а то были прецеденты


Всем привет! По причине того, что я имею официальный диагноз "Оператор ЭВМ", многие знакомые или родственники часто обращаются ко мне с просьбой что-нибудь починить. Ну, например, отвлечься от сортировки трёхмерных массивов, и сделать наконец-таки что-нибудь полезное для родины. Например, мультиварку или утюг. Но, чтобы это не было скучно, давайте попробуем написать исходный код для обыкновенного утюга. Для эстетичности и ради культурной ценности писать мы его будем на ассемблере.

Далее следует техническое описание, кому оно не интересно, а хочется сразу посмотреть результат, можете промотать до фотки с утюгом.

Ассемблер для AVR основан на RISC-архитектуре, что значительно позволяет упростить программу. Выберем микроконтроллер Attiny13, и напишем под него самую примитивную программу из возможных:

Чтобы не быть голословным, данная программа не задействует ОЗУ, а лишь устанавливает контроллер в конкретный режим работы. Далее я объясню, почему так.

Режим работы и данная программа весьма проста. Её можно выразить одним условием:
ТЕМП < K ? А : Б

Где темп - температура с датчика (напряжение на входе АЦП), к - требуемая константа температуры, а - состояние нагрева утюга, б - состояние охлаждения утюга

Аналогичная конструкция применяется в различных бойлерах, мультиварках, плойках и прочих устройствах, имеющих тысячи разновидностей. В таком виде я её впервые увидел в фирменном бойлере фирмы ARISTON.

У людей, более-менее знакомых с темой сразу же возникнет два вопроса:

По сути дела, данные устройства при использовании в этой задаче эквивалентны. Но имеется ряд отличий:

- Считается, что полупроводниковая схема надежнее, так как не имеет металлических частей, накапливающих усталостные напряжения. Поэтому такие устройства прослужат дольше. На практике случаи потери прошивки или пробоя по питанию столь же часты, сколь и выход из строя механического терморегулятора

- В данном включении наша ATTINY13 действительно ничем не будет отличаться от обычного компаратора LM339. Отличия проявляются лишь в возможности изменения константы K (вот эта строчка):

LM339 тоже поддерживает аппаратное изменение, для этого устанавливается обычный потенциометр на второй вход сравнения компаратора. Однако, например, в случае необходимости применения термопрофиля в качестве альтернативы МК практически отсутствуют варианты. Т.е. тут мы можем численно задать эту константу, и менять её при помощи внешних средств. Чтобы сделать подобное без микроконтроллера, платы будут очень громоздкими.

Немного отвлечёмся от темы:
В бойлере Gorenje эту константу можно дополнительно изменять при помощи двух кнопок, навешанных на свободные ножки контроллера. Для этого делаются соответствующие подпрограммы. Таким образом выставляется температура нагрева бойлера:

Правда, здесь используется контроллер с большим количеством ножек, для того, чтобы ещё и вывести динамическую индикацию этой константы:

Вернёмся к утюгу. Наша программа имеет 5 "субрутин", не записывает и не читает ничего из ОЗУ, даже не инициализируется стек. По причине того, что она весьма линейна.

preset - установка режима работы контроллеров. Записываем параметры в регистры управления.
adc_start - начало преобразования АЦП (напряжение в значение регистра)
wait - ожидание снятия флага преобразования. Флаг снимается, когда преобразование завершено.
compare - сравнение констант. Данные с АЦП пишутся в регистр, константа также пишется в регистр и происходит их сравнение (в данном случае - ветвление) brsh - branch if same or higher, то есть переход, если в АЛУ установлен флаг C
enable - ветка, в которую мы попадаем, либо не попадаем. Включает ТЭН.

Саму методику преобразования я уже описывал в предыдущих постах, когда работал с посудомойкой, а именно, здесь
Реле возьмём из проекта с пылесосом на линуксе.

Также нам понадобится, собственно, утюг. Возьмём типичный советский утюг, так как на опыты его уже не жалко:

Программа готова, прошьём контроллер:

Далее испытаем работоспособность схемы на макете. Вместо терморезистора (его видно в пакетике) для испытаний стоит крутилка из предыдущих проектов:

Всё успешно работает, поэтому можно попробовать подсоединить схему к утюгу. Пока что на соплях, для проверки того, что всё идёт по плану:

Далее установим терморезистор в область ТЭНа:

Ещё одним недостатком схем на микроконтроллерах и микросхемах, в отличие от механики, является необходимость в источнике питания. Это может быть трансформатор силовой, импульсный или же конденсаторный блок питания. В нашем случае лень было заморачиваться с этим, так что пока наш утюг получил USB-интерфейс, и питается от него:

Ну вот, собственно говоря, и всё. Пост писал Kekovsky для pikabu.ru

IT-юмор

7.1K постов53.2K подписчиков

Правила сообщества

Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий

Когда вижу ассемблер, то почему то сразу и представляю себе вот таких затейников. Браво! Для меня даже собрать обычный АВР для электрогенератора - та еще задачка была и в итоге все решалось на коленке, написано было на C и управлялось esp32. Надеюсь на новые подобные посты. Всего вам наилучшего и добра!

раскрыть ветку (8)
2
DELETED
Автор поста оценил этот комментарий

С тех пор, как я всё это разобрал, я стал.. Ну как бы так сказать, богоподобен. В этой сфере. Потому, что для меня в принципе теперь нет неразрешимых проблем - в плане того, что я знаю, сколько нужно времени на разработку и доведение до ума той или иной схемы/прошивки, могу изготовить недостающий модуль прибора, разобраться в его устройстве. Если зайти в магазин "ДНС"/мвидео и т.п. и ткнуть в любую вещь, я могу назвать практически каждую деталь, её материал и метод изготовления любой из частей. Практически в каждую из этих вещей я уже так или иначе залазил. Если бы была необходимость - я бы мог изготовить такую же кустарно. Развиваться есть куда - совершенствовать код, учить паттерны новые, какие-то нюансы узнавать, которых не знал. Смотреть, какие приборы новые выходят, разбирать нововведения.

Чтобы так научиться, у меня ушло 12 лет (но занимался я не только этим), в основном, интенсивных занятий в отпусках, в основном, это поверхностные или расширенные курсы по электротехнике, теоретической механике, электронной цифровой логике, архитектуре компьютеров, ассемблеру, бейсику, паскалю, си, си++, си#, python, устройство контроллеров AVR. Программу обучения составлял себе сам. Каждый курс позволял узнавать мироздание с новой стороны. Многие из курсов были на английском языке - на русском таких даже не найдешь.

раскрыть ветку (7)
0
Автор поста оценил этот комментарий

У тебя это хоби или работа?

раскрыть ветку (3)
0
DELETED
Автор поста оценил этот комментарий

Хобби скорее. В плане работы здесь некуда это применить - заводы и производства все практически в Китае, а туда я пока ещё не поехал. С нашими сотрудничал - но у нас тут домофоны собираются (Элтис), инверторы сварочные, запчасти опять же все Китай, какие-то системы безопасности и навигации наши есть. Платы по-моему на Резоните изготавливаются к ним. Короче голяк.

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Открывай своютфирму по проектированию, с такими знаниями и опытом может что нибудь получиться, может стоит попробовать для начала изготавливать на заказ каккую нибудь специфичную мелкосерийную электронику

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий

Я, в основном, изготавливал единичные экземпляры - проводку для станков, какие-то замещающие модули и т.д, но эта игра не стоит свеч - на разработку уходят месяцы, а работает лишь в одном приборе. Если прибор стоит 500 000 руб - то ещё хотя бы оправдано - за ремонт обычно берётся до 1/3 стоимости, если растянуть на пару месяцев - получается неплохая зп. Но у нас тут немного такого. Мысли делать электронику были - но надо массово заказывать зч в Китае, по деньгам с транспортными расходами выходит дорого. Например, китайский готовый прибор - 2000 руб, аналог, собранный кустарно - 7000 руб (и качество местами проседает). Я думаю, что я дойду до того, чтобы сделать нормально, когда-нибудь. Тут есть просто некоторые жизненные обстоятельства, мешающие сейчас продуктивной работе. Посмотрим, кто из нас победит - я или обстоятельства. По итогу и результат будет.

0
Автор поста оценил этот комментарий

Рассуждаешь как идущий к реке

раскрыть ветку (2)
1
DELETED
Автор поста оценил этот комментарий

Друг, ты пойми, что у этого есть и обратная сторона медали - я лишился практически всех друзей, кроме пары человек.

Так получилось, что теперь мне не интересно с ними вместе бухать, ввязываться в неприятности, и разогнав всякое шобло, оказалось что по своей сути то я один и нахер никому не сдался.

У меня знакомый был, тоже радиолюбитель, так тот умер от рака лёгких в 29 лет, возможно от пайки, возможно просто так. Мне досталась его коллекция радиодеталей и ардуин (часть даже в постах была), которые он для себя заказывал. Теперь вот я его дело продолжаю.

Честно говоря, когда ты через свой мозг прогоняешь такой набор информации (если быть точным - более 50 различных дисциплин, в том числе, математический анализ, основы психологии, ТАУ, ТОЭ, и т.д.), у тебя в принципе мозг меняется - вроде бы ты и ешь, спишь (хотя у меня это по настроению), и остальное делаешь, как и все остальные люди, но ты как бы где-то не здесь становишься. Ты начинаешь сквозь вещи смотреть, представляя их как набор каких-то закономерностей.

Настроение делается, зачастую, плохое, т.к. обычные для людей вещи такие как сытно поесть, набухаться пива, получить где-то в баре по морде, они тебя уже перестают радовать. Тебе становится нечего делать рядом с простыми людьми. Для тебя остаются только твои числа, ну и прочее. Невозможно добиться какого-то маломальского успеха, и при этом остаться таким же дебилом. Равно как и дебилу невозможно получить успех с потолка. А если и возможно - например, выиграть в лотерею деньги, то они, как правило, их все пропивают - так как на большее ума не хватает.

По этому поводу я могу хоть книгу написать, это ничего не поменяет.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Умные не столько ищут одиночества, сколько избегают создаваемой дураками суеты. А.Шопенгауэр

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества