Пишем свой софт для посудомоечной машины ч. 1. Реверс-инжиниринг

Всем привет! Предупреждаю заранее, данный проект не является сколь-либо экономически выгодным. За время, затраченное на эту работу, можно было заработать на несколько таких новых посудомоек. Целью данного поста является демонстрация примера разработки ПО для небольшой автоматики в кустарных условиях (аналогичных производственным). Если из этой идеи получится что-то стоящее, то исходные коды проекта я потом выложу. Писать код буду в реальном времени по мере возможности. Конкретно в данном посте мы изучим устройство этой машины, подготовим платформу, и загрузим первую тестовую программу.

Итак, попала ко мне в руки вышедшая из строя посудомоечная машина. Было выяснено, что её агрегаты (соленоиды, насосы и т.д.) находятся в исправном состоянии. Вышел из строя сам контроллер, где находится программа для управления этими приборами. Что, скажу я вам, весьма серьёзная ситуация - ведь без этого контроллера большая и дорогостоящая машина подлежит отправке на помойку. В интернете я уже видел подобные проекты, но они были сделаны как-то халтурно, не уверен, что они вообще работали. Для написания подобного ПО в производственных условиях программисту уже должны быть даны технические параметры всех приборов и назначение выводов. Но у нас нет ни оригинального контроллера, ни исходников. Поэтому нет никаких шансов восстановить заводское ПО. В таком случае, будем писать своё. Но для начала необходимо изучить, что собой представляет машина - ведь у нас нет практически никаких данных, все провода для нас отличаются только цветом. Первым делом, выпаиваем старый, вышедший из строя контроллер:

Далее, мы видим на плате микросхему ULN2003 (моя называется иначе, но 2003 в названии сути не меняет). Подпаяем к прибору специальную платку (состоит из резисторов и блока переключателей):

Итак, из даташита мы знаем, что микросхема ULN2003 имеет семь входов и семь выходов с инвертированием сигнала. Сделано это для удобства подключения к реле - при подаче логической единицы 5В на вход микросхемы, выход подтягивается к земле и в катушках реле начинает течь ток. Мощный прибор, подключенный к реле, включается в работу.

Для определения этих самых приборов плату устанавливаем на машину, после чего щелкаем переключателями по очереди. Методом проб переключателей было выяснено, что каждый из 7 выходных пинов выполняет свою функцию:

1. Запуск центробежного насоса (ЦН) на большой скорости
2. Запуск ЦН на малой скорости (половинная загрузка?)
3. Открытие входного клапана (залив воды)

4. Открытие дозатора моющего средства
5. Включение соленоида, находящегося в баке с солью
6. Включение сливной помпы
7. Включение ТЭНа для нагрева воды.

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

Выявленные опытным путём выводы соответствуют указанным на схеме (выходы - внизу прямоугольника). Однако, также полно внесистемных обозначений. Например, что такое FM? ISS? Это всё пришлось выяснять опытным путём. В результате, спустя некоторое время, схема выглядела уже так:

Входы расположены следующим образом:

1. RE - вход терморезистора (на 9,7КОм), установленного в баке с водой. Он контролирует температуру воды, нагреваемой ТЭНом. Константа зависимости сопротивления от нагрева для него неизвестна (утеряна в заводской прошивке), её предстоит выяснять опытным путём в следующих постах. Пока опустим его. Вход аналоговый.
2. FM - Fluid Meter. Датчик воды. Представляет собой геркон с магнитом, который размыкается при заполнении бака. Вход цифровой.
3. IAQS - датчик (микрик) аквастопа. При его активации включается режим аварии и отключаются все приборы. Вход цифровой. Его мы тоже пока опустим.
4. +5V и ISS. Питание датчика соли. Он выполнен на компраторе LM339, вход цифровой.
5. ISB - неизвестный переключатель, находящийся в дозаторе моющего средства. Его расположение выяснять не стал, для тестового запуска он пока не нужен. Вход также цифровой и опустим его.
6. DOOR - датчик двери (замок). Работает аналогично IAQS.

P1 - пресловутый прессостат, но он в данной машине к модулю не подключается, а работает независимо.

Итого, имеем 4 на данный момент важных входа:
1. RE - его реализуем позже через полумостовую схему измерения
2. FM - проверяется через подтяжку линии к 5В через резистор 10K на плюс питания и 2K к самой линии.
3. ISS - аналогичным образом
4. DOOR/IAQS (их пока можно объединить) - аналогичным образом.

От себя также добавлю 2 кнопки (питание и служебная кнопка), и 6 выводов для работы дисплея 1602 (включен в полубайтном параллельном режиме).

Таким образом, мы определили, что к выбираемому контроллеру для данной машинки предъявляются следующие требования:

1. Наличие 14 и более I/O портов для всех агрегатов (выходной регистр, входы, также для подключения дисплея 1602, которого не было в оригинальной схеме)

2. Наличие на борту таймеров (непосредственно для работы отсчёта времени)

3. Наличие АЦП (для обработки показаний термодатчика)

4. Возможность подключения кварцевого генератора для обеспечения стабильности схемы

Собственно, ничего серьёзного. Подойдёт контроллер ATMEGA8 (но т.к. он уже сильно устарел, заменим на любимый китайцами и ардуинщиками ATMEGA328, они полностью совместимы). Скажу сразу, Arduino в данном проекте мы не используем, пишем на чистом AVR.

Когда контроллер выбран, настало время подготовить плату и приборы для отладки. Начнём с того, что подготовим тестовый стенд для ИМС. Запаяем её и некоторые DuPont пины.

Было / стало:

Далее, подготовим аппаратные имитаторы агрегатов машинки. Кто-то скажет, что отладить можно было и в электронном виде, на что я скажу да, можно. Но часто бывает, что в симуляторе не выявляются некоторые косяки, такие как дребезг кнопок, наводки и т.д., т.к. условия там слишком приближены к идеальным. Плюс ко всему, прибор не очень громоздкий, так что можно изготовить "набор для отладки". Состоит он из платы с микросхемой ULN2003, имитирующей работу нашего модуля и агрегатов (но вместо них установлены светодиоды). Второй модуль состоит из 2 кнопок и 3 переключателей, имитирующих наши важные датчики, также, туда будет установлен терморезистор

Для оптимизации схемы некоторые доработки выполнялись "на соплях" прямо на дисплейном модуле:

Вот так вся эта отладочная установка смотрится после сборки. Выходной регистр назначен на порт D (используется 7 выводов из 8), дисплей - на порт B (6 выводов), входной регистр - на порт C (неполный, 6 выводов):

Подписаны светодиоды, имитирующие приборы и все кнопки с переключателями. В таком виде схему можно отлаживать. Предусмотрено внутрисхемное программирование, сразу накинут кварц на 6 МГц (какой нашел, потом, возможно, поменяю). Для испытания на машинке достаточно будет отпаять с модуля блок переключателей, и установить туда также DuPont штыри, к которым будем подключать макетную плату легко и просто без изменений в схеме. В дальнейшем по завершению испытаний отладочные платы убираются.

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

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

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

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

1. Инициализировать аппаратный таймер, отмеряющий время работы конкретного агрегата
2. Инициализировать дисплей для вывода тестовой информации о состоянии машины
3. Написать тестовую программу, которая позволит залить воду в бак машинки, прогнать её насосом без нагревания в течение 5 минут, после чего слить воду.

В дальнейшем:
- Инициализировать АЦП для корректной работы термодатчика и ТЭНа (какое мытьё посуды без нагрева воды)
- Реализовать функцию паузы / аварийного слива
- Реализовать открытие отсека моющего средства в программе
- Индикация отсутствия соли (вывести с датчика на дисплей)
- Реализовать аквастоп/остановку по замку

Более сложные заморочки, такие как выбор программы под разную посуду, подгонка времени и напора воды под конкретное моющее средство пока реализовывать не планирую, ибо эти фичи, как правило, нужны уже конечному потребителю (да и то не всегда). Для минимальной же работоспособности прибора сойдут и ранее перечисленные функции. Подключение модуля и первые натурные испытания 7-минутной тестовой программы также в следующем посте. Пока что наше изделие ещё не переросло уровень "Ардуина щелкает, светодиодами мигает", но это всё в скором времени поправимо.

А пока всё, с вами был Kekovsky, спасибо всем кто дочитал (если кому-то это интересно). Своё мнение по поводу проекта пишите в комментариях.

Комментарии еще никто не писал. Будьте первым.

Чтобы добавить комментарий войдите в систему.

В РФ зарегистрирован пеpвый в мире препарат для лечения болезни Бехтерева

Для тех,кто считает,что животных надо бросить под обстрелами и ухать,Валентин,будет номером 4

Валя напоминал ледяную статую,когда мы его нашли и спасли,он очень любит тепло и мягкую постель,это ему нет места в моей переноске?

Для тех,кто считает,что животных надо бросить под обстрелами и уехать,Мышка ,из поста Выкинутые подарки,будет номером 3

Для тех кто считает,что животных надо бросить под обстрелами и уехать,Тито очень любит спать в ванной, его номер 2

История Тито рассказана ранее,ему по вашему место на улице,а не в моей переноске?

Можно мне подставку для ноутбука?

Пост был взят с Reddit и переведен. Приятного чтения!

Я работаю в техподдержке университета, и в прошлом году меня перевели в новый кампус на новую должность. Раньше мне приходилось сидеть с кем-нибудь за одним столом, а теперь я все время находился на одном объекте, и поэтому мне полагался собственный стол и свое рабочее место. Желая навести уют, я попросил у начальника подставку для ноутбука — для удобства. Он ответил: «Ага, напиши специалисту по охране труда, он все закажет».

Я так и сделал, и его ответ неприятно меня удивил: «У вас есть рекомендация врача использовать такую подставку? Я не приму заявку без рекомендации. К тому же в каждом кампусе и так предусмотрены эргономичные стулья и столы с регулировкой высоты, этого должно быть достаточно. Вы молоды, зачем вам что-то еще? Вечно айтишникам всего мало».

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

К моему удивлению, через несколько дней пришел краткий ответ: «Попрошу хозяйственный отдел выделить бюджет на новые столы».

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

И вот я сижу за новеньким дорогущим столом, все еще без подставки для ноутбука, и думаю, какого щедрого жеста ждать, если я вдруг осмелюсь повторить просьбу.

В Российской Федерации зарегистрирован первый в мире препарат для лечения болезни Бехтерева

Минздравом РФ был зарегистрирован первый в мире препарат для лечения болезни Бехтерева с высоким профилем эффективности. Эту информацию сообщила пресс-служба министерства.

Препарат был разработан коллективом специалистов из Российского национального исследовательского медицинского университета имени Н. И. Пирогова, Института биоорганической химии имени академиков М. М. Шемякина и Ю. А. Овчинникова РАН, совместно с отечественным фармпредприятием BIOCAD.

«Разработанный препарат позволяет уничтожать патологические Т-лимфоциты, атакующие собственные клетки организма. Начальные клинические исследования подтвердили, что развитие заболевания останавливается, без снижения активности иммунной системы организма в целом», — сказано в сообщении Минздрава.

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

Анкилозирующий спондилоартрит, также известный как болезнь Бехтерева, является хроническим системным заболеванием, при котором антитела ошибочно атакуют хрящевую ткань и суставы организма. Это может привести к боли и скованности в позвоночнике, что в конечном итоге вызывает ограничения в подвижности. Болезнь чаще всего проявляется у пациентов до 40 лет.

Стив Хэнкс - работающий в технике акварели, называл свой стиль "эмоциональным реализмом"

Зарядка для машины дома в Германии. Бюрократический квест

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

И вот дошли у меня наконец руки эту самую зарядку установить. Причем купил я ее еще полгода назал (в черную пятницу по скидке), но с установкой все никак не складывалось.

Ожидание: я нахожу электрика, он берет 100500 денег и через 3 часа я заряжаю машину
Реальность: ЛОЛ, разбежался!

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

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

Без разрешения владельца дома (а если дом многоквартирный - то и ТСЖ) энергетическая компания никакую заявку не примет. Владелец (как и ТСЖ) как бы тоже мне отказать не могут, но опять же могут выкатить какие-то требования.

При подаче заявки помимо разрешения нужна доверенность, потому что "владелец" подключения = владелец дома, а я не владелец, стало быть должен показать, что владалец разрешает мне подать заявку. При этом пользоваться подключением будет "пользователь", то есть я, поэтому владелец должен получить от меня доверенность, что я разрешаю ему доверить мне подать заявку (обожаю кольцевые зависимости)

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

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

Что характерно, закон об отключаемых зарядках уже работает, но как именно этим хозяйством планируется управлять - будет известно не раньше 2025 года :) Ставим то, не знаю что! (главное за свой счет)

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

Надо было брать дизель.

Допинг для Джека

Как выиграть 2 часа для домашних дел

Мне за эту разработку нихрена не дадут. Но когда некоторым людям говорю-они слышат такое впервые.
Короче. Для тех кто работает в нормальном режиме с 8-9 до 17-18(то есть для 8 часовых, остальным уже ничего не поможет). Всего на всего нужно за час до окончания работы сходить посрать и поесть(в любом порядке). Домой приходишь сытый и посратый. Как в итоге сразу готов приступить к: тренировка, ремонту, детям и т.п.
Пользуйтесь! Всратые книги-бестселлеры уже можете не читать, такого дельного совета не увидите.

Fastler - информационно-развлекательное сообщество которое объединяет людей с различными интересами. Пользователи выкладывают свои посты и лучшие из них попадают в горячее.

Контакты

© Fastler v 2.0.2, 2024


Мы в социальных сетях: