User Tools

Site Tools


projects:maico_fan

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
projects:maico_fan [2025/11/29 13:12] – [Hardware modification] adminprojects:maico_fan [2025/12/01 07:39] (current) – [Bonus: the fan itself] admin
Line 1: Line 1:
 +~~META:
 +title=Maico ECA 100 ipro MCU replacement
 +description=reverse engineering and hacking Maico fan PCB
 +keywords=SEO, dokuwiki, reverse engineering, disassembly, Maico, fan, PCB, MCU, ESP, ESP8266, LDO, humidity, sensor, webinterface, WiFi, repair, hack, hacking, bathroom
 +~~
 +
 +
 ⚠️ PAGE UNDER CONSTRUCTION!⚠️⚠  ⚠️ PAGE UNDER CONSTRUCTION!⚠️⚠ 
  
Line 20: Line 27:
  
 ===== Disclaimer ===== ===== Disclaimer =====
- 
 ⚠️ The PCB is connected to mains 230VAC! Be aware of what you do. This is no kids game, it can be life threatening or worse if you are not careful. \\ ⚠️ The PCB is connected to mains 230VAC! Be aware of what you do. This is no kids game, it can be life threatening or worse if you are not careful. \\
 I am not responsible for anything you do, this is not meant to be a tutorial to mimic. It is just a write up of the steps I have taken to achieve a goal I have striven for. \\ I am not responsible for anything you do, this is not meant to be a tutorial to mimic. It is just a write up of the steps I have taken to achieve a goal I have striven for. \\
Line 27: Line 33:
  
 ===== reverse engineering ===== ===== reverse engineering =====
- 
 The fan consists of a 1-phase AC motor, a PCB controlling it and the shell/casing. \\ The fan consists of a 1-phase AC motor, a PCB controlling it and the shell/casing. \\
 Unmodified ECA 100 ipro series has the following hardware on PCB: Unmodified ECA 100 ipro series has the following hardware on PCB:
Line 48: Line 53:
 Download KiCad (>=v6) schematics, complete with PIC16 pinout: **Todo <insert schemati**cs> \\ Download KiCad (>=v6) schematics, complete with PIC16 pinout: **Todo <insert schemati**cs> \\
  
-Interesting to see is that the Triac switches N-line, not L: in my world that is considered bad practice. \\+Interesting to see is that the Triac switches Neutral, not Live conductor: in my world that is considered bad practice. \\
  
  
Line 62: Line 67:
 | 20      | GND   | Ground |  ⚠ directly connected to N-line! | | 20      | GND   | Ground |  ⚠ directly connected to N-line! |
  
