ESP32 Fan Control - hardware based programm, what provides ability of control for case fans and led tapes.
Programm is written on Python 3 with using PyQt5. It uses MSIAfterburner.NET.dll by Nick Connors, and require process of MSI Afterburner to be runned (for temperature probs).
- Control of four PWM lines in six temperature zones
- Control of 3-pin fans with "cold launch" ability
- Control of 4-pin fans
- Smooth parallel RPM changing
- "Incut" mode, with it you can use default PWM signal from motherboard, when ESP32 FanControl program is not launched (is not fully finished yet, but can be used)
- Static led light
- Dynamycal led light (Some led-effects)
- Static led light with coloured temperature zones indication (With smooth colour changing)
- ESP32 DevKit with CP2102 USB-UART convertor. ESP must be flashed with custom uP with integrated PWM module of Loboris (my build you can find in the repo)
- Fans must be connected with full galvanic isolation (it can be realized on cheap PC817 modules from aliexpress, or, in the case of handmade RCB, you can use isolator such as ADUM1400 or HCPL2630/2631)
- Supported adress LED-tape: ws2811, and, must be ws2812b (i not tested last one yet). You can power about 15 leds from USB 3.0, or use outer source of power.
Defaul frequencies for PWM fan controling are about 21kHz. In \scheme folder, you can find two schemas:
- A simple one, on cheap components, called "simple-cheme.bmp". PC817 deform PWM signal, so, with such kind of realization, you need to use as low PWM frequency signal, as it can be. You can use any frequencies for 4-pin PWM control, 4-pin fans will work even with 100hz signul, but i recommend something about 5kHz. For control 3-pin fans via n-fet, you need to choose the maximum low frequency, with wich the fan won't whistle, usualy it about 12-17kHz.
- And also RCB scheme for SprintLayout for making handmade RCB. You can convert it to gerber and order on services like RCBWay, or make it yourself with etching technologies. Nominales of components you can find on the scheme mask. ADUM1400 is very fast, so, you can use any frequencies as you wish, i recommend using default 21kHz. Also, this scheme realizes "incut" mode, and has two logic chips for it. The last RCB scheme is not tested on practic yet! Check it before realization!
Few words about settins:
- The rpm control rage of 3-pin fans can be different, the bottom RPM border can be by 10% of PWM-filling to 60-70%, its okay. You can choose the boost zone of 3-pin fans: its the zone, where 3-pin fan gets short boost to 100% duty by cold start. By default - its 50%. For example, if your fan minimal RPM is 40% - to start it FanControl will send 100% duty impulce for 0.05s, and then will change PWM duty for 40%. For my case fans minimal RPM pwm is 60%, so, i changed boost zone for 80%. You can change it from settings window of program, in "additional" tab
- You can find and define settings of used pins in config.py. You must check and change in need next params: as_pin (autostart pin, need to be connected with ground for ESP32 script launch), PWM_Pins (pins of main PWM lines), EXT_Pins (extencion pins for "incut" mode, each pin must match with its PWM_line pin connection to logic chips), led_pin (pin where LED-tape connected in), led_relay (pin where connected relay controlling power of LED-tape). Its better not to change another settings.
- Some noizes on LED-tape in dynamic modes