
Furnace control
marcass/furnace_control
Control a FUWI pellet boiler with arduino to improve smarts

An embedded power-electronics project combining SCR switching, zero-crossing synchronisation, register-level C firmware, and a custom four-layer PCB designed in KiCad.
Cycloconverter is an open-source printed circuit board by Moeletsi47, from the Moeletsi47/cycloconverter repository on GitHub. It is a 4-layer board of 355.6 × 144.8 mm with 70 parts on 85 nets, routed with 394 tracks and 15 vias.
It is built around the ATMEGA328P-PU, MOC3052M and H11AA1. Its parts include 27 resistors, 12 capacitors, 11 ICs, 8 diodes and 3 connectors. It belongs with the AVR (ATmega, ATtiny) boards of this library.
An embedded power-electronics project combining SCR switching, zero-crossing synchronisation, register-level C firmware, and a custom four-layer PCB designed in KiCad.
The intended input is 230 V AC RMS at 50 Hz. The firmware runs an automatic sequence of frequency and voltage targets, then ramps down and disables gate firing.
The uploaded firmware uses a nominal 5 V/Hz lookup table and the following sequence:
| Step | Frequency target | Nominal voltage target | Duration |
|---|---|---|---|
| Ramp up | 0 → 10 Hz | 0 → 50 V | 5 s |
| Hold | 10 Hz | 50 V | 2 s |
| Ramp up | 10 → 20 Hz | 50 → 100 V | 5 s |
| Hold | 20 Hz | 100 V | 2 s |
| Ramp up | 20 → 40 Hz | 100 → 200 V | 5 s |
| Hold | 40 Hz | 200 V | 2 s |
| Ramp down | 40 → 0 Hz | 200 → 0 V | 5 s |
After ramp-down, the controller remains in its stopped state until reset. The firmware reaches zero after 5 seconds of ramp-down and enters its final state at the next 500 ms update.
The hold-time comments in the source say 10 seconds, but the implemented thresholds are 2000 ms, giving 2-second holds.
Voltage values are intended lookup-table targets, not measurements or closed-loop regulation. The switched output is non-sinusoidal; its RMS voltage and frequency spectrum require waveform verification, particularly at the 40 Hz setting.
The controller is an ATmega328P running at 16 MHz, programmed in embedded C using direct register access.
PULSE_TICKS = 74.fire_table[] selects a firing delay for each frequency setpoint.The control sequence runs in interrupt service routines; the main loop remains idle.
| Signal | ATmega328P pin |
|---|---|
| Zero-crossing input | PB0 |
| T1 | PB1 |
| T2 | PB2 |
| T3 | PB3 |
| T4 | PB4 |
| N1 | PD4 |
| N2 | PD5 |
| N3 | PD6 |
| N4 | PD7 |
This firmware defines eight gate outputs in two groups. Confirm that the schematic and PCB revision match this mapping before using the firmware; the earlier four-SCR PCB arrangement must not be assumed to match it directly.
The project also includes a custom four-layer PCB designed in KiCad, with attention to the separation of mains circuitry and low-voltage control electronics.
PCB design features include:
The design work covers schematic capture, footprint assignment, multilayer routing, and fabrication-output preparation. PCB layout completion does not by itself establish hardware validation or electrical-safety compliance.
| Tool | Purpose |
|---|---|
| Microchip Studio | AVR firmware development |
| Proteus | Circuit simulation and waveform inspection |
| KiCad | Schematic capture and four-layer PCB design |
This project involves hazardous 230 V AC. Gate signals turning off do not force an SCR to stop conducting. Hardware testing requires appropriate protection, mains-rated measurement equipment, and verification of commutation behaviour, especially with inductive loads.
Jason Nkuna
Embedded systems, power electronics, and PCB design.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 220 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R20, R21, R22, R23, R24, R25, R26, R27 |
| 8 | 22nF | Capacitor_THT:C_Rect_L18.0mm_W8.0mm_P15.00mm_FKS3_FKP3 | C1, C2, C3, C4, C5, C6, C7, C8 |
| 8 | 3.9k | Resistor_THT:R_Axial_DIN0414_L11.9mm_D4.5mm_P20.32mm_Horizontal | R9, R10, R11, R12, R13, R14, R15, R16 |
| 8 | 47 | Resistor_THT:R_Axial_DIN0516_L15.5mm_D5.0mm_P20.32mm_Horizontal | R1, R2, R3, R4, R5, R6, R7, R8 |
| 8 | MOC3052M | MOC3052M:DIP762W46P254L851H508Q6 | U2, U3, U4, U5, U6, U7, U8, U9 |
| 8 | Q_SCR_AGK | SCR:IFX-PG-TO220-3-904-1 | D1, D2, D3, D4, D5, D6, D7, D8 |
| 2 | 15k | Resistor_THT:R_Axial_DIN0411_L9.9mm_D3.6mm_P12.70mm_Horizontal | R17, R18 |
| 2 | 22pF | Capacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mm | C10, C11 |
| 2 | Screw_Terminal_01x02 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_Horizontal | J1, J2 |
| 1 | 100nF | Capacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mm | C9 |
| 1 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R19 |
| 1 | 10uF | Capacitor_THT:C_Disc_D4.3mm_W1.9mm_P5.00mm | C12 |
| 1 | ACS712xLCTR-05B | Package_SO:SOIC-8_3.81x9.347mm_P2.54mm | U1 |
| 1 | ATmega328P-P | Package_DIP:DIP-28_W7.62mm | U11 |
| 1 | Conn_01x02 | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J3 |
| 1 | Crystal | Crystal:Crystal_HC49-U_Vertical | Y1 |
| 1 | Fuse | Fuse:Fuseholder_Clip-6.3x32mm_Littelfuse_102_Inline_P34.21x7.62mm_D2.54mm_Horizontal | F1 |
| 1 | H11AA1 | Package_DIP:DIP-6_W7.62mm | U10 |
| 1 | Varistor | Varistor:RV_Disc_D15.5mm_W4.3mm_P7.5mm | RV1 |
The 64 most common of 70 parts.
It measures 355.6 × 144.8 mm and has 4 copper layers, 1.6 mm thick.
70 parts, built around the ATMEGA328P-PU, MOC3052M and H11AA1. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the Moeletsi47/cycloconverter repository on GitHub, at the commit this page was made from: the board is KiCad_PCB/cycloconverter.kicad_pcb and its schematic KiCad_PCB/cycloconverter.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask Moeletsi47 before reusing the design.

marcass/furnace_control
Control a FUWI pellet boiler with arduino to improve smarts



Miceuz/triac-bloc
An universal power block based on triac. In essence this is a solid state relay with some bells and whistles




mankut80/AskSinPP_HM-LC-Dim1L-CV
Mit der Technik des Phasenanschnitts lassen sich ohmsche und induktive Wechselstromlasten in der Leistung steuern.