Qty | Sch Ref | Name | Value | Package | Rating | Notes |
---|---|---|---|---|---|---|
1 | C3 | Tantalum Capacitor | 10 uF | 1206 | 6V or Greater | |
4 | C4, C5, C6, C7 | Ceramic Capacitor | 0.1 uF | 0805 or 0603 | 6V or Greater | |
2 | C8, C9 | Ceramic Capacitor | 22 pF | 0805 or 0603 | 6V or Greater | |
1 | C10 | Aluminum Caoacitor | 47 uF or greater | 6.6mm x 6.6mm | 6V or Greater | |
1 | C11 | Tantalum Capacitor | 4.7 uF | 1206 | 6V or Greater | |
10 | C1, C2, C12 to C20 | Ceramic Capacitor | 1 uF | 0805 or 0603 | 6V or Greater | |
1 | IC1 | LM1117 | 3.3V | SOT-223 | ||
1 | JP1 | Male Header | 3x2 | 0.1" Pitch | Standard 6 Pin ISP Header for AVR | |
1 | JP2 | Screw Terminal | 2 Pins, SparkFun PRT-08084 | 3.5mm Pitch | For thermocouple | |
1 | Q1 | Crystal | 16 MHz | HC49 SMD | 20 pF, +/- 30 PPM | |
2 | R1, R2 | Chip Resistor | 22 Ω | 0805 or 0603 | 1/10 W, +/- 10% | |
4 | R3, R4, R7, R8 | Chip Resistor | 10 kΩ | 0805 or 0603 | 1/10 W, +/- 10% | |
1 | R6 | Chip Resistor | 330 Ω | 0805 or 0603 | 1/10 W, +/- 10% | |
2 | S1, S2 | Button Switch | TL3330 | |||
3 | S3, S4, S5 | Button Switch | TL6120DF | Must be super tall | ||
1 | USB | USB Mini-B Female Connector | UX60A-MB-5ST | SMD | My favorite, easy to solder, flat bottom | |
1 | LCD | LCD COG Graphic Display | NHD-C160100DiZ | 160x100 Pixel | ||
1 | LCD | FPC Connector | A100284CT, 1-1734592-4 | 14 Pos, 0,5mm Pitch, Right Angle SMD | ||
1 | U1 | AVR Microcontroller | ATMega32U4-AU | 44 TQFP | ||
1 | U2 | Thermocouple Amplifier | AD595AQ | 14 DIP | ||
1 | U2 | Chip Socket | 14 Pins | 14 DIP | ||
1 | Relay | Solid State Relay | D2425 by Crydom | 240 VAC, 25 A | ||
1 | JP2 | Thermocouple, type K | GK11M, by Test Products Int | -40 to 510 °C | ||
1 | USB Wall Charger | 120V or 240V AC to 5 V DC, 1000 mA | Used as wall AC to 5V DC converter | |||
1 | Cooling Fan | 5V DC | 40mm x 40mm, 10mm to 17mm thick | |||
1 | AC Extension Cord | 16 AWG or Thicker | 300V |
Find the USB wall charger I used. It has to be small, works with 120V AC and 240V AC (so it works in both North America and other places), and supplies 5V DC at 1000mA.
Cut it open, I used a saw to cut off the two ends.
Unfolded it. Soldered two wires for the AC power input (polarity doesn't matter, so I used two black wires). Solder another two wires to the USB port where the 5V DC output and DC ground is, I used a black wire for ground and red for 5V since polarity is important here.
I suggest you use 22 gauge stranded wire for all of this. 24 gauge is acceptable. Stranded wire is flexible.
Insulate the entire device. I used electrical tape for this. A huge heat shrink tube would also be acceptable.
Connect your new wires to the appropriate locations on the controller PCB, as shown in my diagrams.
You can avoid this step if your thermocouple does not have any special connectors on the end. Try buying the K type thermocouple from Adafruit Industries (product ID 270), or SparkFun version (SEN-00251). The one I used is a GK11M from Test Products Int.
The thermocouple I used has a special plug. Nobody sells the actual socket for this plug (it's really designed for a specific hand-held device).
So I had to connect some wires to the thermocouple, and then plug the wires into the terminal block.
Remember that polarity is very important here so I used red wire for where there is a plus sign (chromel side) and black wire for the negative sign (alumel side).
Remember to use the same type of wire for both wires. If you use copper for the red wire, you must use the exact same copper for the black wire. It doesn't have to be copper but both wires must be the same material, because different metals would have a small voltage difference that will mess up the voltage readings.
Please read the appendix about how thermocouples work.
Look at the diagrams while doing the next few steps.
Now you can screw the relay into the bottom side of the PCB, the relay should have come with the screws you need already. Check the orientation of the relay, but the hole spacing is slightly different on each side so it's not really possible to screw it in backwards.
Solder the fan's wires to the PCB, watch your polarity. (I didn't have any connectors, but if you want, use a polarized Molex or JST connector for this)
Solder the modified USB charger's wires to the PCB, watch your polarity. (I didn't have any connectors, but if you want, use a polarized Molex or JST connector for this)
Use a flux cleaner to clean the flux off the PCB. I have this spray can that is absolutely magical at this job. I've discovered that the flux actually affects the thermocouple readings greatly so cleaning it is important.
Tuck away anything that is loose, and secure it. I tucked everything under the PCB and secured it down with electrical tape.
Please see the mechanical drawings in the project downloads. Cut a sheet of 2mm thick acrylic (cheaper) or polycarbonate (stronger) to the square shape and drill the appropriate holes.
Note that the picture is missing a hole that exists in the drawing. That hole is so you can access the screw terminals.
I hot glued some 0.25" long #8 machine screws to the buttons so they will stick out over the plastic shield.
Before you attach the sheet of plastic over the PCB, you need to program the AVR microcontroller first, that's actually in another "Instructable Step". When you finish that, use 1" long #4 machine screws and nuts to attach the plastic shield to the PCB. (I didn't have any stand-offs, use stand-offs if you want)
This will go over the PCB and protect it from things falling onto it, and protect your fingers from the uninsulated areas on the PCB. But if you actually tried to stick your finger under there, you can still get hurt. Keep this thing away from people who don't understand it.
This step comes after all of the software tasks, because it's not possible to use the ISP header if the plastic cover was on.
The very first test showed that the temperature reached 225 degrees Celcius in 520 seconds, and 260 degrees Celcius in 900 seconds. This is a little too slow.
I then raised the rack about 1.5" closer to the top heating element, and sealed most of the holes and tiny seams inside the oven using aluminium tape. This isn't the smartest idea since I had no idea what temperature the adhesive can withstand, but it seems to be OK.
After these changes, the temperature reached 225 degrees Celcius in 360 seconds, and 260 degrees Celcius in 570 seconds.
Then I applied a layer of aluminium tape to the front glass door, covering the bottom 2/3 of the glass door. I then performed another test: 225 degrees Celcius in 320 seconds, and 275 in 560 seconds.
This is just fast enough for reflow soldering according to the temperature timeline that I am following, but more improvements would need to be made.
I stuffed the inside of the oven with a layer of pink fiberglass insulation. This stuff is not electrically conductive and can handle a temperature of 500 degrees Celcius. It is safe for use in my situation.
I also found a large brick to place in the oven. The purpose of the brick is to occupy volume so there is less air inside the oven to heat. The brick is covered with aluminium foil to stop it from absorbing heat too fast. This brick actually did not get very hot, it is actually cooler than the surface of the glass door. It does its job exactly as I expected it to.
I am very happy with the final results: 225 degrees Celcius in 300 seconds, and 275 degrees in 540 seconds. I can reach the end of the "soak" stage in just 3.5 minutes.
The AD595AQ chip is a old chip and it costs $20 each. Newer designs should use a newer and cheaper alternative. Example: MAX31855 or MAX6675
I did find some other relays with similar ratings but the only way they can achieve those ratings is by using a heat sink or with a cooling fan. So I decided the "puck" shaped relay is a great idea since it makes it easy to mount.
A full enclosure would have been the best idea. The plastic shield offers enough protection for me to handle my circuit, but I am still able to be shocked if I tried to stick my finger underneath the plastic.
For the toaster oven I chose, I have to raise the PCB closer to the heating element. See my test results from before. I did this using ceramic tiles or a brick. This lowers the amount of air that needs to be heated as well, which should speed up the rate of heating (adding same amount of energy into less volume). However, solids have more heat capacity than air, which should actually slow down the rate of heating as (it takes in more energy). But since it'll take more time for the solid to suck the energy out of the air, the final effect should still be that it makes the air get hotter faster.
This project can easily be ported to the ATMega328P, which is important if you really want to use an Arduino. Please note that my circuit is running on 3.3V, and although a 16 MHz crystal is used, it's actually running at 8 MHz. I might design an "Arduino Shield" version of my circuit later.
I have seen similar projects using mechanical relays that simply turn on and off the heating element, with the slow reaction time of the heating element, this apparently works well enough.
I am capable of building my own AC to DC converter circuit, but I just don't feel like it's worth the effort for this project. I would have had to squeeze it in the PCB design as well.
The heat sink is not grounded. I did not find any reliable documents that indicates that it is safe to ground the heat sink. It probably is safe to ground it, but you might not be using a grounded extension cord. My toaster oven isn't grounded.
Arduino Leonardo's bootloader (currently in beta as the date of this page) should also work, but I don't want to rewrite a lot of instructions.
This Instructable has so many videos because I'm experimenting with different methods of presentation. I've used computer screen capture, panning around in CadSoft EAGLE with both the schematic and PCB side-by-side, 720p video recordings with my new smartphone, slide shows, and fooled around with video editing a lot. I like using videos to get my thoughts out in the order I want to present in, and then providing a text and picture summary, which I can use to fill in gaps that the videos did not cover.