Плата посудомийки Bosch SWS4118: що на ній є і як запустити нею насос (частина 1)
Розбираємо плату керування двигунами з посудомийки Bosch і з'ясовуємо, що з неї знадобиться. Мета — запустити насос посудомийки від її ж рідної плати й зробити з цього проточний водонагрівач. Це перша частина:
- що корисного лишилося від посудомийки;
- що стоїть на платі
702168823.01GA/SWS4118 Rev.4: мікроконтролер, інвертор, блок живлення, мережевий фільтр, реле, роз'єми — з фото кожної ділянки; - що з цього потрібно, щоб крутити насос;
- крок 1: копія EEPROM 24C08WP програматором CH341B — куди під'єднати щупи, схема, якою програмою читати;
- що далі: як ми прочитали прошивку STM32 — у другій частині, що в ній і яка з неї користь — у третій.
Усі частини статті:
- Частина 1: плата, що на ній є, і копія EEPROM (ви тут)
- Частина 2: копія прошивки STM32 через ST-Link
- Частина 3: що вміє прошивка і яка з неї користь
чернетка — обговорюємо й дописуємо
⚠ Ця плата працює просто від мережі 230 В без розв'язки. Великий конденсатор на ній заряджається до ~325 В постійної напруги й тримає заряд після того, як вилку витягнули. Дроти двигуна теж під мережевою напругою. Поки ми досліджуємо плату, у мережу вона не вмикається: живимо лише 3,3 В — від окремого джерела або від програматора. Подробиці — в кінці статті.
Навіщо це все
Від старої посудомийки лишився циркуляційний насос із вбудованим ТЕНом — по суті готовий проточний нагрівач: насос жене воду, а ТЕН навколо камери насоса її гріє. Двигун у насосі трифазний, з магнітним ротором, і від розетки напряму не крутиться: йому потрібен інвертор. Такий інвертор уже є на рідній платі посудомийки. Тому спершу з'ясовуємо, що саме стоїть на платі і як змусити її крутити насос без решти посудомийки.
Що корисного лишилося від посудомийки
| Деталь | Що це | Чи знадобиться |
|---|---|---|
| циркуляційний насос із ТЕНом | трифазний двигун з магнітним ротором (статор на 9 котушок) і ТЕН навколо камери | так — основа нагрівача: насос і нагрів в одному |
| ТЕН (у корпусі насоса) | 20,5 Ом у холодному стані → ≈ 11 А і ≈ 2,6 кВт від 230 В | так; вмикати лише тоді, коли насос качає воду, інакше перегріється |
| датчик температури на ТЕНі (3 дроти) | два елементи по 10 кОм послідовно, середній дріт — спільний; схоже на два NTC | так — контроль температури й незалежний захист від перегріву |
| зливний насос CoPECi BLP3 | теж трифазний з магнітним ротором, 54 В / 55 Гц | можливо — для перекачування; живиться від того самого інвертора |
| плата керування двигунами (ця стаття) | мікроконтролер STM32, інвертор FSB50550AB, блок живлення, реле на 16 А | так — готовий інвертор для насоса й реле для ТЕНа |
| плата панелі керування з MC9S08AC32 | 8-бітний мікроконтролер NXP, кнопки й індикація | навряд чи |
Плата: загальний вигляд
702168823.01GA, SWS4118 Rev.4. Номери — ділянки з таблиці нижче. Наклейку з кодом і номером плати на фото розмито.| № | Що | Розділ |
|---|---|---|
| 1 | мікроконтролер STM32 | Мозок плати |
| 2 | технологічні пади X20 біля краю | Мозок плати |
| 3 | інвертор FSB50550AB | Інвертор |
| 4 | конденсатор шини ~325 В | Живлення |
| 5 | блок живлення TNY274GN з трансформатором | Живлення |
| 6 | реле JW2SN (перемикає двигуни) | Реле |
| 7 | два реле ALZ51B12T на 16 А | Реле |
| 8 | мережевий фільтр | Мережевий вхід |
| 9 | запобіжник | Мережевий вхід |
| 10 | роз'єм мережі | Мережевий вхід |
| 11 | роз'єми до двигунів, клапанів і датчиків | Роз'єми |
Позначки на самій платі: 702168823.01GA — номер друкованої плати, SWS4118 Rev.4 — позначення плати та її ревізія, 888172 — схоже, номер партії. Більшість мікросхем мають код дати 1339 — схоже, 39-й тиждень 2013 року.
Мозок плати: STM32, EEPROM і пади програмування
| На фото | Що | Маркування | Для чого на платі |
|---|---|---|---|
| A | мікроконтролер | STM32F301 VCT6, LQFP100 | керує інвертором (шість сигналів ШІМ), реле, читає датчики; тут живе прошивка |
| B | EEPROM | 24C08WP (ST) | пам'ять на 8 кбіт (1 КБ) по I²C: налаштування, калібрування, лічильники |
| C | SEN013DG | Power Integrations | SENZero: відключає резистори, що міряють мережеву напругу, коли плата в черговому режимі |
| D | пади X20 | шість пад біля краю | технологічний роз'єм |
| E | прямокутні пади (2 × 3) | без маркування | ще одна група технологічних пад |
- SWD виведено на пади X20 (D): пад 1 — SWCLK, пад 2 — SWDIO, пад 3 — NRST (через 220 Ом), пад 4 — вивід 90 (PB4), пад 5 — GND, пад 6 — 3,3 В. Подробиці — у другій частині.
- Маркування не збігається з кристалом. На корпусі —
STM32F301 VCT6, а через SWD кристал відповідає як STM32F302/F303 на 256 КБ флеш-пам'яті (ідентифікатор0x422). Схоже, мікросхему маркували на замовлення виробника плати. - Риска оранжевою фарбою на корпусі — схоже, заводська позначка.
- Захисту від читання немає: прошивку прочитано через SWD двічі, копії однакові (друга частина). Що в ній — у третій частині.
Інвертор FSB50550AB
| На фото | Що | Маркування | Для чого на платі |
|---|---|---|---|
| A | інвертор | FSB50550AB | три фази для двигуна насоса з постійної напруги ~325 В |
| B | резистори | R820 (0,82 Ом) | схоже, вимірюють струм ключів для захисту від перевантаження |
| C | реле | Panasonic JW2SN-B-DC12V | найімовірніше, перемикає фази між циркуляційним і зливним насосами |
| D | компоненти в корпусах SOT-223 | — | схоже, малі симістори для клапанів і дозатора; перевіримо за розводкою |
| E | роз'єми | X2, X3, X4 | до клапанів, датчиків і двигунів |
FSB50550AB (Fairchild, тепер onsemi) — трифазний інвертор в одному корпусі: шість ключів MOSFET, драйвери ключів і діоди для живлення верхніх ключів. Саме він формує з постійної напруги три фази для двигуна насоса.
| Параметр | Значення (з паспорта) |
|---|---|
| напруга шини, робоча | 300 В типово, до 400 В |
| напруга шини, абсолютний максимум | 500 В |
| струм ключа тривалий | 2 А при 25 °C корпусу, 1,5 А при 80 °C |
| опір відкритого ключа | ≈ 1 Ом |
| живлення драйверів | 15 В |
| логіка входів | 3,3 або 5 В |
- 300 В шини — це випрямлена мережа 230 В (√2 × 230 ≈ 325 В). Тобто плата живить двигуни прямо від мережі, без трансформатора.
- Сигнали з резисторів B йдуть на мікроконтролер, і він вимикає інвертор при перевантаженні.
- Один інвертор на два двигуни. Ми прозвонили: в обох насосів одна фаза спільна, а дві інші реле перемикає між насосами — найімовірніше, саме C. Посудомийка або миє, або зливає — разом вони не працюють.
Живлення плати: TNY274GN
| На фото | Що | Маркування | Для чого на платі |
|---|---|---|---|
| A | мікросхема блока живлення | TNY274GN | Power Integrations TinySwitch-III — серце маленького імпульсного блока живлення |
| B | трансформатор | TDK 8220 X 363 | розв'язує й знижує напругу для самої плати |
| C | великий конденсатор HB 105°C | — | конденсатор шини ~325 В для інвертора; тримає заряд після вимкнення |
| D | малий конденсатор | — | схоже, фільтр однієї з низьких напруг |
Які саме напруги дає блок живлення — виміряємо. Котушки всіх реле розраховані на 12 В, драйвери інвертора — на 15 В, мікроконтролер — на 3,3 В.
Мережевий вхід: фільтр, запобіжник, розряд конденсаторів
| На фото | Що | Маркування | Для чого |
|---|---|---|---|
| A | синфазний дросель | мідна обмотка на осерді | не пускає перешкоди інвертора в мережу |
| B | конденсатор X2 | 0,22 мкФ M 305 V~ (синій) | між фазою й нулем: гасить перешкоди від інвертора |
| C | конденсатори Y2 | 22 нФ M 300 V~ (сині) | між мережею й землею: те саме для синфазних перешкод |
| D | CAP005DG | Power Integrations, CAPZero | розряджає конденсатори X2, коли вилку витягли, щоб на її штирях не лишилась напруга |
| E | запобіжник | BUSS SR-5H T4A 250V | сповільнений, 4 А — захищає саму плату (ТЕН, найімовірніше, живиться повз нього) |
| F | роз'єм мережі | — | сюди приходять фаза й нуль |
| На фото | Що | Маркування | Для чого |
|---|---|---|---|
| A | термістор | NTC 22 1340 | схоже, обмежує кидок струму, коли конденсатор шини заряджається при ввімкненні |
| B | синфазний дросель | — | той самий, що й A на попередньому фото |
| C | реле | Panasonic ALZ51B12T | одне з двох реле на 16 А (розділ нижче) |
Реле
| На фото | Що | Маркування / номінал | Що, найімовірніше, перемикає або робить |
|---|---|---|---|
| A, B | два реле | Panasonic ALZ51B12T, 16 А 250 В, 12 В | ТЕН (≈ 11 А): два реле — щоб розривати обидва дроти, фазу й нуль |
| C | роз'єм мережі | — | той самий, що й F на фото мережевого входу |
| D | роз'єм | MTOP, PIN 1 | найімовірніше, до ТЕНа й насоса; перевіримо прозвонкою |
| E | запобіжник | BUSS SR-5H T4A 250V | захищає плату |
| F | CAP005DG | Power Integrations | розряджає конденсатори X2 |
Третє реле — Panasonic JW2SN-B-DC12V (5 А 250 В, котушка 12 В) — стоїть біля інвертора (C на фото інвертора) і, найімовірніше, саме воно перемикає фази між насосами. Те, що фази перемикаються, ми перевірили прозвонкою.
Якщо A і B справді реле ТЕНа, для водонагрівача вони вже на місці й розраховані із запасом: 16 А проти 11 А.
Роз'єми
Біля роз'ємів на платі видно позначки X2, X3, X4, X5, X7_1, X12, X17, X20, MTOP (з позначкою PIN 1). Що куди йде, з'ясуємо прозвонкою джгута: насоси, ТЕН, датчик температури, клапани, зв'язок із панеллю керування.
[ВПИСАТИ: таблиця роз'ємів — номер, кількість контактів, куди йде, колір дротів]
Що з цього потрібно, щоб крутити насос
| Ділянка плати | Що робить | Чи потрібна для насоса |
|---|---|---|
| мережевий вхід і фільтр | захист і менше перешкод | так |
| конденсатор шини | ~325 В для інвертора | так |
| блок живлення TNY274GN | 12 / 15 / 3,3 В для реле, драйверів і STM32 | так |
| інвертор FSB50550AB | три фази для двигуна | так |
| мікроконтролер і прошивка | керує інвертором, рахує положення ротора | так — без неї інвертор не працює |
| реле ALZ51B12T | ТЕН (найімовірніше) | так — для нагрівача |
| реле JW2SN | вибір насоса | так — щоб увімкнути саме циркуляційний |
Головна складність — команда «крути насос». У посудомийці її дає плата панелі керування по лінії зв'язку. Панель у нас є, але як саме вони обмінюються, ми ще не знаємо. Варіанти:
| Варіант | Що треба | Плюси й мінуси |
|---|---|---|
| рідна прошивка + рідна команда | зрозуміти, що надсилає панель керування, і самим надсилати те саме | нічого не стираємо; але протокол закритий: його треба записати аналізатором між панеллю й платою або відновити з прошивки |
| своя прошивка на тому самому STM32 | SWD-програматор, бібліотека ST для керування двигунами | залізо вже підходить ідеально; але рідна прошивка стирається, тож спершу — її копія |
| окремий драйвер двигуна | готовий контролер трифазного двигуна без датчиків на безпечній низькій напрузі | найпростіше перевірити насос; але плата посудомийки тоді не потрібна |
Тому перш ніж щось змінювати, робимо копії всього, що зберігає плата.
Крок 1: копія EEPROM 24C08WP
Найпростіший і найбезпечніший перший крок: прочитати маленьку пам'ять налаштувань, нічого не випаюючи й нічого не записуючи. 24C08WP — пам'ять на 8 кбіт, тобто 1024 байти, що працює по шині I²C. Усередині — чотири блоки по 256 байт; на шині вони відгукуються адресами 0x50…0x53 (так буде, якщо вивід 3, A2, на платі з'єднано з GND — перевіримо прозвонкою), але програма для читання сама це враховує.
Скільки щупів і куди
| Вивід | Назва | Під'єднати до програматора | Навіщо |
|---|---|---|---|
| 8 | VCC | так, 3,3 В | живлення мікросхеми |
| 4 | GND | так, GND | спільний провід |
| 5 | SDA | так, SDA | дані |
| 6 | SCL | так, SCL | такт |
| 7 | WP | ні | захист від запису; читанню не заважає |
| 1, 2, 3 | A0, A1, A2 | ні | вибір адреси; у 24C08 діє лише A2, і плата вже під'єднала його як треба |
Щупів — чотири. Найзручніше — кліпса SOIC-8: її затискають на мікросхему, і вона торкається всіх восьми виводів одразу, а перехідник кліпси вставляють у гніздо «24xx» програматора, червоним дротом (вивід 1) до позначки «1» на гнізді. Без кліпси — чотири тонкі дроти, підпаяні до виводів 8, 4, 5 і 6 (або до сусідніх площадок, з якими вони з'єднані).
П'ятий дріт — лише якщо знадобиться. Програматор живить вивід 8, а це водночас шина 3,3 В усієї плати, тож мікроконтролер STM32 теж запуститься і може сам звертатися до EEPROM під час читання. Якщо два читання поспіль дадуть різні файли, мікроконтролер утримують у стані скидання: його вивід NRST з'єднують із GND. Де на платі NRST, визначимо прозвонкою.
Перевірити орієнтацію мультиметром, поки нічого не під'єднано:
- між виводами 8 і 4 немає короткого замикання;
- від виводу 5 до виводу 8 і від виводу 6 до виводу 8 — по ≈ 4,7 кОм: це резистори «472» поруч із мікросхемою, що підтягують SDA і SCL до живлення. Збіглося — значить, вивід 1 визначено правильно.
Схема підключення
⚠ Плату весь час не вмикати в мережу. Вона не має розв'язки від мережі, а через USB-програматор її спільний провід з'єднано з комп'ютером. Увімкнути таку плату в розетку з під'єднаним програматором — це подати мережеву напругу на комп'ютер.
⚠ Програматор — на 3,3 В. На більшості плат CH341B є перемикач 3,3 / 5 В — поставте 3,3 В і перед під'єднанням виміряйте напругу на контакті VCC гнізда. Старі чорні плати CH341A без перемикача подають на лінії даних 5 В — для плати з мікроконтролером на 3,3 В це ризик.
Чи вистачить програматора, щоб живити плату. Стабілізатор 3,3 В на програматорі зазвичай невеликий, а від нього живиться вся шина 3,3 В плати разом зі STM32. Якщо після під'єднання напруга на виводі 8 впала нижче ≈ 3 В — живіть шину 3,3 В від окремого блока живлення (спільний GND з програматором), а VCC програматора не під'єднуйте.
Якою програмою читати
| Система | Програма | Що вибрати |
|---|---|---|
| Windows | CH341A Programmer (програма, яку продавці кладуть до програматора) | тип «24 EEPROM», мікросхема 24C08, «Read», потім «Save» |
| Windows | AsProgrammer (з відкритим кодом) | I²C, 24C08, «Read», зберегти файл |
| Linux | IMSProg (графічна) або ch341eeprom (командний рядок) | 24C08 |
На Windows спершу ставлять драйвер CH341PAR від виробника мікросхеми WCH — сторінка завантаження; як ставили ми — нижче. У Linux — з командного рядка:
ch341eeprom -v -s 24c08 -r eeprom_1.bin
ch341eeprom -v -s 24c08 -r eeprom_2.bin
cmp eeprom_1.bin eeprom_2.bin && echo "копії однакові"
Ключі командного рядка в різних збірках ch341eeprom можуть відрізнятися — звірте з ch341eeprom -h.
На Windows дві копії порівнює fc /b eeprom_1.bin eeprom_2.bin — має відповісти, що відмінностей немає. Файл має бути рівно 1024 байти.
- Лише читання. Кнопок «Erase», «Write», «Auto» не натискати: стерта EEPROM — це стерті налаштування плати.
- Дві однакові копії — тоді читання надійне. Різні — перевірити контакт кліпси й під'єднати п'ятий дріт (NRST на GND).
flashromтут не допоможе: з CH341 він працює лише по SPI, а 24C08 — I²C.
Як читали ми
Ми читали під Windows власним коротким скриптом на Python через бібліотеку драйвера WCH (CH341DLLA64.DLL, ставиться разом із драйвером). Скрипт тільки читає — функцій запису в ньому немає взагалі, — робить це двічі на низькій швидкості шини, 20 кГц, і порівнює копії.
- Драйвер: CH341PAR на сайті WCH — файл
CH341PAR.EXE. Перед запуском перевірте цифровий підпис (властивості файлу → «Цифрові підписи»: Nanjing Qinheng Microelectronics). Встановлення без діалогів, від адміністратора:CH341PAR.EXE /S. - Після встановлення в «Диспетчері пристроїв» програматор має з'явитися як «USB-EPP/I2C… CH341A» без знака помилки. Якщо він показується як «USB-SERIAL», перемичка на програматорі стоїть у режимі UART — переставте її.
- Скрипт: read_eeprom_ch341.py · 4,2 КБ — потрібен 64-бітний Python 3. Запуск:
python -I read_eeprom_ch341.py
Він кладе дві копії в теку dumps поруч зі скриптом (іншу теку можна передати аргументом: python -I read_eeprom_ch341.py D:\мої_дампи) і пише, чи вони однакові.
Що в дампі
Прочитано 1024 байти, дві копії поспіль однакові. Файл: eeprom_24c08_sws4118.bin · 1,0 КБ. Номерів плати в ньому немає: ні номера з наклейки, ні номера партії, ні номера друкованої плати — ми шукали їх у десятковому, двійково-десятковому й двійковому записі.
| Блок (адреси) | Байтів FF / 00 | Що всередині |
|---|---|---|
| 0 (0x000–0x0FF) | 15 / 210 | таблиця з 15 однакових за будовою записів (нижче) |
| 1 (0x100–0x1FF) | 15 / 113 | найбільше даних: схоже на налаштування й калібрування |
| 2 (0x200–0x2FF) | 133 / 91 | схоже, ще налаштування, менша ділянка |
| 3 (0x300–0x3FF) | 256 / 0 | порожній — усе 0xFF |
Блок 0 — таблиця записів по 16 байт. Кожен запис: FF, один байт коду, 13 нулів і в кінці байт, що дорівнює сумі байтів 1–14, — схоже на контрольну суму (поки решта байтів нульова, вона збігається з кодом). Коди записів зростають: 1B, 1F, 2E, 30, 53, 54, 55, 56, 57, 58, 5A, 61, 62, 63, 64. За адресою 0x0F0 — одне число, 08. Що саме це за таблиця (журнал помилок, перелік увімкнених функцій чи щось інше), може стати зрозуміло, якщо вдасться прочитати прошивку і побачити, як вона цю таблицю використовує.
Блок 1 — схоже, налаштування. Що в ньому помітно:
- значення
1A 23повторюється тричі (0x126, 0x140, 0x181) — можливо, ідентифікатор версії даних; - на 0x1B8–0x1DF — 40 байт, майже всі
64(= 100), серед них два58(= 88) і один00: схоже на таблицю відсотків або коефіцієнтів; - на 0x1EE–0x1EF —
41 8Fодразу після рядуFF: схоже на контрольну суму блоку. Це не проста сума байтів блоку — алгоритм поки невідомий.
Блок 2. На 0x214–0x215, теж одразу після ряду FF, — BF 41 (і це схоже на контрольну суму), далі повторювані пари 0E 74 0E 74 і 2B 0E 2B 0E і ще кілька десятків байт значень; останнє — на 0x268. Від 0x269 до 0x290 — нулі, з 0x291 до кінця блоку — лише FF.
Тексту немає — ні назви моделі, ні версії: увесь вміст двійковий.
Що це означає для нас:
- у пам'яті є дані, і вони структуровані — найімовірніше, це налаштування плати, які треба зберегти; копія є;
- лічильників напрацювання (годин чи циклів) поки не видно: їх можна знайти, лише порівнявши копії до й після роботи плати, а вмикати її ми поки не будемо;
- точне значення полів шукаємо в прошивці мікроконтролера. Її вже прочитано (друга частина), і в ній знайшлася заводська копія блоку 1: 198 байт із 256 збігаються з EEPROM, 58 відрізняються — найімовірніше, це змінені налаштування чи калібрування (третя частина).
Далі
- Прошивка STM32 — як її прочитати, як перевірити захист і що ми прочитали: друга частина. Коротко: захисту немає, копію збережено.
- Що вміє прошивка і як нею скористатися, щоб запустити насос: третя частина.
- Роз'єми плати — таблицю допишемо тут, щойно прозвонимо.
Копію EEPROM викладено вище: номера плати в ній немає. Прошивку не викладаємо: це програма виробника.
Безпека
- Не вмикати плату в мережу, поки досліджуємо. Під час читання пам'яті — лише 3,3 В на шину 3,3 В плати, від програматора або окремого блока живлення.
- Конденсатор шини тримає ~325 В ще від кількох секунд до кількох хвилин після вимкнення. Перед тим як торкатися плати — виміряти напругу на ньому; за потреби розрядити через резистор 10 кОм 5 Вт, а не викруткою.
- Дроти двигуна під мережевою напругою: інвертор не має розв'язки, і кожен вихід імпульсами сягає ~325 В відносно землі. «54 В» на зливному насосі — лише номінальна напруга обмотки, яку інвертор формує ШІМом.
- Двигун із магнітами сам виробляє напругу, коли його вал крутиться (рукою чи потоком води), навіть якщо плата вимкнена.
- ТЕН — лише з потоком води, окремою лінією з автоматом 16 А й УЗО 30 мА, з заземленим корпусом насоса.
Усі частини статті:
- Частина 1: плата, що на ній є, і копія EEPROM (ви тут)
- Частина 2: копія прошивки STM32 через ST-Link
- Частина 3: що вміє прошивка і яка з неї користь
Журнал змін статті
- 2026-11-10 — перша чернетка: що корисного лишилося від посудомийки, опис плати за фото, що потрібно для насоса, план копій пам'яті.
- 2026-11-10 — статтю розділено на три частини: тут лишилися плата й EEPROM; STM32 — у другій частині, розбір прошивки — у третій. Уточнено модель кристала й пади SWD.