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-юмору

12
Автор поста оценил этот комментарий
Предпросмотр
YouTube3:10
раскрыть ветку (1)
4
DELETED
Автор поста оценил этот комментарий

Наконец-то!! Почти 500 плюсов и хоть кто-то вспомнил этот шедевр!

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

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

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

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

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

показать ответы
12
Автор поста оценил этот комментарий
Фраза "Почини мне утюг, ты же программист" теперь актуальна
раскрыть ветку (1)
2
DELETED
Автор поста оценил этот комментарий

Для того и затевалось

1
Автор поста оценил этот комментарий
При остывании из за этой же инерции без гистерезиса у вас и начнется звонковая работа тэна, особенно если данные с ацп не сглаживать
раскрыть ветку (1)
2
DELETED
Автор поста оценил этот комментарий

В данном случае мне проще уронить в пол частоту взятия значений АЦП (что и так сделано - там около 1 Гц), методом добавления задержки. А чтобы не было ложных срабатываний - прикрутить фильтрацию значений.

55
Автор поста оценил этот комментарий
Вы забыли добавить в утюг акселерометр, дабы при вертикальном положении он снижал температуру и при не дай бог горизонтальном и при этом неподвижном в течение какого то времени отключал его совсем.
раскрыть ветку (1)
2
DELETED
Автор поста оценил этот комментарий

Была такая мысль, но а вдруг утюгом гладят очень обильно, и надо подогреть его "на ходу" без установки на платформу. Обычно утюги работают именно так - иначе им бы просто ставили кнопку на размыкание в подставку, как в обогревателях.

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

Ну там всё же 32 РОН если не ошибаюсь - много чего можно сделать на asm, а на Си увы нужен стек. Я тоже обломался с этим на AT90S1200

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

32 регистра, но функции работают не на всех, в основном r16 - r32 используется, и то некоторые из них задействованы в разных случаях, надо в стек всё же сохранять значения.

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

А в нём разве не МК сидит? С программным то пидом?

Судя по индикации и кнопкам то да..
0
Автор поста оценил этот комментарий

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

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

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

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

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

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

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

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

показать ответы
0
Автор поста оценил этот комментарий
Ну да. С каких пор RISC архитектура стала упрощать программу то?
раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Я так полагаю, с момента изобретения, т.е. где-то с 1970-х годов

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

А гистерезис почему забыл?

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

Не забыл, он там не нужен, у утюга и так тепловая инерция большая, гистерезис вносится системой.

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

Я на ДВК-3 игрушку на ассемблере написал. Школьником еще. А потом в институте, году в 95, написал софт для химилаборатории. Тоже ДВК-3 и ассемблер. Причем с управлением через сом-порты.

Бля.... Как давно это было....

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

Я первую программу на бейсике написал, когда мне было 9 лет. Это была имитация мышки на винде - цикл, клавишами добавляешь x и y и типа курсором водишь (квадратиком). Правда, взаимодействие с "ярлыками" тогда не понял, как делать.

0
Автор поста оценил этот комментарий
Можно было акселерометр поставить, чтобы отслеживать использование утюгом. Если например не работаешь долго, то отключает нагрев. Как в паяльнике паяльник тс100)
раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

У меня был утюг фирменный philips с Wi-Fi модулем. Можно было подключаться удалённо и проверять, выключил ли ты утюг на смартфоне, если забыл - то выключить, не возвращаясь домой.

показать ответы
1
Автор поста оценил этот комментарий
Хрен с ним пид, гистерезис где?
а он самообразовался бы из просадки по питанию, если бы не USB
раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

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

Иллюстрация к комментарию
4
Автор поста оценил этот комментарий
Ну технически туда можно подкрутить какую нибудь esp и чтобы она управляла константой температуры и включения выключения
раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Была мысль сделать на такой базе умную баню: "Алиса! Поддай пару", и Алиса увеличивает константу температуры.

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

В котором трудится атмега с программным ПИДом

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

Теоретически на транзисторах можно построить аппаратный PID-регулятор. Но принцип его функционирования всё равно будет "программный" частично.

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

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

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

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

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

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

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

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

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

Поэтому такие устройства прослужат дольше

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

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

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

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

32 регистра, но функции работают не на все

ага, я так и не всёк правила, а прочитать было лень, ну типа - я же вот сейчас напишу и больше никогда... так на компилятор и ориентировался - ошибку выдаёт - перепрыгиваем в другой банк :)

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

Я программист юродивый - работает, да и х* с ним!

Иллюстрация к комментарию
показать ответы
0
DELETED
Автор поста оценил этот комментарий
Была идея собрать систему мониторинга для самогонного аппарата. Нейросеть в данном случае будет сама контролировать процесс брожения.
раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий

Отлично. Осталось только где-то взять аппарат. Но вообще говоря, т.к. у меня вторая специальность эколог, могу сказать что с брожением не всё так однозначно. В данном случае мы будем на вход нейросети подавать какие-то параметры (термометр, газоанализатор) и выведем статистические значения. Только опять же, создания там не происходит - нейросеть должна по входным данным выдать подобное им. Но входные данные у нас - датчики, как она может выдать нам информацию на них?

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

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

DOOM потянет?

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

Есть порты DOOM под AVR, условная мега8 может и потянет какую-нибудь кастрированную версию в низком разрешении. Тинька - не думаю.

1
Автор поста оценил этот комментарий
Извращенец! Я такой не один🙂🙂🙂
раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий

Конечно не один! Нас в палате 30 человек было!
Шучу.
Шучу, не шучу.

показать ответы
0
DELETED
Автор поста оценил этот комментарий
Вот вроде бред, а на железной дороге можно и не такое замутить, а после деньжат срубить. Главное - доказать, что это нужно:)
раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий

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

показать ответы
4
DELETED
Автор поста оценил этот комментарий

А как же pid-регулирование с самообучением?

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

Может нейросеть в утюг интегрировать? Была такая идея

показать ответы

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества