Часть 2. Когда 1С-ник идёт в хардкор: как я в 2018 году заменил мозг стиральной машины на Arduino и что из этого вышло. Аудит проекта с помощью ИИ сегодня

23.03.26

Интеграция - Робототехника и умный дом (Arduino, NFC, RFID)

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

Часть 2. Железо и реверс-инжиниринг

В предыдущей части:

Часть 1. День, когда из стиралки пошел синий дымок

Важное предупреждение!

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

Если вы не уверены в своих силах, не имеете опыта работы с высоким напряжением или не понимаете, как работает оборудование - не повторяйте это дома. Любая ошибка может стоить жизни.

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

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

Прежде чем начать

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

Задача стояла такая:

  • Научиться подавать на мотор нужную мощность (чтобы он крутил с разной скоростью, стирка отжим и т.д)

  • Научиться менять направление вращения (вперёд/назад)

  • Получать текущие обороты от таходатчика

  • Передавать эти данные в контроллер, чтобы он понимал, что происходит.

Без этого - никуда. Мотор - это сердце стиральной машины. Если я не смогу им управлять, весь проект теряет смысл.

Поэтому начал я с мотора. А всё остальное - панель, датчики, управление, клапаны - уже прикручивалось по мере готовности.

 

 

На фото пытаюсь понять и прозвонить, как управлять мотором

Первый контакт с мотором. На разъемах 220 Вольт. Перемычки, провода, мультиметр и желание понять, что к чему. Без этого этапа никакая схема не родилась бы.

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

Первые тесты: лампа вместо мотора

Прежде чем подключать настоящий мотор к Arduino, я собрал макетную плату для проверки принципа фазо-импульсного регулирования. В качестве подопытного - обычная настольная лампа накаливания. На лампе отлично видно, как меняется яркость при изменении задержки Dimmer. Включил - загорелась, выключил - погасла, убавил мощность - лампа стала светить меньше. Управление работало. Мотор можно было подключать.

 

 

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

Как управлять мотором переменного тока: теория

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

Чем AC отличается от DC

Для двигателя постоянного тока достаточно изменить амплитуду напряжения - ШИМом. Для переменного тока такой номер не пройдёт: синусоида 50 Гц, большие токи, резкие включения вызывают броски и помехи. Нужен другой подход.

Фазо-импульсное регулирование

В моем проекте я реализовал фазо-импульсный метод с контролем перехода через ноль.

 


 

Вот как это работает:

  1. INT0 (внешнее прерывание arduino) детектирует каждый переход сетевого напряжения 220V через ноль (50 раз в секунду)

  2. При каждом таком переходе запускается счётчик задержки.

  3. Открытие симмистора происходит не в момент перехода через ноль, а с задержкой, определяемой значением переменной в коде Dimmer (0–255).

  4. Каждый шаг счётчика - 40 микросекунд. Максимальная задержка - около 10 мс (длительность полупериода).

  5. Чем меньше задержка, тем большая часть полуволны поступает на мотор - тем выше мощность. Чем больше задержка - тем меньше мощность.

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

Обратная связь по таходатчику

Чтобы мотор крутил с заданной скоростью, а не просто "в полную силу", нужен замкнутый контур. Таходатчик (подключённый к прерыванию INT1 arduino) измеряет фактические обороты в реальном времени. Микроконтроллер сравнивает их с целевым значением и динамически корректирует Dimmer: если оборотов мало - уменьшает задержку, тем самым увеличивает мощность, а если много - увеличивает задержку.

Что это даёт

Мягкий старт Коммутация происходит вблизи нулевой точки, нет ударов
Минимум помех Отсутствие бросков тока при включении
Плавная регулировка 256 уровней мощности (0-255)
Стабильность скорости        Обратная связь по таходатчику

 

Готовый блок управления мотором

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

 

 

Финальная версия драйвера двигателя. Радиатор - потому что симисторы греются при активной работе. Опторазвязка - для безопасности, нет общей шины между 220 и 5 вольтами, в отличии от оригинальной платы

От блокирующего кода к прерываниям

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

Поэтому я переписал управление мотором на прерываниях. Теперь вся логика поддержания оборотов вынесена в обработчик прерывания, который вызывается 100 раз в секунду (таймер _timer_MAIN). В коде достаточно просто вызвать процедуру MotorStart() или MotorStop(), которая устанавливает значение переменной Dimmer и включает флаг MOTOR_ON. А дальше - всё автоматически:

  • Прерывание INT0 (детектор нуля) управляет открытием симистора с задержкой Dimmer

  • Прерывание INT1 (таходатчик) считает обороты

  • Главный таймер сравнивает текущие обороты с заданными и корректирует Dimmer

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

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

Силовая часть: распредкоробки и реле

Чтобы не устраивать пожар в ванной и отделить контроллер от высокого напряжения, я вынес всю коммутацию 220V в отдельные распредкоробки. Реле, предохранители, разъёмы со старой платы - всё аккуратно упаковано и подписано. Arduino только подаёт 5V сигнал, через опторазвязку внутри распредкоробки, всю коммуникацию на 220 Вольт работу делают реле.

 

 

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

 

Две распредкоробки - управление насосом, клапанами, двигателем и блокировка двери. Внутри - реле, предохранители, заводские разъёмы, выпаянные из родной платы. Никакого 220V рядом с Arduino, все гальванически развязано.

Да-да, и та самая синяя изолента, без нее точно ничего бы не получилось!

 

 

Рукописная схема, собственной разработки, которая потом легла в основу силовой части. 

Door Lock - получает сигнал от микроконтроллера и блокирует дверь
Door Look? - сигнал для микроконтроллера закрыта ли дверь?
PUMP - получает сигнал от микроконтроллера и включает насос

Схема работы с тэном, не сохранилась, но там все аналогично управлению насосом
 

Реверс-инжиниринг панели индикации

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

 

 

Рукописная расшифровка кнопок, панель подключалась двумя шлейфами 10 и 12 проводов
 

 

Та самая восьмёрка с сегментами A-B-C-D-E-F-G. По ней я потом написал массив segCode[24][7] - который позволял выводить цифры и некоторые буквы
 

 

Один из двух моих разъёмов (от COM порта) для подключения силовой нагрузки (для сопряжения платы arduino и силовых распредкоробок). Каждый контакт подписан, чтобы ничего не перепутать

 

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

Первое оживление

И вот, когда всё было распаяно и проверено, я загрузил тестовый скетч. На индикаторе загорелась первая цифра! 

 

 

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

 

 

Тест всех светодиодов и семисегментных индикаторов и синего биппера. Всё работает!

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

 

 

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

С мотором и панелью индикации разобрались. Теперь нужно было понять, сколько воды в баке. И тут меня ждал сюрприз…

Прессостат: как вода говорит частотой

Отдельная история - это датчик уровня воды. В этой машине он устроен хитро: сердечник внутри катушки двигается от уровня воды, меняя индуктивность и соответственно, частоту мультивибратора. Я нашёл схему в интернете и собрал ее.

 

 

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

 

 

Прессостат, для контроля уровня воды в баке
 

Самодельная шина

Чтобы соединить всё воедино, я паял шины из проводов, каждый провод в термоусадке, все вместе в синей изоленте.

 

 

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

Полевые испытания: ванная комната как лаборатория

Когда все модули были готовы, настал момент истины - запустить всё вместе. Ноутбук на крышке унитаза (потому что больше негде), макетные платы на стиралке, пена в баке, на экране - консоль отладки. В этот момент машина впервые стирала под управлением моего кода.

 

 

Технологический стенд. На крышке бачка, рукописная схема подключения, ноутбук на унитазе, на крышке машины - Arduino и макетная плата, распредкоробки, которые управляют двигателем, насосом, клапанами. В бак наливается вода, значит, пока все идет по плану. В консоли - строки логов. Этот момент я запомню навсегда.
 

Видео демонстрация работы прототипа

 

Финальные тесты перед сборкой

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

 

 

Машина стирает, панель показывает оставшееся время стирки, текущую программу стирки. Пока она лежит на крышке - финальные тесты перед установкой.

Справа те самые COM разъемы для подключения распредкоробок к Arduino, где один провод отмечен синей изолентой
 

 

Тот же момент, но вид с другой стороны панели
 

Вместо заключения

На этом этапе у меня было всё, чтобы машина заработала:

  • Полностью готовая и отлаженная панель индикации (на последнем фото она уже в сборе)

  • Силовой блок с заводскими разъёмами, сохранивший родную проводку машины

  • Драйвер двигателя, прошедший три итерации и наконец заработавший так, как было нужно

  • Схемы подключения всех датчиков и исполнительных устройств

  • Понимание, как работает пресостат и как с ним "подружиться"

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

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

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

И пожалуй, самое любопытное: я попросил современный ИИ проанализировать мой код, написанный в 2018 году. Интересно, что он скажет? Где я ошибался, а где, наоборот, сделал нестандартно, но эффективно? Но об этом - в финальной части.


Часть 1. День, когда из стиралки пошел синий дымок
Введение, драма с "синим дымком", вскрытие блока управления и идеологическое противостояние с производителем

Часть 2. Железо и реверс-инжиниринг
Как я вручную прозванивал плату индикации, реверс-инжиниринг и R&D, подключение Arduino к реле, датчиками, мотору, клапанами и т.д. еще больше фото и видео самого процесса разработки

Часть 3. Софт
Логика программы, обработка прерываний (аппаратные, таймеры), принцип регулирования мощности мотора, ссылка на GitHub.
Что в итоге получилось и оценка проекта на сегодняшний день с помощью ИИ

Другие статьи автора:

Маркировка в "древней" УТ 10.3 (10.3.6.8) и полноценный ТСД (Online) или как обойтись без перехода на УТ 11.5
Как подключить маркировку в древней УТ 10.3 без перехода на УТ 11.5 - все необходимые объекты, модули и доработки
Автоматическое обновление токенов Честного Знака в 1С
Автоматическое обновление токенов Честного Знака в 1С - готовое решение для УТ, КА, ERP, УНФ, Розницы и Бухгалтерии, которое избавляет от ручных обновлений и остановки процессов.
Дубликатор кодов маркировки (КИЗ) DataMatrix: Расширение 1С с проверкой в Честном Знаке (копирует ЛЮБЫЕ КИЗы!)
Автоматическое обновление токенов Честного Знака в 1С - готовое решение для УТ, КА, ERP, УНФ, Розницы и Бухгалтерии, которое избавляет от ручных обновлений и остановки процессов.
Маркировка остатков товаров на складе: Как сделать все быстро и без ошибок (мой практический опыт)
Маркировка остатков 10 000+ товаров без ошибок — готовое решение, которое исключает человеческий фактор, автоматизирует процесс и работает напрямую с 1С. Пошаговый опыт и готовое расширение внутри.
Маркировка остатков в распределенной рознице: Как промаркировать более 100 тыс. товаров в нескольких десятках магазинов без хаоса и ошибок
Маркировка остатков 100 000+ товаров в рознице без хаоса и ошибок — клиент-серверное решение, где сканируешь ШК в магазине и сразу получаешь КМ на принтере, независимо от кассового ПО. Практический опыт, регламент и готовый комплект кода внутри.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Робототехника и умный дом (Arduino, NFC, RFID) Бесплатно (free)

Стиральная машина сгорела. Через несколько дней я решил не чинить её, а полностью заменить её электронику на Arduino. Это оказалось не ремонтом, а полноценным инженерным проектом: с реверс-инжинирингом, работой с опасным напряжением и серией неудачных попыток. Первая часть - это начало пути: синий дым, первые ошибки и момент, когда стало ясно, что это уже не просто "починить технику".

