Arduino Wood Stove Regulator

2,914

41

3

Note : you can download code file and 3D print files below (end of step 1 and step 3).

It is often tedious to control the air supply of a wood stove.

I built an automatic regulator that do it for you. It controls the air supply depending of the temperatures of the chimney.

The combustion is always optimal and you get the maximum calories out of your firewood.

You get a notification when a wood refill is needed.

At the end of the fire, the system automatically close the air supply to prevent the stove to cool down to fast.

WARNING : always let a minium drawing. Not providing enough air supply to stove is dangerous. It can produce fatal CO gaz or incomplete burned gaz explosion.

Disclaimer : I am not responsible of any use of this project. By using this project you take all responsibilities of its configuration, implementation and usage.

Step 1: The Regulator

The Arduino is the regulator.

It is connected to :

  • a termocouple (max6675).
  • a servo motor to control the valve (small one TowerPro 9g SG90)
  • a buzzer
  • a LCD screen (16x2)
  • a potentiometer to control manually the air supply.

If the air supply is set to the maximum, the Arduino switch to automatic mode and control the valve depending on the temperature measured by the thermocouple.

The Arduino sketch implements a PID control that stabilizes the temperature.

The Arduino sketch is open source and available for download, please read the header before using it.

I use Adafruit's max6675 library, it can be installed from the Arduino IDE.

IMPORTANT : You first have to configure the properties and the PID values so that they match your project .. (see step : Test and configure regulation )

Step 2: The Thermocouple

The thermocouple is a MAX6675 type.

Connect a wire from your Arduino to somewhere you can measure chimney or stove temperature.

Connect the thermocouple to that wire and fix the end in contact with the non isolated part of you stainless steel chimney or in contact with external part of the stove. Not inside the chimney !!

As told above, I use Adafruit's library. You can install the Adafruit's library from Arduino's IDE.

Step 3: Print the Valve

The case of the valve and servo is 3D printed.

The STL files are available for download.

  • print the disc valve
  • print the case with the cylinder
  • print the servo-to-hinge connector

Please note that they are all printed in ABS, you might update printing size for other materials.

Step 4: Assemble the Valve

  • Push a long hook inside the valve's hinge.
  • Connect the hook to the servo motor with the connector 3D printed part
  • Push the hook and the servo inside the case with the valve in place
  • Fix the valve on the hook, I drill three small holes and put super glue inside.
  • Check that the valve is turning without resistance (the servo is not powerfull..)

Step 5: Configure the Regulation

A regulation need some configuration, you may have to change the default parameters :

  • float temperatureMin = 50; // under this temperature, the regulation starts an integral measure to estimate end or fire and close the valve

  • float consigneTemperature=120.0; // the desired temperature measured by the thermocouple

  • float kP=5; // P parameter of the PID regulation

  • float kI=0.0005; // I parameter of the PID regulation

  • float kD=0.00005; // D parameter of the PID regulation

  • float refillTrigger = 5000; // refillTrigger used to notify need of a wood refill

  • float closeTrigger = 15000; // closeTrigger used to close vlave at end of combustion and notifiy end of fire

  • float potentioMax = 1023.0; // Potentiometre calibration

  • int potentionRelMax = 80; // Potentiometre value above which the regulator runs in automatic mode

It is highly recommended to test the system before deploying it ..

  • Connect the thermocouple,
  • Upload the sketch to Arduino.
  • Connect the valve but do not connect it to the air supply yet.
  • Calibrate the zero angle of the servo motor.
  • First manually test the valve with the potentiometer
  • Then make a firewood and check the thermocouple and the valve behaviour (by simulating the air admission with your stove manual controller) To put the Arduino regulator in automatic mode, you have to put the potentiometer to 100%.

Step 6: The Notifications

The buzzer is used for notifications.

There are two notifications that can be customized :

  1. wood refill notification
  2. end of fire notification

When a wood refill notification occurs, you have to put some wood, the wood refill message is going to disappear when the temperature goes up the target temperature again.

Both notification are based on the integral of the PID to be more accurate (than notifications based on temperatures)

The trigger values must be configured in the arduino sketch. You have to tune them for your wood stove.
If your refill notification raises to early, just increase refillTrigger variable.

  • float refillTrigger = 5000; // refillTrigger used to notify need of a wood refill
  • float closeTrigger = 15000; // closeTrigger used to close vlave at end of combustion

The notification and buzzer frequency and delay can be configured in the arduino sketch.

// Buzzer variables

  • int buzzerPort = 9; // Buzzer port
  • int buzzerRefillFrequency = 2000; // Buzzer tone frequency for refill alarm
  • int buzzerRefillRepeat = 3; // Number of refill alarm tones
  • int buzzerRefillDelay = 1000; // Delay of refill alarm tone
  • int buzzerCloseFrequency = 1000; // Buzzer tone frequency for end of fire valve close alarm
  • int buzzerCloseRepeat = 2; // Number of tones for end of fire valve close alarm
  • int buzzerCloseDelay = 2000; // Delay of tone for end of fire valve close alarm

Step 7: Fix the Valve at the Air Supply

Connect a wire between the Arduino and the air supply.

Fix the valve to the air supply.

Warning it must be an external air supply away from heat source !!

Step 8: Light the Fire

Be sure you configured and tested as explained in previous steps.

To start in automatic mode, put the right potentiometer to the maximum to the right (more than 80% clockwise)

Check the values on the LCD (angle should be 90°, and drawing 100%)

Start a fire, check the temperature. When the temperature goes up the desired temperature (consigneTemperature in the sketch) the valve should close. If the fire becomes too weak, the valve should open. If the fire becomes too strong, the valve should close again. I something goes wrong, use the potentiometer below 80% to be in manual mode or use the manual control of your wood stove.

You can get some nice PID curves by getting the values with Arduino serial port and plotting them. (In red the valve angle, in blue the temperature)

At the end of the fire, the system automatically close the air supply to prevent the stove to cool down to fast.

To restart the system, put the potentiometer to zero then to maximum value.

WARNING : always let a minium drawing. Not providing enough air supply to stove is dangerous. It can produce fatal CO gaz or incomplete burned gaz explosion.
Disclaimer : I am not responsible of any use of this project. By using this project you take all responsibilities of its configuration, implementation and usage.

Share

    Recommendations

    • Make it Glow Contest 2018

      Make it Glow Contest 2018
    • Optics Contest

      Optics Contest
    • First Time Author

      First Time Author

    3 Discussions

    0
    None
    Audouit Christophe

    4 months ago

    Hello I find your regulatory program excellent and I hasten to implement it for next winter. On the other hand I wonder why on the diagram there are two potentiometers, but in your explanations you only quote one, can you tell me a little more about the second.
    cordially

    0
    None
    Bo GunnarA

    10 months ago

    Very nice
    project! Exactly what I was looking for. On my wood fired boiler I will use it
    to control speed of the exhaust fan. I am totally new to Arduino so I have some
    questions.

    I suppose
    thermocouple is type K. Howe is connection to cable from Arduino done (in the
    plastic box)? is the 6675 placed in that box ? and cable a standard four lead
    cable?

    Do you have
    a better scheme for the Arduino and board connections. I can enlarge your
    pictures but its still hard to see the connection markings.

    You mention
    "I use Adafruit's max6675 library",
    Isn't your program

    " firewood_regulator.ino" complete?

    Thanks,

    Bo Gunnar

    1 reply
    0
    None
    phicoBo GunnarA

    Reply 10 months ago

    Hello,

    The Max6675 is indeed a small card that digitalizes the signal from a type-k thermocouple.

    To see the schema in full size, click to enlarge, then click on the link below the image to enlarge again to full size.

    Adafruit's libary is written by Adafruit, you can add it directly from Arduino's ide.

    My program is firewood_regulator.ino, it is complete but need to be customized to your system as explained in step 5.

    Have fun ... but be aware to know what you do when you play with fire !

    Regards,

    Philippe