Reflow Toaster: Difference between revisions
(Added link to source code)
m (Updated infobox project to infobox project 2)
|Line 7:||Line 7:|
Revision as of 13:39, 26 January 2015
|List of All Documented Equipment
|Hive13 Asset Tag: None|
|Make/Model: not specified.|
|Arrival Date: Febuary 2012|
|Does it work?: yes|
|Certification Needed?: no|
Property "Maintainer" (as page type) with input value "User:Blundar|DaveB" contains invalid characters or is incomplete and therefore can cause unexpected results during a query or annotation process.
|Start Date: 1/1/2013|
The reflow oven works. It has a fairly basic profile in it based on the standard Kester profile
DaveB did all the work so far on this unit. You can consider it in part a bizarre found-object sculpture because very few parts were actually purchased to make it work - almost everything was found @Hive13 or in Dave's ManCave (tm).
There are two lights on the dev board.
- Green LED is for the heater element. If the green LED is on, the heaters are on.
- Blue LED is for the fan. If the blue LED is on, the fans are on.
There are two buttons on the dev board.
- The Blue button starts a reflow cycle. It has debounce on it so you may have to push it for 1/4 - 1/2 second for it to register.
- The Black button resets the unit.
When the unit powers up, the default state powers up the fan at an extremely low power to circulate air. The unit is designed to operate with the door CLOSED.
To start a reflow cycle, press the blue button. As soon as the cycle starts, the heater will kick on full blast (i.e. green light on continuous) to preheat the coils before starting PID operation and following the pre-programmed temp curve. After the peak temperature has been reached, the unit will shut off the coils and coast. This portion of operation ever so slightly violates the temperature profile because it does not cool off fast enough. Once the temperatures drop below 180C (i.e. the solder is no longer molten) the fan will kick on (blue led) full blast until the temperature drops to a safe level, at which point the unit resets.
Summary: put your boards in. Push the blue button. Watch and wait. Pretty easy.
- The oven started life as a standard toaster oven. The stock controls were gutted.
- The lower heating element was moved to the top and then hooked up in parallel with the original top element to increase the thermal heating capacity.
- The oven was fitted with a random thermocouple (K type, I *think* had reasonable output for room temperature, body temperature and a lighter during testing) found on the floor of the space.
- A circuit board leftover from a failed product attempt was re-purposed as a thermocouple amplifier, using the AD8495 IC. It is responsible for outputting a 0-5v signal proportional to the temperature of the thermocouple. This is fed to a 0-3.3v ADC on the dev board. The unit never gets close to hot enough to approach the voltage limits of the dev board. There are no explicit protection circuits, i.e. this is kind of ghetto don't point a blowtorch at the sensor - you might fry the dev board.
- A solid state relay was purchased to control the heating elements. (yes, I cheated and bought this for a whopping $9)
- A simple controller was constructed from a STM32L-DISCOVERY board floating around the space. The board has a built-in USB SWD programmer/debugger module.
- Although rated for "3 - 30V DC" on the control input, it was discovered through trial and error that the 3.3V output of the STM32L board was insufficient to fully energize the solid state relay, leading to piss poor heatup times.
- A random piece of perf board laying around the space, TIP102 darlingon and 7805 regulator salvaged from defunct projects, couple capacitors and 12v wall wart missing a plug were combined in a most horrid way with a mini-USB cable cut in half to provide a sledgehammer solution. The STM32L board is now powered by the wall wart via the 7805 providing 5V to the USB cable. The STM32L now switches the wall wart voltage output (~14V w/o load) to the solid state relay using the darlington and a couple resistors (can you say GAIN?). This piece of perf board is ugly as sin and gooped with solder but it works.
- A second darlington and couple resistors was added to the perfboard to control a small fan scavenged from the fan bins. The fan blows inwards below the shelf where boards are placed. This is again controlled by the dev board.
- The STM32L board acting as a controller is running ChibiOS, a free open-source RTOS. (total overkill)
- It has a simple PID controller on it with a few modifications to better suit the particulars of the situation. Mostly full-blast heat and fan replacing PID in certain circumstances to allow better tuning of the whole operation range.
- The temperature profile was adjusted with feedback from real world boards to avoid catching them on fire. (oops)
- The wall wart was shoved in the space where the original controls were along with everything else and the power cord was spliced together so that there is only one power cord required for the unit.
Issues and Improvements
- Recompiling is the only way to change the profile at this time. :(
- I chose the hardware resources such that the USB peripheral pins are available. ChibiOS supports the USB in its HAL, and we've gotten LibUSB to play nicely. This would be a really nice way to communicate status, etc with a PC. Would also be really nice for programming the desired temp curve.
- There is no display at this time. :(
- The board has a provision for a LCD display but I ran out of time trying to marry ST and Chibios libraries and get the display driver provided with the example code to compile. The example code for the dev board is actually a thermometer but it's written for a different compiler with a different set of libraries. Not entirely trivial to meld with Chibi.
- Believe it or not, the unit does not have enough thermal capacity! Adding an additional 2-4 coils would make it able to ramp as fast as the specification calls for. I manually code the final ramp up as a 100% on duty and still fail to meet the specified ramp rates - too slow. Obviously, this shite ass code should be removed and the PID loop re-tuned if additional thermal capacity is added.
- The unit has a LOT of thermal inertia. I'm thinking that it might be a good idea to remove the ceramic tubes that currently house the heating elements to expose the bare nichrome wire. Doing so might be a little dangerous but would certainly allow much faster transients I think.
- The unit also fails to meet the cooldown specs after peak temperature is reached. I'm scared to use the fan for cooling immediately due to the solder being molten. Perhaps some kind of a solenoid or linear actuator to open the door would help it cool faster?