It’s been a few months since the last post (or maybe a year), and I figured I better update the blog or whats the point. Anyhow the toaster oven we were using in the kitchen finally took a dump. So I figured what better thing to do than build a solder re-flow oven out of the non working unit. I am pretty psyched about doing more smd type work but I’m not the steadiest person around, so soldering small components with my soldering iron can be a pain. Besides it gives me an excuse to play with a PID controller. As usual I had a few prerequisites for the project. The main one was to try and not buy anything new for the project, at least new to me. I am really trying hard to purge some of the “junk” electronics stuff I seem to collect. That being said I knew I would have to buy a few things, which I think only ended up being a solid state relay that I bought off ebay for under $20. with shipping. A 5volt 120MM computer fan I bought from Amazon for $9. and a ‘K’ type thermocouple I got from Adafruit (http://www.adafruit.com/product/270). I gutted the oven to take a look at how I could layout the project. After that I realized the controller and relay unit would have to be in a separate enclosure. Due to the fact that the oven had zero space to house the controller, and there was no way the relay and heat sink were going in there. Below is a photo of what I came up with. I can’t take all the credit though. The idea for using the computer power supply case as a housing for the relay and controller I got from this brilliant guy (http://andybrown.me.uk/wk/2014/05/11/awreflow/).
As you can see I 3d printed a small box to house the actual controller, and LCD board. The controller consists of a TI MSP430G2553 micro-controller, a Maxim Max6675 thermocouple amplifier, a Nokia 5110 LCD and a few discreet components and that’s it. I’m also happy to say that due to TI and Maxim’s awesome samples program I got the chips for frrreeeeee! I had purchased something from the store at 43oh.com in the past and picked up a smd proto board for the msp430 that forum member RobG had designed. I wanted to not have it sitting around so instead of designing a pcb for the project I went ahead and used the proto board. Looking back, I think I should have just gone ahead and designed the pcb, it would have saved me a lot of time soldering tiny wires, but oh well it’s done. Here are few photos, warning may give nightmares!
There is also a LCD board which stacks on top of the control board.
I needed a couple of buttons to scroll through the menu items for the control. I hacked out a small board for that which has a couple of caps on it for de-bouncing the buttons and also a mosfet for switching the solid state relay. Here is the whole stack fitted into the top half of the 3d printed enclosure.
I talked briefly about the computer power supply enclosure which houses the relay. Inside the enclosure the relay sits on an heat sink I got from an old mother board or something, I can’t exactly remember, but with a few extra holes it worked perfectly for the relay. I also needed to somehow get a suitable voltage for the controller, I have 120volts AC coming into the power supply housing and going to the relay but I didn’t want to deal with building a circuit to rectify and drop the voltage so I cheated and broke open an old cell phone charger. That gives me a stable 5 volts that I regulate down to 3.3volts on the controller board. I also chose to add a little extra cooling for the relay by installing a 5volt 120MM fan into the already pre-drilled power supply enclosure. I 3d printed another small box to isolate the cell phone charger from the other components in the power supply enclosure. I like the way it turned out.
For the PID controller, I used code provided in this document : (http://cms.edn.com/contenteetimes/documents/embedded.com/2000/f-wescot.pdf) I also did a ton of research via the net. In the end I found I liked the way the author explained the functionality, without getting too technical with theory. It’s not like I’m using this in anything that is too critical, and it will never not be monitored while in use. I’m not going to publish the code here, but it’s up for grabs here: https://github.com/timotet/reflowOven. I’m sure it can be improved upon. Now I will give a brief run down on how the code runs. When powered on the the Reflow Time! screen is shown. There are 2 items you can select from this screen, reflow and adjust PID. You select by using the bottom button and scroll by using the top button.
If Adjust PID is selected, at the next screen you can make adjustments to the PID terms.
It look’s like this:
You can scroll with the top button and select with the bottom button, once you select one of the PID terms you can change the value by using the top button to increase the value and the bottom button to decrease the value, a long press of greater than 2 seconds on the bottom button saves the current value and lets you either select another PID term for adjustment or select the exit menu item.
If you select Reflow you get a screen with options for either a RHOS profile or a leaded solder profile.
Once you choose your desired profile the controller tells you either RHOS profile loaded or LEAD profile loaded.
After that its on to the fun!
Once one of these screens is displayed the oven is on and running. As you can see the screen is displaying the time passed in seconds, the set temperature and the current temperature. Also some debug info in the top right corner that I didn’t feel like removing. It shows the value of the error offset in the PID calculation, if I remember correctly. It’s kinda neat to see it at a high value when the oven is heating up and then watch the value decrease as the set temp is reached. Unfortunately I ran into some RAM limitations with the MSP430G2553 chip and I could not do a complete lcd refresh as the time and temp changed. So instead of re-writing the whole screen every second or so I just drew the reflow profile once then updated the second count and the temperature, I also wrote one pixel to the screen that corresponded to the time and temperature as the process ticked away. So in the end it would have looked better to be able to refresh the whole screen with the profile curve re-drawn along with the current curve being plotted over it, but alas, this works too and the current profile gets plotted over the original profile, just not as cleanly. So if at any time while the profile is running the bottom button can be pressed and the process will be aborted. Of course it has a screen too!
And there’s a reflow completed screen as well, but for some reason I didn’t take a picture of it oh well!
Now on to weather it works or not? Well it does and surprisingly well at that. So all in all I’m pretty psyched.
Here’s a couple of photos of some boards I re-flowed! woot woot!
Over all I’d say it works.