New (25 November 2016): My modifications to Peter's code supporting the new functionality I used is available for download. See the bottom of the Software Updates section.
This is my build of a Reflow Oven using a TO1675B Convection Toaster Oven and the ControLeo2 Reflow Oven Controller.
I generally followed this build from Roger Watkins:
The original build instructions from Peter Easton are at:
ControLeo2 Reflow Oven Build Guide
I built it per Peter's and Roger's instructions. For this large oven, I added the boost element and built it with all the insulation. I made a few modifications of my own. I am only describing my modifications below, see the two links above for the rest of the build.
Control of Three Sets of Elements Plus Convection Fan - I added a dual relay module in the oven and a relay module in an external enclosure in addition to the three SSRs.
External Mounting of Power Supply and Added Fuses - I added four fuses for the three elements and fan/power supply and mounted Power Supply externally.
Elements Swap, Reflect-A-Gold, Boom Mat and Aluminum Tape - I swapped the top and bottom elements and covered as much of the inside as possible with insulating material.
Nomex Gasket, Reflow Pan and Aluminum Channel Supports - I added a Nomex door gasket to seal the door gaps, and fabricated aluminum channels to support the tray.
External Blower - I added an external blower to cool the oven down faster after reflow, controlled by the relay module in an external enclosure.
Three Thermocouples - I added two interface boards for two more thermocouples in a second external enclosure.
Software Updates - I made significant updates to the software to support the new hardware and to get a better reflow profile from this specific oven.
Performance Measurement - I measured the performance after implementing all of the changes, and also measured the temperature differential across the reflow tray.
Control for Three Sets of Elements Plus Convection Fan
I started mounting the three Solid State Relays for the Top, Bottom and Boost Elements. I wanted to also control the convection fan. That does not take much current and is only turned on and off, so I used a relay module, controlled by Digital I/O 7. I had a dual module on hand, and only one relay is used. Three elements plus a convection fan are already supported by the Reflow Wizard software. There is not that much Aluminum under the SSRs to provide a heat sink, but everything is working so far.
External Mounting of Power Supply and Added Fuses
I mounted the relays in the oven and installed the power supply for the controller outside the oven. All high voltage wiring was done with the wire already used in the oven and added high temperature silicone wire. I added four fuses, two 10A fuses for the top and bottom elements, one 4A fuse for the boost element, and one 1A fuse for the power supply and convection fan. Because this oven pulls about 1800 Watts when fully on, I pull the fuses to test it on a normal outlet. I have a 30A RV outlet that I use to actually do reflows.
I swapped the top and bottom elements, and added the boost element. While the top and bottom were out, I installed the Reflect-A-Gold and Boom Mat. To remove the elements, there are tabs that have to be bent back straight on clips that hold the elements. I also removed the top element guards, more tabs to bend. That is easier by loosening some of the left side screws holding the chassis together.
I covered the front, rear, sides and roof as completely as possible with Reflect-A-Gold. This required about an additional 4 Feet more than in the Convection kit from Whizoo. I believe they will allow you to add extra to your order. The Boom Mat was cut to completely cover the bottom, with pieces in the recess on the bottom and on the higher areas also. I put high temperature aluminum tape over all of the edges between pieces. After discussion with Peter, it would have been better to use larger pieces of Boom Mat. The aluminum tape does not stick that well, and the gaps do not allow the heat to spread as well.
Nomex Gasket, Reflow Pan and Aluminum Channel Supports
I added Nomex Gasket to the front door:
I fabricated Aluminum channel supports for the reflow pan available on eBay. This allows me to have everything inside made of Aluminum. The channel supports slide into where the steel wire grate goes, and are not attached to the tray. The weakest spot on the aluminum channels is just inside the ends, but it seems to not have any issues. There is no warpage or sag so far.
The oven seems to have a lot of thermal mass, as it cools down slowly, even with the door fully open. To improve this I added an external blower with a triangular output plenum to blow air into the bottom of the open door. It cools it faster, at about 1-2 degrees C per second, in the ideal range. This results in better solder grain structure. This is well below the allowable 6 degrees C per second. The air is blown below the tray and the oven's convection fan mixes it to cool the rest of the oven at a reasonable rate. The results are pretty consistent from run to run.
To control the cooling blower, I added another relay module that switches a separate 110V outlet for the fan. This is connected to Digital I/O 0 on the controller board. That can only drive a few mA, so I used a relay module with a control transistor.
I had to modify the software to add control of Digital I/O 0 to the existing Digital I/O 4-7, and allow all five to be set up and used.
I added two more thermocouples. I added two MAX31855 thermocouple interface boards, using the same chip as used on the ControLeo2 board. I connected the output data to Digital I/O 1 and Digital I/O 12 on JP3 of the ControLeo2 board, and got the chip select and clock from the 5 Volt side of the resistors feeding the MAX31855 chip on the ControLeo2 board. Chip select was connected to the side of R8 nearest the large chip and the clock was connected to the side of R9 nearest the large chip. These new interface boards include level shifters, so it made sense to send the signals at as high a level as possible. The two new boards are mounted in another enclosure below the one for the cooling fan relay. The connections were all with shielded wire. This setup was used so the three could be read at the same time, so it does not take three times as long to read the temperature.
I significantly modified the code and the thermocouple interface library to support three thermocouples. The serial output now prints all three temperatures.
As described above, I added support for setup and use of five items, three sets of Solid State Relays for the Top, Bottom and Boost elements, a relay module for the convection fan, and a relay module for the cooling fan. The version 1.9 software already supported using 4 out of 5. I allow them all to be controlled.
I also added support for three thermocouples. This involved creating and passing many three element arrays to routines instead of a single variable. As you may guess, this resulted in more than one crash and burn before getting it right. C does not check array bounds, so you can really mess yourself up by reading from or writing to the 4th element in a 3 element array. I had to open the enclosure up and reset it to get it to program more than once. At least I did not blow away the bootloader.
The oven, having a lot of thermal mass, stays at peak temperature too long. To improve this, I also added a new configurable setup item to the software to adjust the time to wait after reaching reflow temp. For this oven, 23 seconds is about right, instead of the original 40 seconds, as it holds the heat for quite a long time. I also made the minimum and maximum soak times configurable items in setup. I changed a few defaults to match my oven.
These changes increased the code size, and reduced the free memory, so I added runtime free memory checking to the logging output. The output to the USB port now looks like this:
******* Phase: Reflow *******
Minimum duration = 60 seconds
Maximum duration = 100 seconds
End temperature = 247 Celsius
D4 = 87 (Bottom)
D5 = 57 (Top)
D6 = 57 (Boost)
D7 = 100 (Convection Fan)
D0 = 0 (Cooling Fan)
242, 0, 197.35, 198.25, 189.50, Memfree = 482
243, 1, 197.60, 198.55, 189.90, Memfree = 482
244, 2, 197.90, 198.85, 190.30, Memfree = 482
245, 3, 198.45, 199.25, 190.80, Memfree = 482
246, 4, 198.75, 199.60, 191.15, Memfree = 482
247, 5, 198.90, 199.95, 191.45, Memfree = 482
248, 6, 199.10, 200.25, 191.50, Memfree = 482
249, 7, 199.60, 200.65, 191.80, Memfree = 482
250, 8, 199.95, 200.95, 192.35, Memfree = 482
251, 9, 200.40, 201.30, 192.75, Memfree = 482
The output on each line is the total time, phase time, the main thermocouple reading, the two added thermocouple readings, and Memfree. The main thermocouple is still used for control. The two extra ones are only for monitoring.
The thermocouple readings are pretty noisy, and you can see that there is almost a 10 degree variation between the warmest and the coolest. The three thermocouples were in the middle of the oven, the right side in the rear of the oven, and at the left side near the front edge of the pan. This determined the safe area to use for reflow without too much variation. The temperature test labels used in the performance measurement below were closer to the center of the pan.
Memfree is the number of bytes between the heap and the stack. I am monitoring it to make sure there are no memory leaks. I got the code to determine it here. It never changes during reflow, so there are likely no memory leaks. Since there is not a lot of dynamic memory allocation and no recursion, I am pretty sure it is OK. I have run it many times since I fixed some obvious code bugs and not had any issues.
I baselined the code from Peter's version 1.9 and added my changes. Since Peter cleaned up his code, there is now more free memory than there was with version 1.7, even after my changes.
If you load my code, you will have to go into setup and reset everything, as there are new and changed configuration options in setup. You can go back to Peter's code, but will likely have to reset everything again.
I have used noInterrupts() to disable interrupts when reading and writing the ports. I am directly accessing the ports to save time, which is a little dangerous. I also have a longer wait time at startup. All of this is because during development it went out to lunch and the bootloader did not work without a hardware reset on the board. Now, there should be time to reprogram right after startup even if it goes south. It is working reliably for me, but I am being cautious just in case.
The library is in the new Arduino format, called ControLeo2_3 with a src directory for the library files and an examples directory for the one example. You should be able to load the library and the example from the zip file by by selecting the following in the Arduino IDE.
Add .ZIP Library
Then, select the zip file downloaded below. The library should be added and you can open the example sketch ReflowWizard_Mark and Upload it to the Controleo2 board. If you want to modify it, you have to save it elsewhere.
If anyone has problems, let me know.
Download it from the link at the end of this line. Click on the link, then click on the download arrow that shows up on the top right for me. My Code
Using the Temperature Test Labels as suggested by Roger, I set five of them up around the tray and measured the difference between the peak temperatures seen. These were not as close to the edges of the pan as the example above. The highest to lowest (delta T) was about 13 Degrees C, not great but not bad. A professional oven will generally have a delta T of 5 degrees or less. If I use a nominal peak temperature of 247 Degrees C, it overshoots to about 251 Degrees C in the center and hot spots at the rear and the coolest is about 238 Degrees C. Everything should reflow well.
With a setpoint of 250 Degrees, the following results were obtained.
The reflow profiles obtained were pretty reasonable and repeatable.
To see what I have done with this oven, check this link.
Mark's TCXO Board
Updated November 25, 2016