

Furnace control
Control a FUWI pellet boiler with arduino to improve smarts
- Size
- 73.2 × 81.3 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 24
- Nets
- 46
- Pads
- 106
- Tracks, vias
- 214, 0
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 4
- Created
- 14 Feb 2017
- Updated
- 4 Sep 2020
Overview
Furnace control is an open-source printed circuit board by marcass, from the marcass/furnace_control repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 73.2 × 81.3 mm with 24 parts on 46 nets, routed with 214 tracks and 0 vias.
It is built around the Q6015L5TP, H11AA1 and MOC3052M. Its parts include 10 resistors, 5 connectors, 3 ICs, 1 capacitor and 1 diode. It belongs with the AVR (ATmega, ATtiny) boards of this library.
Main components
3Q6015L5TP
TO-220-40℃~+125℃@(Tj) 15A 2V 50mA 600V 70mA TO-220 Thyristors (SCR)/Modules ROHSLittelfuseThyristors (SCR)/ModulesH11AA1
DIP-6-55℃~+100℃ 1.2V 20% 30V 400mV@10mA,0.5mA 5.3kV 60mA AC,DC Integrated anti-parallel LED Phototransistor DIP-6 Transistor, Photovoltaic Output Optoisolators ROHSVishay IntertechnologyTransistor, Photovoltaic Output OptoisolatorsMOC3052M
DIP-6-40℃~+85℃ 1 1.5V 1000V/us 1A 330mW 4.17kV 6 600V 60mA No TRIAC DIP-6 Triac, SCR Output Optoisolators ROHSonsemiTriac, SCR Output Optoisolators
README
README.mdfurnace_control
Control a FUWI pellet boiler with arduino to improve smarts
After having 2 controal boards malfunction I have decided to roll my own with some improved modulation of fan speed and pellet feeding. Reporting or interface issues will be addressed also
Goals satisfied with this project are (not limited to):
- Reducing the need for cleaning of pellet boiler through better end of heat cycle managemtn of burner box (basically fanning the pellet wad until it burns out)
- Increasing efficiency of pellet usage by varying energy output of pellet boilder in accordance with demand (pid controlling fan, pellet feed time and pause feed time around setpoint). This has the added benefit of avoiding short-cycling and resultant ash buildup
#Components of system
- Pellet boiler
- Sensor network for house (managed by https://github.com/home-climate-control/dz ) - this will pull a pin low on arduino in boiler
- Arduino controlled PCB in boiler
- Communicatons server (communicates to arduino via usb-serial port and the rest of the world via MQTT)
This repository deals with the arduino sketch, the PCB and the communication interface on the server
To perform headless-server update of arduino sketch
- Stop python listener script on serial port "sudo systemctl stop arduino-attach.service"
- Upload script to arduino: "make upload" (in root of git repo for furnace_control)
- Start python listener script on serial port: "sudo systemctl start arduino-attach.service"
Inputs from boiler
- Water temperature
- Auger shaft temperature
- Light sensor in flame box
Outputs to boiler and assocaited hardware
- Auger motor to move pellets into flame box
- Fan to stoke fire
- 280W eleement to start fire
- Circ pump to pump heated water to radiators
Safety
Hardware fail-safes are ideal as software may have problems that result in uncontrolled fire! Currently the boiler uses a device that breaks the neutral feed to the fan and element so it does not provide continuance when it is over a certain termperature (90 degrees C)
- Error state pulls all relays to low
- Idle state pulls fan and element to low
States
- Idle
- Start_up
- Heating
- Cool_down
- Error
- Off
Idle
Wait for closed contact from 1-wire bus to transition into start_up. When contact closed: Blow fan to see if flame detected:
- if flame detected -> Heating
- if no flame -> Start_up
Start up
- Blow fan first to see if a flame will start
- Pellet dump to get something for element to light
- Element heating of pellet load
- Gentle fan (phase angled to 30% or so) to start fire until light over threshold sensed
- Pellet feed and full fan when light over threshold
- Transition into heating when water temp over 50C
Heating
- PID control of trend of water temp and this affects fan speed through PWM and pellet feed rate
- Start circ pump if over 50C
- Pull fan relay low and circ pump high if temp over 85C
- Transition to cool down if contact from 1-wire is opened
Cool_down
- Pull fan low and circ pump high until temp <60C
- Transition to idle when below 60C
Error
Catch all that pulls fan adn element low
Off
Don't start the boiler even if dz asks (button press and remote)
##Links
-
Triac schematic for fan control (need up to 5A as heat diminishes capability https://www.circuitar.com/media/product/25/files/Triac_v1.0.pdf
-
Phase control for fan: http://playground.arduino.cc/Main/ACPhaseControl
-
ACPWM lib http://playground.arduino.cc/Code/ACPWM
-
Phase control explanation with varying of power output suggestions: http://electronics.stackexchange.com/questions/19273/when-should-i-fire-the-triacs-gate-when-controlling-an-inductive-load-ac-motor
##Connecton notes
- redundant fan_out connection at relay block in case on-board pahse angle not working
- P6 (240v outs) have the hardware thermostat (AB03 90.05) connected in pins 3 and 4 (polarity doesn't matter
- when below 90C it is closed circuit
- when above 90C it is open circuit
- after opening it closes again at 75C
- this (when closed circuit) supplies 240N to pins 1, 2 and 3 (pump, auger and element)
- 1-wire relay (hobby boards 8 channel) connects at pins 7 and 8 of P1 (low voltage input connector). When it is closed by control software the DZ_pin is pulled to ground
- 15k Ohm resistors need to be rated for 5w on 240VAC side (consumes 3.8W of power)
- 1.5k Resistor needs to be 50W on 240VAC side (consumes 38W of power) if constant power, but as MOC305 datasheet states:
"The power dissapation of this current limiting resistor and the triac driver is very small because the power triac carris the load current as soon as the current through the driver and current limiting resistor reaches the trigger current of teh power triac"
Switching times for the driver are 1 micro second and 4 micro seconds for the power triac
#Setup Components of the sytsem are:
- Boiler controller (arduino based on a PCB)
- Communication interface on serial port
- Display device(s)
##Boiler controller PCB in kicad files in this repo
- Could do with 2 additional input pins for sensing hopper level
- Check that 5W resistors are up to the task of phase angle detection
Communication interface on serial port
Uses:
- pyserial to capture data/print data to serial port (arduino) and insert into database
- paho-mqtt for subscribing/publishing to mosquitto broker
- mosquitto broker for managing infomration
###UDEV See udev rules in repo:
- On insertion of aruduino usb assign symlink so pyserial can find device
- runs systemd service that starts the pythion script for managing stuff to and from arduino
###Data capture Inserting data into influxdb and graphing via a vuejs frontend using plotly. See https://skibo.duckdns.org/sensors/#/graphs (repo here: https://github.com/marcass/esp32-sensornet/tree/master/sensornet)
##Device Any mqtt client that runs on anything will display data from broker
- subscribe to topics:
- boiler/switch (for turning on/off)
- boiler/flame (for displaying flame value)
- boiler/temp/auger
- boiler/temp/water
- boiler/temp/setpoint
- boiler/messages (error messages)
- boiler/state (state display)
Parts
24| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 10k | Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1, R2, R3, R8 |
| 2 | 15K | 5W_resistor:Resistor_5W_l12.5_w9_P7.5 | R6, R7 |
| 2 | 220 | Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R4, R10 |
| 2 | Mounting_hole | Mounting_Holes:MountingHole_4.3mm_M4_DIN965_Pad | MH1, MH2 |
| 1 | 0.01muF | Resistors_THT:R_Radial_Power_L11.0mm_W7.0mm_P5.00mm | C1 |
| 1 | 1.5k | Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R5 |
| 1 | 240_CONN_Therm_on_3_4 | Connectors_Phoenix:PhoenixContact_MC-G_08x5.08mm_Angled | P6 |
| 1 | 33 | Resistors_THT:R_Axial_DIN0617_L17.0mm_D6.0mm_P25.40mm_Horizontal | R9 |
| 1 | CONN_01X06 | Connectors_Phoenix:PhoenixContact_MC-G_06x3.81mm_Angled | P4 |
| 1 | CONN_01X08 | Connectors_Phoenix:PhoenixContact_MC-G_08x3.81mm_Angled | P1 |
| 1 | Fuse | Fuse_Holders_and_Fuses:Fuseholder5x20_Horizontal_closed_Bulgin_FX0457 | F1 |
| 1 | H11AA1 | Opto-Devices:Optocoupler_6pin_wide_Stile-I | U3 |
| 1 | Jumper | Pin_Headers:Pin_Header_Straight_1x03 | P7 |
| 1 | LCD_Button | Connectors_Phoenix:PhoenixContact_MC-G_08x3.81mm_Angled | P3 |
| 1 | MOC3052M | Opto-Devices:Optocoupler_6pin_wide_Stile-I | U2 |
| 1 | Q6015L5 | TO_SOT_Packages_THT:TO-220_Neutral123_Vertical_LargePads | D1 |
| 1 | Varistor 600V | Resistors_THT:R_Radial_Power_L11.0mm_W7.0mm_P5.00mm | RV1 |
| 1 | arduino_nano | arduino_nano:ArduinoNano | U1 |
Similar boards
- 4 layers100.1 × 79.2 mm

- 4 layers355.6 × 144.8 mm

Cycloconverter
Moeletsi47/cycloconverter
An embedded power-electronics project combining SCR switching, zero-crossing synchronisation, register-level C firmware, and a custom four-layer PCB designed in KiCad.
70 parts - 2 layers100 × 100 mm

- 2 layers99.1 × 76.2 mm

Ssr
Miceuz/triac-bloc
An universal power block based on triac. In essence this is a solid state relay with some bells and whistles
39 parts54 - 2 layers74.7 × 33.5 mm

- 2 layers41 × 38 mm

- 2 layers79.1 × 56.3 mm

- 2 layers59.9 × 103.5 mm

HM AsksinPP Phasenanschnitt
mankut80/AskSinPP_HM-LC-Dim1L-CV
Mit der Technik des Phasenanschnitts lassen sich ohmsche und induktive Wechselstromlasten in der Leistung steuern.
36 parts1
Questions
How big is the Furnace control PCB?
It measures 73.2 × 81.3 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Furnace control use?
24 parts, built around the Q6015L5TP, H11AA1 and MOC3052M. 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.
Where can I download the Furnace control KiCad files?
From the marcass/furnace_control repository on GitHub, at the commit this page was made from: the board is kicad/furnace_control.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Furnace control design in my own project?
Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).