A few weeks back, I posted about the need to modify my project to include a new feature: temperature control. Today’s post shows how I designed and built my first prototype of a mechanism to open and close the air vents on my smoker. I think I’m ready to test it by smoking some meat!


The Weber Smokey Mountain

The goal of this component of my project is to control the temperature of the air inside my smoker. I got a 14-inch Weber Smokey Mountain about a year ago, and I’ve been using it to smoke various meats. I’ve had great success with ribs, pork shoulder, pork chops, brisket, chickens, and even burger patties, and they have all been delicious. The key to smoking meat is to get the temperature inside the smoker to be consistently between 225 and 250 degrees Fahrenheit. When you cook meat at this relatively low temperature for a long time, it becomes very tender and flavorful. However, these slow cooking sessions take hours, and the whole idea behind my Cooker Connector is to prevent me from having to go outside and check on the temperature every few minutes to make sure it’s not getting too hot or too cold.


The design of the smoker by itself does a decent job of keeping the coals burning at a steady rate. It has a chamber at the bottom for the coals, which you fill with lit charcoal and some dry smoking wood. Air flows in through the intake vents at the bottom, and the charcoal and wood burn to create heat and smoke. Just above the coal chamber is a bowl of water, which helps stabilize the temperature during the cook. Above that are the grates that hold the food. At the top is the outlet vent.


My Weber Smokey Mountain smoker

Figure 1. My Weber Smokey Mountain smoker.


There are many factors that can affect the temperature inside, such as the burn rate of the charcoal and wood, the heat absorption of the meat, the external air temperature, wind gusts, and heat from the sun. For this reason, the smoker has adjustable air intake vents at the bottom that can be partially opened or closed to control the flow of fresh air to the coals. Opening the vents allows more air to rush in, causing the coals to burn hotter. Closing the vents chokes the flow, causing them them to cool down. The top vent can be adjusted too, but the recommendation is to keep it all the way open all the time.


To adjust the intake vents, I’ll need a system to rotate the metal pieces. I want to use a motor to supply the force, and the motor will be controlled by the Raspberry Pi. This presents a few design challenges and constraints.


Design Challenges

The first challenge is making the system tolerant to heat. The hot coals will be sitting in the base of the smoker, so it will get quite hot near the vent control mechanism, which must come in contact with the hot metal base. Whatever materials I use must not be flammable, and they have to be able to move in the presence of heat. Metal is the obvious choice.


The second challenge is making the control system convenient to use by the chef. Operating the smoker involves moving heavy, bulky, and hot objects like slippery meat, grates, lids, charcoal, and water, so the vent control system needs to be unobtrusive and minimalistic.


Lastly, I want the system to be detachable and not permanently attached to the smoker. I need to be able to take the smoker apart to clean it and set it up. I don’t want to worry about tripping over or damaging any attachments when I’m carrying the base of the smoker to the dumpster to dump out the ashes. Also, I may want to use the smoker without the vent controller at some point.


Designing the Vent Control Mechanism

I wanted to use a servo for this because they are very strong, compact, and capable. A servo has a built-in gearbox and can be controlled with a Pulse-Width Modulation (PWM) digital signal, which can be generated by a Raspberry Pi. Servos also have hardware and circuitry that detects the current rotational position and verifies that the position of the output matches the control signal. This makes them very good for many applications, including my project.


The vents have little handles that stick out, making them the ideal connection point. I first thought about mounting the servo directly in front of the vent, but that would partially block the airflow, and the hot metal would be very close to the plastic servo. It would also require some way to hold the body of the servo in place in the air in order to generate torque.


Sketches of ways to control the vents with a servo

Figure 2. Sketches of a few ideas for attaching a servo to the vent.


I then considered mounting the servo underneath the smoker and attaching some metal rods to push and pull the vent handles. However, this still would put the servo very near the heat source. The angle of the vents is not square to any other surface, so mounting the servo and getting the rods to move in the same plane would be tricky. Also, in this configuration, the servo and wires would be exposed to rain, hot embers, and BBQ sauce.


As I was thinking about how to get the servo farther from the smoker, I became inspired by the brake cables on a bicycle, known as Bowden cables. The brake levers are mounted on handlebars that turn, but they transfer force accurately to another place on the bike. The levers pull cables that are free to turn, bend, flex, and otherwise move without changing their length. This seemed like the perfect solution, since I could put the servo inside a protected box near the Raspberry Pi a few feet away, and the cables could run out to the smoker. This system protects the servo and other electronics, and it allows the whole unit to conveniently move around freely.


I measured the distance the vent handle moves between the open and closed positions, and I found that the cable will need to travel just under 1.5 inches. I want to use one servo to move the vent in both directions, so I’ll need two cables to attach to the handle and servo. The cables can’t cross each other, so they each are going to get at most half of the circle around the servo. If the servo moves 90 degrees between the open and closed positions, this will keep the cables out of each other’s way, and it means that to travel the 1.5 inches, the arm will need to have a radius of about one inch.


Sketch of servo arm rotation

Figure 3. Sketch of the servo arm in open and closed positions.


I don't know exactly how much torque the vents will need to open and close, especially if they get hot and the metal expands. The vents also sometimes get meat drippings on them, making them stick a bit. I may be able to lubricate the vents somehow if need be. A standard Hi-Tec HS-311 servo costs less than $10 and can provide about 42oz.-in. of torque at 5V. I decided to start with one of these and see how it goes.


Experimenting with Materials

I went to a hobby shop that specializes in R/C planes and cars and spent a few hours perusing their selection of push-pull systems and servo accessories. I came home with a servo and a few different lengths of Bowden cable kits to experiment with. I also bought some straight aluminum tubing, since I wouldn’t want to attach the plastic cable housing to anything that would get hot. The metal should stand up to the heat, and I could join it to the plastic housing at a point farther from the heat.


I spent the next few days experimenting with different ways to orient the cable housing and attach it to the smoker. It became clear that I was going to need cables that were much longer than the 3-4 foot lengths I had bought. I went to the hardware store and found some 100-lb. picture-hanging wire that fit perfectly in the housing.


The picture wire came in a tight spool, and when I tried to push it through the straight housing, the inherent curve created so much friction that it became impossible to push through. I tried bending the cable in the opposite direction of the curve, but this made the problem even worse, because I was putting tiny dents and creases in the cable with every touch. The metal-on-metal friction in the aluminum tubing was even worse. This was definitely going to be a problem. Lubrication might help, but I needed to get that wire straight somehow.


I rigged up a cable stretching machine in my shop. I screwed a strong screw into a board and clamped it to my work bench, and found a sturdy piece of 2x4 and put a screw in that as well. I tied the picture wire between the two screws, and, using a hole in the floor as a fulcrum, stretched it until it didn’t have any waves, creases or bends when I released the tension. This helped the friction problem considerably, and the cable moved easily through the housing after this step. Adding dry graphite lubrication made it even better.


Stretching cable to remove bends and waves

Figure 4. Stretching the cable to remove creases, bends, and waves.


Attaching the Cable Housing

I needed a way to attach the aluminum tubing to the smoker. The smoker has three air vents and three metal legs spaced evenly between them. These legs provide about 9 inches of vertical space on which to mount the tubing, and the vent handles are conveniently oriented to move almost perpendicularly to the legs while rotating. This means that the cables can lie nearly on the same plane of rotation as the vent and pull in a direction tangent to the circle.


I considered many different ways to attach the tubing. Duct tape and hot glue were obviously going to be too melty for this application. I could tightly wrap some wire around them to hold them in place, but this might loosen over time, and it would be a pain to attach and detach from the smoker. I went back to the hardware store and looked for some materials to help. I found a long aluminum bar that I could cut down and got some nuts and bolts, thinking I would solder the tubing to segments of the bar and then attach the bars to the legs of the smoker.


I originally attempted to use a soldering iron meant for electronics. This did not work at all, as the iron couldn’t provide enough heat to get the relatively large piece of aluminum up to temperature. All I got was a gloopy, oxidized solder mess.


Attempted soldering

Figure 5. My attempt at soldering the tubing to the aluminum bar resulted in a useless mess.


A few minutes on YouTube, and I had convinced myself to buy a small torch and braze the aluminum together. My first attempt at brazing the tubing to the aluminum bar caused the thin walls of the tubing to deform. Heating the bar by itself and then placing the tubing on it seemed to work much better. After a few tries, I figured out a technique that worked well enough, and I started experimenting with ways to attach the bar to the legs of the smoker.


First attempt at brazing aluminum tubing

Figure 6. Too much heat caused the aluminum tubing to deform.


I originally had thought of drilling holes in the legs and firmly attaching the bar with the nuts and bolts, but I was hesitant to drill right away, since I didn’t know exactly where to drill or how to align the tubing once I had holes. I tried attaching a cable to the vent handle and pulling in various directions, and it became obvious that the tube would have to stand off at an angle from the leg. The flat surface of the leg is unfortunately not in the same plane as the one in which the cable will need to run, so I couldn’t just braze the tube flat against the bar. I was also nervous about the alignment of the tubing: in order to prevent a sharp bend in the cable at the opening of the tube, it would have to point exactly at the vent handle, and if I didn’t attach it with exactly the right orientation, it wouldn’t line up. I would have to make the system adjustable, so drilling into the legs was not going to be an option.


Collage of different methods of attaching to the smoker legs

Figure 7. Trying different methods of attaching pieces of aluminum bar to the legs of the smoker.


I played around with the bar, nuts, and bolts some more, and I finally came up with what I thought was a simple and elegant solution. Clamping the leg of the smoker between two pieces of the aluminum bar created enough friction to hold it in place firmly, and the aluminum could slide and pivot anywhere along the leg to make it completely adjustable. I made one of the bars longer than the other and bent it about 30 degrees towards the vent handle, which created a surface that could be finely adjusted to match the plane of the cable route. I could then braze a short section of the aluminum tubing to this, and I could point the tubing exactly where I needed it and then clamp it down. I just hope that when the legs heat up, the metal won’t change its shape and cause the clamps to loosen. I guess I’ll find out when I fire it up for the first time.


Final clamping method

Figure 8. Tubing mounts clamped to the leg of the smoker.


Final tubing mounts

Figure 9. Final tubing mounts. I'm not proud of the brazing work, but it seems strong enough.


Now that I had a fixed, heat-tolerant section of cable housing, I needed a way to transition between the rigid aluminum tubing and the flexible plastic housing. This transition needed to be firm and inflexible, so that if the plastic tubing was pulled to the side, the cable running between the plastic and aluminum would not get a sharp crease at the transition point. I tried a few different methods of joining them and found that a small piece of aluminum foil wrapped around the joint gave it the needed strength when sealed in heat-shrink tubing.


Joining the aluminum and plastic housings

Figure 10. Creating the joint between aluminum tubing and plastic housing.


Connecting the Servo

After figuring out the smoker side of the cable, I shifted to the servo side. For now, I’m going to use a piece of plywood as the base. Eventually, this will live with the Raspberry Pi and my circuit board inside an enclosure, but to test how the servo works with the cable assembly I decided to go simple. I cut a rectangle out of the plywood in the shape of the servo and firmly mounted it with the included hardware.


Next, I needed a way to attach the plastic cable housing to the plywood so that it stays in place while the cable moves within it. This must resist the full force of the cable, so it needs to be strong. I could use glue here, since it won’t be exposed to a lot of heat, but I was still focused on making the cable detachable and adjustable like the mounts I made on the smoker legs.


My first attempt was to use a piece of the aluminum bar and to cut notches in the side of it. This would then be brazed to another piece of the bar at a right angle so that it could be attached to the plywood firmly with screws. I attempted to hold both pieces together in a vice while brazing them, but the metal never seemed to get hot enough with my small torch. After several minutes of heating the joint, I realized that the heat was being transferred from the aluminum pieces to the heavy metal vice, which was becoming very warm to the touch -- I had been wasting all my heat! I had some old pieces of tile lying around that should have provided enough insulation, but lining them all up and clamping the metal between them at a right angle was too clumsy and difficult. I needed to find another solution.


While I was rethinking my approach, I also realized that the servo arm had been mounted about an inch above the plywood, and if I was going to hold back the cable housing with notches in my ½-inch-wide bar, then the servo arm would be pulling upwards on the cable and cause it to slip out of the notch. The notches therefore needed to be higher.


I decided that instead of trying to make a difficult braze between two pieces of aluminum bar, I could simply use a longer piece of bar and bend it upwards, sawing notches in the end of it. I could then fasten it to the plywood with wood screws without having to braze any joint at all, and it could be tall enough to be in line with the servo arm.


Servo mounted and cable housing stops

Figure 11. Servo mount and cable housing stops.


I finally put it all together, and I was ready to power up the servo. I wrote another Android Things test app for my Raspberry Pi (see my previous post about Android Things if you missed it!) to generate a PWM signal for the servo. I used the Pi’s 5-volt pin to power the servo, and connected everything up for a test.


Animation of servo pulling the cable

Animation of vent opening

Figure 12. Animations of the servo pulling the cable and opening the vent.


It was mostly a success! The servo was strong enough to move the vent, but it had trouble when the vent was fully closed. It’s especially sticky in that position, and the servo often stalled. I might be able to reduce some of the friction by cleaning, lubricating, or slightly bending the vent piece. I also reintroduced some creases and wrinkles in the cable, so re-stretching it will probably benefit the friction problem as well.


I'm happy with my prototype so far. I seem to be at the limit of the capability of this servo, though. Ideally, I could control all three vents with a single servo, so I would need one three times as strong. I might invest in a high-torque one, or just use three of these. I'll look at pricing and make a decision soon.


This post focused on mechanics, materials, and hardware. My next one will focus on software. Stay tuned!