19.03.2026    505    GarriSoft    3    

4

Робототехника и умный дом (Arduino, NFC, RFID) 1С 8.5 Отраслевые Абонемент ($m)

Увлекаюсь "умным домом", но нестабильная работа облачных сервисов производителей IOT (смарт) устройств, проблемы со связью с облачными серверами, сбои в работе интернета и как результат не корректная работа (или не работа) умных устройств, выход новой платформы 1С, открытие Tasmota для себя, и другое сподвигло вернуться к Умному дому на 1С.

1 стартмани

09.02.2026    646    osivv    3    

5

Робототехника и умный дом (Arduino, NFC, RFID) Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Управлять умными устройствами можно не только через Алису... Как насчет 1С?

1 стартмани

15.08.2024    2279    3    vasilievil    1    

4

Робототехника и умный дом (Arduino, NFC, RFID) Бесплатно (free)

Обладая минимальными навыками инженера, вполне можно сделать «умными» относительно недорогие устройства, и управлять всей логикой на 1С. Возможности огромны: управление светом, включением-выключением розеток, автополив, сигнализация и т.д. О самостоятельной реализации в 1С нестандартной логики управления устройствами пойдет речь в статье.

29.02.2024    4160    atland    6    

29

Робототехника и умный дом (Arduino, NFC, RFID)

Кто сказал, что умный дом на 1С сделать невозможно? На конференции Infostart Event 2021 Moscow Premiere Юрий Лазаренко из компании «Цифровой Кот» показал, какие уникальные прикольные вещи можно делать на базе IoT (интернета вещей), где в этом всем 1С, и как это все между собой интегрируется.

19.06.2023    7067    TitanLuchs    28    

20

Мобильная разработка Робототехника и умный дом (Arduino, NFC, RFID) 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Хотите попробовать свои силы в разработке собственного мобильного приложения на 1С для управления светом и электроприборами в своём доме? Добро пожаловать! Хочу поделиться собственными наработками в этой области. Это будет приложение, разработанное для мобильных устройств на базе Android. Основное предназначение: управление включением/выключением устройств, работающих от сети 220 V (свет, телевизор, чайник, вентилятор, микроволновка и т.д.). Управлять будем: из приложения, голосом, на заданный промежуток времени, интенсивностью света, расписанием работы.

1 стартмани

19.12.2022    5475    osivv    9    

25

Робототехника и умный дом (Arduino, NFC, RFID) Программист 1С:Предприятие 8 Россия Абонемент ($m)

Конфигурация для создании умных домов на базе 1С. Приложение сконструировано как сервер для устройств Arduino, к которому подключены датчики и реле (и другие исполнительные механизмы), так и для публикации мобильного приложения для управления умным домом.

1 стартмани

26.09.2022    6491    14    atland    0    

26
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DmitryKlimushkin 166 23.03.26 09:09 Сейчас в теме
Ужос!) ЗА потраченное время зарабатывается денег на три таких машинки. Плюсом будет радостное и волнительное событие по выбору новой вместе с хозяйкой, что положительно скажется на общем фоне семейных отношений. Вместо этого выбран тот же путь, который часто выбирал я (тоже увлечённый радиолюбитель!) сидеть и "чинить" под раздражённое ворчание супруги, лишённой и нужного гаджета, и внимания супруга))
2. GarriSoft 423 23.03.26 09:37 Сейчас в теме
(1)
Да время, потраченного много, но если честно мне было в удовольствие, это как хобби на которое ты не считаешь свое потраченное время. Да и впереди у меня было много зимних вечеров. Супругу действительно пришлось несколько раз отговаривать от покупки, новой стиралки, которую она порывалась заказать с доставкой "прямо сейчас" )))
В третье части я расскажу о причинах начала проекта и что в итоге стало с этой стиралкой позже.
Для отправки сообщения требуется регистрация/авторизация