Skip to the content
2 layers73.2 × 81.3 mmFurnace control, the printed circuit board in 3D

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

3

README

README.md

furnace_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

  1. Pellet boiler
  2. Sensor network for house (managed by https://github.com/home-climate-control/dz ) - this will pull a pin low on arduino in boiler
  3. Arduino controlled PCB in boiler
  4. 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

  1. Stop python listener script on serial port "sudo systemctl stop arduino-attach.service"
  2. Upload script to arduino: "make upload" (in root of git repo for furnace_control)
  3. 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

  1. Idle
  2. Start_up
  3. Heating
  4. Cool_down
  5. Error
  6. 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

  1. Blow fan first to see if a flame will start
  2. Pellet dump to get something for element to light
  3. Element heating of pellet load
  4. Gentle fan (phase angled to 30% or so) to start fire until light over threshold sensed
  5. Pellet feed and full fan when light over threshold
  6. Transition into heating when water temp over 50C

Heating

  1. PID control of trend of water temp and this affects fan speed through PWM and pellet feed rate
  2. Start circ pump if over 50C
  3. Pull fan relay low and circ pump high if temp over 85C
  4. Transition to cool down if contact from 1-wire is opened

Cool_down

  1. Pull fan low and circ pump high until temp <60C
  2. 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

##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:

  1. Boiler controller (arduino based on a PCB)
  2. Communication interface on serial port
  3. 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
QtyValueFootprintReferences
410kResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2, R3, R8
215K5W_resistor:Resistor_5W_l12.5_w9_P7.5R6, R7
2220Resistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR4, R10
2Mounting_holeMounting_Holes:MountingHole_4.3mm_M4_DIN965_PadMH1, MH2
10.01muFResistors_THT:R_Radial_Power_L11.0mm_W7.0mm_P5.00mmC1
11.5kResistors_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR5
1240_CONN_Therm_on_3_4Connectors_Phoenix:PhoenixContact_MC-G_08x5.08mm_AngledP6
133Resistors_THT:R_Axial_DIN0617_L17.0mm_D6.0mm_P25.40mm_HorizontalR9
1CONN_01X06Connectors_Phoenix:PhoenixContact_MC-G_06x3.81mm_AngledP4
1CONN_01X08Connectors_Phoenix:PhoenixContact_MC-G_08x3.81mm_AngledP1
1FuseFuse_Holders_and_Fuses:Fuseholder5x20_Horizontal_closed_Bulgin_FX0457F1
1H11AA1Opto-Devices:Optocoupler_6pin_wide_Stile-IU3
1JumperPin_Headers:Pin_Header_Straight_1x03P7
1LCD_ButtonConnectors_Phoenix:PhoenixContact_MC-G_08x3.81mm_AngledP3
1MOC3052MOpto-Devices:Optocoupler_6pin_wide_Stile-IU2
1Q6015L5TO_SOT_Packages_THT:TO-220_Neutral123_Vertical_LargePadsD1
1Varistor 600VResistors_THT:R_Radial_Power_L11.0mm_W7.0mm_P5.00mmRV1
1arduino_nanoarduino_nano:ArduinoNanoU1

Similar boards

  • 4 layers100.1 × 79.2 mmSolder oven PCB, the printed circuit board in 3D

    Solder oven PCB

    JuanDavidBarrero/SolderingOvenPCB

    44 parts
  • 4 layers355.6 × 144.8 mmCycloconverter, the printed circuit board in 3D

    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 mmEsp32 dimmer, the printed circuit board in 3D

    Esp32 dimmer

    fborello-lambda/pcbs_llm_driven_design

    🔌 PCBs made with LLMs

    23 parts1MIT
  • 2 layers99.1 × 76.2 mmSsr, the printed circuit board in 3D

    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 mmDimmer, the printed circuit board in 3D

    Dimmer

    n3rd-bugs/weird-rtos

    This is a not so small RTOS for low end MCUs.

    23 parts5
  • 2 layers41 × 38 mmRS Board, the printed circuit board in 3D

    RS Board

    VGCH/radar_switch

    DIY module for lighting control with radar sensor

    35 parts5
  • 2 layers79.1 × 56.3 mmFan reg, the printed circuit board in 3D

    Fan reg

    VGCH/smart_fan

    Smart controller for fan

    41 parts4
  • 2 layers59.9 × 103.5 mmHM AsksinPP Phasenanschnitt, the printed circuit board in 3D

    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).