After building my 400W 140mm x 70mm SMD hot plate (See SMD Reflow Hot Plate (new version)) I came across an even bigger 500W 200mm x 100mm hot plate. Unfortunately 3D printing a case for this heating element would exceed the size that my 3D printer is capable of. So this build uses a "off-the-shelf" ABS clam shell case.
Link to 400W version
Link to 200W version
Link to PCB version
Heating profilesThe issue with heating up Surface Mount Devices (SMD) is that if heated or cooled too quickly, potentially damage can occur to the device. Also the flux in the solder needs time to activate and any water vapor that may of seeped in needs time to evaporate. This usually requires a soak period for around 90 seconds at 150 degrees Celsius before raising the temperature to around 220 degrees Celsius to melt the solder paste. Thus manufacturers of these components provide heat profiles which you can sometimes obtain from their respective datasheet.
All printing is done using a 0.2mm layer height with no supports..
The first 3 layers of "500 - Text.stl" is printed using the front base color and switches to a contrasting color at the start of layer 4.
Heater & Fan AssemblyThe case is an 260mm ABS Grey/Black Instrument Case - (L)mm: 260, (W)mm: 190, (H)mm: 80 that was purchased from Rockby Electronics. Two inserts are 3D printed and screwed into the case using 8 x 6mm M4 screws. You will need to create a thread in the studs using a 4mm tap first. The left insert holds a 5A SSR-D3805HK relay purchased from Ali-Express. The right insert holds a 240VAC to 12VDC & 5VDC power supply that I had salvaged from an old VCR. The dual supply voltages are not mandatory as the 5VDC supply can be obtained from the 12V supply by adding a 78M05 regulator to the control circuit board.
One advantage of the solid state relay being mounted on the base plate is that there is no longer 240VAC on the front circuit board thus making the build inherently safer.
The mains wiring is as follows:
Phase is connected to terminals J, C and A
Neutral is connected to terminals H, D and E.
Relay/Heater is connected to terminals B and F.
I used X3-0612 6A barrier terminal strip blocks cut into 2 and 4 way connectors. They are held in place using M3 screws (2 x 12mm M3 screws and nuts and 1 x 10mm M3 screw).
When using barrier terminal connectors with high voltages or high currents, I strongly recommend using Ferrules when screwing in the cables. (See TO FERRULE OR NOT TO FERRULE).
Connect the power supply 240VAC inputs to the other side of C and D terminals and the heater element wires to the other side of E and F terminals. The terminal block A & B is screwed onto the output terminals of the solid state relay before inserting the relay into its mount. The 5VDC input was connected to the relay using a 3 pin Dupont connector with the middle pin removed.
I'm not sure where I obtained the fans from as they have been sitting in a box for years. They are 92mm x 92mm x 25mm 12V fans and are available from stores like element14. The fans are screwed to the studs using 8 x 30mm M4 screws. Again you will need to create a thread in the studs using a 4mm tap first. The fans had KF2510 plugs attached. I cut off one and spliced the red and black wires into the other fan's lead. Don't connect the white tachometer wires together if you are using a three wire fan. Just leave it unconnected.
Countersunk the four holes on the heating element so that if the PCB that is being heated is larger than the heating plate, the screw heads won't lift the PCB off the surface.
Use some Kapon tape to hold the 100K ohm NTC 3950 Thermistor to the underside of the hot plate.
The four 40mm + 6mm Female-Male M3 standoffs that hold the hot plate should either be all nylon construction or a mixture of brass and nylon. I used a 30mm brass standoff and a 10mm nylon standoff as I didn't have 40mm nylon standoffs on hand. Tap a 3mm thread into the mounting holes and add a M3 washer before screwing the standoffs into the left and right inserts.
Screw on the heating plate using 4 x 6mm M3 Flat Head screws.
PCB assemblyI have included the Eagle files in case you want to get the board commercially made or do as I did and make it yourself. I used the Toner method.
Start by adding the SMD components. Note: The 78M05 5V regulator is only required if you plan to derive the 5V supply from the 12V supply.
Add any links if your board is single sided
Add two 3-pin straight headers to the copper-side of the board for the fan and UPDI programmer. If you use a header on a single sided board, here is the method I use to add them. Place header on PCB with longer pin side down, solder pins, push black plastic down towards the PCB.
Add a 2-pin straight header to the copper-side of the board for the thermistor.
Add the a right-angle KF2510 2.54mm 3-pin male connectors for the power and a right-angle KF2510 2.54mm 2-pin male connector for the solid state relay.
Add the 220 ohm through-hole resistor.
Add the two 12x12mm tactile switches.
Add the female 2.54mm Dupont header for the display
Add the active buzzer. Note: it must be a active and not a passive buzzer.
Add the 220uF 10V capacitor (only really needed if you plan to add the 5V regulator).
3D print "500 - TFT Spacers.stl" and super glue them to the board.
3D print "500 - Button Extender 5mm.stl" and add the extenders to the buttons and push on the button tops.
Plug in the 1.8in TFT color display.
Next place the 3mm Red and Blue LEDs in their respective holes but don't solder them yet. Make sure they are correctly orientated.
Temporarily screw on the PCB to the front using 4 x M2 6mm screws.
Push the LEDs into their corresponding countersunk holes and solder them to the board. Cut off any access wire.
After the LEDs are soldered in place, remove the PCB board.
Attach "500 - Text.stl" to "500 - Front.stl" using either double-sided tape or glue.
Cut out a hole the size of the PCB along with two holes so that the "500 - Front.stl" sits flat on the case's front panel.
Add the thread using a M4 tap into the two studs on "500 - Front.stl".
Slide "500 - Mount.stl" over the two studs and screw in place using 2 x M4 10mm screws.
Mount the PCB using 4 x M2 6mm screws.
Now would be a good time to program the microprocessor - see next section.
Finally connect the power, relay, fan and thermistor connections to the PCB.
Software & programmingThe software makes use of the attached thermistor library by Miguel Angel Califa Urquiza.
The software can hold any number of heat curves. A plot is a series of six pairs of temperature and time values. The time is the number of seconds from the start to when that temperature should be reached. A temperature of zero will be considered the end of the heat curve and any other slots ignored.
Originally I had the tables in flash memory but because flash memory is very tight, I moved them to the static RAM (Data space). Actually this is no longer an issue because the processor has been upgraded from a ATtiny1614 with 16K Flash memory to a ATtiny3224 with 32K Flash memory.
If you add to the number of plots, don't forget to increase the NUMBER_OF_PLOTS definition and also append a reference to your new plot in the plots array.
#define TABLES_IN_DATA_SPACE
typedef struct {
int temp; //Temperature to reach
int period; //Seconds to reach temperature
} TARGET;
#define NUMBER_OF_PERIODS 6
#ifdef TABLES_IN_DATA_SPACE
const TARGET plot1[NUMBER_OF_PERIODS] = {{150,90},{150,180},{240,240},{240,260},{0,420},{0,0}};
const TARGET plot2[NUMBER_OF_PERIODS] = {{150,50},{180,140},{240,175},{240,185},{120,250},{0,350}};
const TARGET plot3[NUMBER_OF_PERIODS] = {{150,60},{200,120},{250,160},{250,190},{0,260},{0,0}};
#else
const TARGET plot1[NUMBER_OF_PERIODS] PROGMEM = {{150,90},{150,180},{240,240},{240,260},{0,420},{0,0}};
const TARGET plot2[NUMBER_OF_PERIODS] PROGMEM = {{150,50},{180,140},{240,175},{240,185},{120,250},{0,350}};
const TARGET plot3[NUMBER_OF_PERIODS] PROGMEM = {{150,60},{200,120},{250,160},{250,190},{0,260},{0,0}};
#endif
#define NUMBER_OF_PLOTS 3
const TARGET* plots[NUMBER_OF_PLOTS] = {plot1, plot2, plot3};
The other variable you may need to adjust is the MAX_PID_VALUE. If your hot plate can't reach the desired temperature, you can increase this value. It has a range of 0 to 255 and controls the maximum PWM ON period.
#define MAX_PID_VALUE 180 //Max PID value. You can change this.
Unlike the earlier ATtiny series such as the ATtiny85, the ATtiny1614 uses the RESET pin to program the CPU. To program it you need a UPDI programmer. I made one using a Arduino Nano. You can find complete build instructions at Create Your Own UPDI Programmer. It also contains the instructions for adding the megaTinyCore boards to your IDE.
Once the board has been installed in the IDE, select it from the Tools menu.
Select the ATtiny3224 board in your IDE
Select Board, chip, clock speed, COM port the Arduino Nano is connected and the programmer
The Programmer needs to be set to jtag2updi (megaTinyCore).
Open the sketch and upload it to the ATtiny3224.
Using the SMD hot plateThe unit is controlled by two buttons:
SELECT: When in STOPPED mode, it will select the heat curve to use. In PAUSED mode, it will abandon the current heat curve.
START: When in RUNNING mode, it will pause the at the current temperature in the heat curve and maintain that temperature until the START button is pressed again. In STOPPED mode, it will start the displayed heat curve from the beginning.
Comments