-**for alternative (test) points, see newly created PCB scan :) \\**+**for alternative (test) points, see newly created [[projects:maico_fan#pcb_scan|PCB scan]] :)** \\
  
  
-{{:projects:maico-fan:hardware:photos:img_20220304_153631.jpg?200|}}+{{:projects:maico-fan:hardware:photos:img_20220304_153631.jpg?200|}} \\ 
 ==== logic analyzer capture ==== ==== logic analyzer capture ====
 The Triac is triggered by PIC16 synced to AC-wave signal (provided by opto-coupler). Triacs do not turn off automatically again if fired, unless voltage drops to 0V (or complicated circuit added). So what you see on logic analyze capture is just the triggering signal for Triac (//D0//), not its durance it is turned on. The durance is the point the Triac is triggered till signal of opto-coupler (//D1//) is low (and therefore AC-wave crossing 0V). \\ The Triac is triggered by PIC16 synced to AC-wave signal (provided by opto-coupler). Triacs do not turn off automatically again if fired, unless voltage drops to 0V (or complicated circuit added). So what you see on logic analyze capture is just the triggering signal for Triac (//D0//), not its durance it is turned on. The durance is the point the Triac is triggered till signal of opto-coupler (//D1//) is low (and therefore AC-wave crossing 0V). \\
Line 74: Line 80:
  
 ==== PCB scan ==== ==== PCB scan ====
- +In 2025 I got hands on a broken PCB (due to water damage) on Kleinanzeigen, more than three years after the start of the project. I desoldered all parts and scanned the PCB for your convenience. I did not have any [[life_hacks:glue#solvent_cement|solvents]] but acetone nail polish at hand, which does not work that well with the sticky glue. What I did is heat the glue with hot-air rework station and wipe most of it off with a cloth - the mite rest was removed with acetone (nail polish). \\
-In 2025 I got hands on a broken PCB on Kleinanzeigen, more than three years after the start of the project. I desoldered all parts and scanned the PCB for your convenience. I did not have any [[life_hacks:glue#solvent_cement|solvents]] but acetone nail polish at hand, which does not work that well with the sticky glue. What I did is heat the glue with hot-air rework station and wipe most of it off with a cloth - the mite rest was removed with acetone (nail polish). \\+
    
-{{:projects:maico-fan:hardware:photos:pcb-scan:maico-pcb-scan_cleaned_repaired.png?linkonly|}} \\ 
 {{:projects:maico-fan:hardware:photos:pcb-scan:maico-pcb-scan_cleaned_repaired.png?200|}} \\ {{:projects:maico-fan:hardware:photos:pcb-scan:maico-pcb-scan_cleaned_repaired.png?200|}} \\
  
 I admit, I have not cleaned the board properly, as it was corroded and toast anyways.  I admit, I have not cleaned the board properly, as it was corroded and toast anyways. 
 The trace of L-line was burned up of this broken PCB, I have redrawn it in pink to show the original trace. \\ The trace of L-line was burned up of this broken PCB, I have redrawn it in pink to show the original trace. \\
- +Thanks to the PCB scan, you can see the needed points easily where to solder the wires to. \\
-This way naming TestPoints (TP) is easier +
-5V VCC \\ +
-AC \\ +
-Triac \\ +
-Light \\+
  
 ==== Board repair ==== ==== Board repair ====
 The broken board I got from Kleinanzeigen has (at least) burned Varistor (VDR1) and capacitor C1. Check for burned through PCB traces and replace those two parts. \\ The broken board I got from Kleinanzeigen has (at least) burned Varistor (VDR1) and capacitor C1. Check for burned through PCB traces and replace those two parts. \\
 Also try disconnecting the original sensor (if your version has one) - the humidity sensor I got bundled with is bad too. \\ Also try disconnecting the original sensor (if your version has one) - the humidity sensor I got bundled with is bad too. \\
 +
 ==== original humidity sensor ==== ==== original humidity sensor ====
- 
 Together with the broken PCBs, I got a humidity sensor (which I did not have at the time of the project). The sensor is glued into a plastic shell, the glue looks to be the same as on the backside of the PCB. \\ Together with the broken PCBs, I got a humidity sensor (which I did not have at the time of the project). The sensor is glued into a plastic shell, the glue looks to be the same as on the backside of the PCB. \\
 The plastic cover of the housing has a rubber cover, which is cut open if a sensor is installed. Tip to close it up again: put crepe tape over the hole and close up with [[life_hacks:glue#hot_glue|hot glue]] from the other side. \\ The plastic cover of the housing has a rubber cover, which is cut open if a sensor is installed. Tip to close it up again: put crepe tape over the hole and close up with [[life_hacks:glue#hot_glue|hot glue]] from the other side. \\
Line 100: Line 99:
  
 Don't have a sensor (version) like me? Read on. \\ Don't have a sensor (version) like me? Read on. \\
 +
 ==== PIC16 Firmware dump ==== ==== PIC16 Firmware dump ====
- 
 As I now own a PICKit (I have not at the time of doing this project), here is the firmware dump of a PCB with humidity sensor: **<insert dump>**. \\ As I now own a PICKit (I have not at the time of doing this project), here is the firmware dump of a PCB with humidity sensor: **<insert dump>**. \\
 I do not know if firmware differs for models w/o sensor, as the original PCB is still doing its duty in the shared flat. My //guess//: probably same firmware; the pin header is unpopulated. \\ I do not know if firmware differs for models w/o sensor, as the original PCB is still doing its duty in the shared flat. My //guess//: probably same firmware; the pin header is unpopulated. \\
Line 107: Line 106:
  
 ===== Hardware modification ===== ===== Hardware modification =====
- 
  
 **MCU replacement**: cut traces of PIC16 (at least pins 1,2,3 and 17) or desolder completely. \\ **MCU replacement**: cut traces of PIC16 (at least pins 1,2,3 and 17) or desolder completely. \\
Line 137: Line 135:
 ⚠ Remember: NEVER solder rigid cables onto SMD pads like TestPoints! The leverage is high, so is the danger to rip off the pad - use flex cords. \\ ⚠ Remember: NEVER solder rigid cables onto SMD pads like TestPoints! The leverage is high, so is the danger to rip off the pad - use flex cords. \\
  
-Cut traces of jumper pins and misuse the 4-pin header for flashing (VCC, GND, RX+TX) (I have actually forgotten..). \\+See [[projects:maico_fan#pcb_scan|PCB scan]] where to solder wires for FAN, ACF and Light-signal \\ 
 +You might want to cut traces of jumper pins and misuse the 4-pin header for flashing (VCC, GND, RX+TX). \\
 Repurpose existing buttons by connecting them to ESP for GPIO0 flash-mode and reset pin. \\ Repurpose existing buttons by connecting them to ESP for GPIO0 flash-mode and reset pin. \\
 The LEDs are unused, as there are not enough GPIOs (does not matter as there is a webpage for config) \\ The LEDs are unused, as there are not enough GPIOs (does not matter as there is a webpage for config) \\
Line 145: Line 144:
 ⚠️ Seal rubber of housing cover when installing humidity sensor with hot glue! No moisture allowed on the PCB, this is still mains AC! \\ ⚠️ Seal rubber of housing cover when installing humidity sensor with hot glue! No moisture allowed on the PCB, this is still mains AC! \\
  
 +
 +==== Pinout ESP-12 ====
 +
 +^ Pin# ^ name ^ description ^
 +| 1      |     
 +\\
  
 ===== Firmware ===== ===== Firmware =====
Line 173: Line 178:
 Go to ///settings// to change fan specific stuff. \\ Go to ///settings// to change fan specific stuff. \\
  
-As seen in the screenshot, I use the word "kacken" a lot, which is informal German for "(to) poop"+As seen in the screenshot, I have used the word "kacken" a lot, which is informal German for "(to) poop"
  
 There are GET commands (REST) to control the fan too. There are GET commands (REST) to control the fan too.
Line 182: Line 187:
  
 ==== pee game ==== ==== pee game ====
-What the heck is a pee game? Not another fetish, you already have all those cables and electronics?\\ +What the heck is a pee game? Not another fetish, you already have all those cables and electronics?! Relax, it's a time based game which was played in the shared flat: \\
-Relax, it's a time based game which was played in the shared flat: \\+
 Are you quicker (with washing hands thoroughly!) than a predefined time (~1min)? Turn light on, do your duty and turn light off again. If you are too slow, the fan spins shortly to acoustically signal that time has passed and you have lost! Check your time on the web frontpage - you can start+stop the stopwatch game there too. \\ Are you quicker (with washing hands thoroughly!) than a predefined time (~1min)? Turn light on, do your duty and turn light off again. If you are too slow, the fan spins shortly to acoustically signal that time has passed and you have lost! Check your time on the web frontpage - you can start+stop the stopwatch game there too. \\
 #Todo: add scoreboard leadership with acronyms/name entries. \\ #Todo: add scoreboard leadership with acronyms/name entries. \\
  
 === MQTT === === MQTT ===
- 
 #TODO: Still missing. HeartBeat for smoke detector. \\ #TODO: Still missing. HeartBeat for smoke detector. \\
 As ESP8266 only provides WiFi as wireless communication, MQTT is added for a proper way to add the fan to smart homes. \\ As ESP8266 only provides WiFi as wireless communication, MQTT is added for a proper way to add the fan to smart homes. \\
Line 195: Line 198:
 - build external, wireless WC-occupied LED-sign \\ - build external, wireless WC-occupied LED-sign \\
  
 +- add leadership score board for pee game \\
 - play tones over fan noise - feasible? \\ - play tones over fan noise - feasible? \\
 - interconnect several fans \\ - interconnect several fans \\
Line 208: Line 212:
  
 ===== Conclusion ===== ===== Conclusion =====
-The PCB is optimized for low cost, as you can see on the series resistors for light detection. I like the design, it is not over complicated. The project was fun. \\ +The PCB is optimized for low cost, as you can see on the series resistors for light detection. I like the design, it is not over complicated. \\ 
-What would I do differently if it was my product? I would build it more modular with proper galvanic isolation from logic level to mains AC. An MCU with Zigbee would be better suitable for smart homes. Actually, I have build the circuit as schematics already. @Maico: Are you interested? ;) \\+The modification project was fun. The ESP8266 is doing its job for ~3 years now (time or writing) without any issues. \\ 
 +What would I do differently if it was my product? I would build it more modular with proper galvanic isolation from logic level to mains AC and switch Live instead of Neutral with Triac. An MCU with Zigbee would be better suitable for smart homes. Actually, I have build the circuit as schematics already. @Maico: Are you interested? ;) \\ 
 + 
 + 
 +===== Bonus: the fan itself ===== 
 +As written in [[projects:maico_fan#pcb_scan|section PCB scan]], I have gotten a burned up fan with water damage on Kleinanzeigen. \\ 
 +So, how do disassemble it?  
 +   - pull off fan rotor to the front (it is tightly stuck onto the shaft, consider winding a string behind all rotor blades and pull on that) 
 +   - losen all obvious screws on front and backside of fan 
 + 
 +{{gallery>:projects:maico-fan:hardware:photos:fan-motor}} \\
projects/maico_fan.1764418370.txt.gz · Last modified: by admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki