TRAINMAN5
There has been a good cold snap here. Enough to test out the automated air control for the Pacific Energy Classic wood stove.
So .... what can I say about this. Hmmm.... IT'S REALLY FREAKING COOL!
At first I thought it wouldn't work or it would be a novelty but now its just so awesome to be able to throw wood in the stove, light it up and the system just takes care of burning what I put in there. I don't have to worry about over-firing the stove or getting too many coals because I forgot to open up the air control at the end of the burn. I find I am putting more thought into how much wood should I chuck in by looking at inside temps, outside temps and how long I want the room warmed up rather than messing around with the air control lever all the time trying to get a good burn. The SO acceptance factor is huge. She loves the little minion Pi robot that takes care of the stove. It's hillarious.
The wild thing is that I haven't even really started getting into optimizing the code. All I did was simply figure out how many steps (airsteps=468) from max air to min air and then based on min (pipemin=225F) and max (pipemax=500F) pipe temperatures set the air control using a linear formula. Dead simple. Its not optimal but I was amazed how it works pretty good for such simple logic.
https://github.com/yodagami/trainman/tree/master/trainman5
Yeah, so software needs some work but lets talk about hardware which is almost done. Adafruit makes a stepper motor hat for the Pi. This goes under the trainman board. I use stacking headers with the long pins on the motor hat so its easy to make it all work together. Pi on bottom, stepper motor hat in middle and trainman board on top.
First the good news. The PE super stoves have this awesome air control lever that on min air setting can crash the burn even if I stuff the box full of junipetrol kindling sticks in a wind storm. Even better is the long travel on the lever between max air and min air allowing for more fine grained control than a lot of non-cat stoves. The air control lever operates smoothly, making automation fairly easy to accomplish.
The challenges:
a) The air control lever hinges on a pin so its motion is actually semi-circular instead of linear.
b) How to control air lever without drilling or permanently modifying the air control lever
c) Attaching the air control to the stove without drilling or permanently modifying the stove.
Solution: Open builds V-Slot rail and Mini-Gantry to the rescue
Here is the basic hardware list:
# 1xAdafruit #324 Stepper motor - NEMA-17 size - 200 steps/rev, 12V 350mA
# 1xAdafruit 12VDC power supply
# 1xAdafruit #2348 DC & Stepper Motor Hat for Raspberry Pi - Mini Kit
# 1xAdafruit #1184 Timing Belt GT2 Profile - 2mm pitch - 6mm wide 1164mm long
# 1xUltibots #N17D NEMA 17 Damper - Astrosyn MY17RMDAMP
# 1xOpenbuilds GT2-2M Timing Pulley - 30 Tooth
# 1xOpenbuilds V-Slot 20x20 Linear Rail
# 1xOpenbuilds Mini V Gantry Set
# 1xOpenbuilds Motor Mount Plate for NEMA 17 Stepper Motor
# 1xOpenbuilds Idler Pully Plate
# 1xOpenbuilds Smooth Idler Pulley Kit
Why this is cool: The stepper motor, pully, vslot rail, belts and gantry allow the translation of the semi-circular motion of the air control into a straight linear motion. All I did was to use longer bolts and some spacers on the mini-gantry and the lever is pushed left and right between these two spacers. Easy.
NEMA 17 Damper makes things alot more quiet than hard spacers on the motor. I use the MICROSTEP motor operation call rather than SINGLE or DOUBLE for even more quiet motor operation.
Attaching the rail to the stove: I made a couple of spacer brackets out of 1-1/2x1-1/2 aluminum channel and just reused the holes (in the stove) and bolts that hold the Ash Pan in place to attach the V-Slot linear rail at the right distance and height to operate the air lever. Once that is done the timing belt is tie strapped to the gantry and the belt snugged up by adjusting the positon of the the idler pully plate on the rail. The channel works better than square tube. Its still fairly strong but lets you get tools in the right places to attach the spacer brackets to the stove. Yeah, the ashpan still fits over top. It wedges in place betwen the alumium channel spacers and the stove.
So how does this work? The trainmain5.py code makes calls to the Pi stepper library based on temps read by the thermocouples. Pi stepper motor hat powers the stepper motor and controls its steps clockwise or counter-clockwise. The rotation of the timing pully on the motor shaft with its teeth pushes/pulls the notched timing belt. The timing belt loop moves the mini-gantry linearly along the v-slot linear rail. The spacer pegs on the mini-gantry top plate engage the wood stoves air control lever moving it left and right. No drilling or permanent modification of the stove air control lever is required.
Other parts and other thoughts:
- Limit switches: You can get switches that mount onto the rail that can detect min/max positions. I have them but have not implemented this yet. The hardware doesn't seem to get harmed if I blow past the min max of the air control. The motor will just "skip" instead of breaking the motor, timing belt or other components. Maybe I don't need them. Maybe they would be cool to have.
- NEMA 17 heat sink and thermal tape. Ultibots sells these along with the motor damper. Inexpensive so I just slapped one on my motor. Easy. Maybe it will help with motor longevity. I haven't seen mine fail yet even after burning an entire season without the heat sink.
- DPST motor switch. I want a way to allow manual motor override similar idea to my 3 position switch for fan control that allows manual operator override of the fan speed in case something goes wrong. A simple double pole switch for the 2 coils on the stepper motor seems the easiest way to allow for manual operator override of the air control Right now the stepper motor pretty much locks the air control into place. Its pretty strong. Breaking the coil circuits from the motor hat to the stepper motor should free up the lever enough for manual air control override.
- So that's it for now. I have a lot of work to do on the air control code. This has got to be the best and most fun part of the entire project. Cheers!