Tim's Hot Plate

16K18391

Intro: Tim's Hot Plate

I wanted a heating plate for soldering my PCBs with SMD components.

This is show you how I built a controller to control the temperature of cheep PTC heater.

I have done a boring video just to show that it works using a PTC element.

A PTC heater has different characteristics to the normal resistive heating element.

By request I have done an Addendum to the Instructable, that shows a PCB version I designed and I had made from PCBWay.

STEP 1: PTC Heater

There are many cheep PTC Heating Plates on the web for sale, so I went for a 300W one, it's dimensions are 9cm x 7cm. this is a nice size for the projects I do.

PTC heaters are very efficient, the advert stated, after about 30 seconds it will reach about 260 degree Celsius.

When you get one of these plates, you find it is not quite flat. Holding the flange in a clamp I was able to gently straighten plate whit my hands. (don't hit with a hammer, the internals are ceramic)The picture above is upside down, on the topside you can't see in this picture, the holes need countersinking.

What is PTC? Positive Temperature Coefficient

A PTC, or semiconductor, is a ceramic-based electrical component with temperature-dependent resistance that is used as a heating element. Its positive temperature coefficient allows electrical current to flow better at low temperatures than at high temperatures.

As the temperature rises, the PTC’s natural resistance increases while its current conductivity and power output decrease until a state of equilibrium is reached and the current can barely flow anymore. That’s the so-called PTC effect.

Thanks to their self-regulating characteristic, PTC heating elements cannot overheat, which makes this heating technology particularly safe and reliable.

Because the resistance of one of these types of heater is not constant, the control of the temperature cannot be done by changing the power voltage.

The only way to control the temperature is to:

  • turn it off when the required temperature is reached.
  • turn it back on when the temperature falls below the the required temperature.

Also as the resistance increases, there will be a maximum temperature this type of heater will reach.

STEP 2: Arduino NANO and Relay

Because the only way to control the PTC is by switching on and off I will be using a SSR (Solid State Relay) controlled by an Arduino NANO.

Because the Arduino NANO will not be doing much, only checking temperature and turning a relay on and off I will be using the AtMega168 version.

I have soldered leads direct to the power input of Arduino NANO, this will leave room for other components. This lead will connect to the Power Bus.

  • Note! This is the 5 volt line (VCC) for the Arduino NANO, make sure your power supply for the Arduino NANO is not higher that 5 volt.

The SSR will be a Omron G3MB-203P Module, it has 5V control and handles 2 Amp at 100 to 240 VAC.

This module has a resistive fuse, which may need bridging with this type of heater.

  • Remember we have no control over the resistance of a PTC element.

The hot plate was advertised at 300W, so W = vi, therefore Amps = 300 / 240v = 1.25A.

  • For those countries on a lower voltage, say 110v, may need the G3MB-203P or G3MB-205P version. 3 or 5 Amp versions. 300W / 110v = 2.7A, 400W / 110v = 3.6A

An alternative is the FQFER type of SSR. (Of the correct Amperage)

I have done different versions of my Arduino firmware, depending on which relay is used.

  • The first is controlled by a LOW Level Triger.
  • The latter is controlled by a HIGH Level Trigger.

STEP 3: K Type Thermocouple

Because of the high temperatures, I will be using a K type Thermocouple to get temperature readings.

I have gone for the cheapest as usual.

  • This comes with a sheath and a screw connector. I don't need the screw connector so I removed it.

Who thinks the blob on the end of the wires is the sensor bit?

  • This blob is just a weld, it is just joining the end of the two wires together.
  • A weld has to be used because of the high temperatures this thermocouple is used for.
  • If they were to be soldered together, the solder would melt at high temperature and the connection would fail.

It is the actual wires that create the voltage that is measured to determine the temperature.

So for those that have shortened these wires and thrown the offcuts away.

  • Big mistake.
  • You can make another thermal couple with the offcuts.

I will explain.

The two wires are made of different materials.

This is a K-Type, so:

  • One wire is probably made of Alumel (approximately 95% nickel, 2% aluminium, 2% manganese, and 1% silicon).
  • One wire is probably made of Chromel (approximately 90% nickel and 10% chromium).

Both wire need to be insulated from each other, but:

  • If you heat the two wires.
  • The same amount of heat on each wire.
  • The same length on each wire.

The two wires will act like a battery, the hotter the two wires are, the higher the voltage.

Try the the circuit shown with your offcuts and a voltmeter set to millivolts.

  • Just twist the ends together for this experiment.
  • Make sure you have one of each wire.

What happens is:

  • When the wire is heated, it excites electrons inside the wire, the hotter it is, the more electrons are excited.
  • The wires are made of different compositions so more electrons are excited in one wire than the other.
  • Because the wires are connected at one end, this creates a differential between the two.
  • The differential can be measured at the other open end of the wires as a voltage.

The voltage is small, so this is why we need a special device to measure the voltage and convert that voltage to a temperature.

I will be using a MAX6675 Thermocouple Temperature Sensor Module to measure voltage produced by the K type Thermocouple.

Be carful buying the MAX6675

  • There is also a MAX31855.
  • The MAX31855 has Max voltage of 4 volt on the logic pins.
  • The Arduino NANO has 5 volt logic pins.

This is why I use the MAX6675 it has Max 6 volt on the logic pins.

You will notice that the MAX6675 has T+ and T-, this is important.

  • As I mentioned the Thermocouple acts like a battery so it has a positive and a negative wire.
  • The MAX6675 needs to read the voltage the Thermocouple is producing the same way a voltmeter does.
  • Usually the Thermocouple has a red identification for the positive wire.

I have soldered connection wires direct to the MAX6675 Module with female DuPont connectors.

  • I have kept the power wires separate so that they connect to the Power Bus.
  • The data connector will go to the Arduino NANO.

Note!

  • When using a Thermocouple, always make sure the two wires are the same length.

STEP 4: Noise

Noise as in signal noise.

Because I will be using a transformer to get 5 volt to power the Arduino NANO.

  • There will be a lot of noise from the mains AC power.
  • Making it impossible to get a stable reading from the Thermocouple.
  • This is rectified by placing a 100uF capacitor to the negative side of the thermocouple and ground (GND).

The wire on the capacitor is about 100mm long.

STEP 5: Display and Control Knob

To view the temperature reading from the MAX6675 I am going to use a small OLED display.

  • I will be using a 0.96" OLED 128X64 I2C SSD1306
  • This will be connected to the Arduino NANO via the I2C.

To set the target temperature I will be using a rotary encoder with push button.

  • Normally I attach these to a PCB so that I can add de-bounce RC (Resistor capacitor) circuit to each switch, but in this case I will be adding the resistors and capacitors to the actual encoder to save on space.

I have attached a PDF of the circuit.

  • Tims_Rotory_Encoder (G-V-A-B-S).pdf

I have made a plastic Cover on my 3D printer to mount these.

I have attached a STL of the Cover.

  • Cover.stl

I have soldered cables direct to the components:

  • With the Power Cables kept separate so that they will plug into the Power Bus.
  • The other cables connect to the Arduino NANO.

The encoder is fixed in place:

  • With it's own nut and washer.

The OLED Display is fixed in place:

  • With four M1.7x6mm self tapping screws.
  • Four plastic washers are used so that the screws do not stick out the other side.

I have attached an STL File for the washers:

  • M2_Washer_x_1.4_x_06.stl

STEP 6: Power for the Arduino

To power the Arduino NANO from the mains, a small voltage transformer is needed to get 5 volt.

I used the internals from an old Wall-Wart USB power supply.

  • But something like I have shown will do.
  • Dimensions are only:
  • Length = 23.5mm
  • Width = 18.1mm
  • Height = 13.5mm.
  • Search eBay for: Mini AC-DC Power Supply.

Solder about 150mm of cable to the input and output.

STEP 7: Very Hot Waning

I will also be adding a 5mm red LED that lights when the hot plate is to hot to touch.

I have put a Female Dupont connecter to the positive side of the LED so it can connect direct to one of the pins on the Arduino NANO. The other end of the LED has a length of wire which will be connected to the common (DC-) on the relay.

STEP 8: The Circuit

I have done a Fritzing to show how all the components are wired together.

  • I have attached the FFZ - Tims_Hot_Plate.fzz
  • Also attached a PDF of the BB - Tims_Hot_Plate_bb.pdf
  • Also attached a PDF of the Circuit - Tims_Hot_Plate_schem.pdf

STEP 9: The Base

The base I made from a piece of 3mm Thick hardboard.

  • Width 108mm
  • Length 142mm.

This it to hold every thing together as one unit.

There are four 2mm diameter holes and five 4mm diameter holes. (Note! the drawings show radius)

STEP 10: Hot Bed Supports

The supports for the Hot Plate I have made from two pieces of wood.

  • Width 30mm
  • Height 20mm
  • Length 100mm.

Each piece has two holes drilled all the way through 2.6mm to take 3mm screws.

These two blocks are fixed to the base using four M3 Self tapping screws.

STEP 11: DC Power

Next it's time to fit the AC-DC Power Supply Unit to power the the Arduino NANO from the mains.

At this time solder on the input and output cables, both about 150mm long.

The PSU can just be glued in place to the Base. or use double side foam sticky pads, anything that holds it in place will do.

The Red and Black is 5 volt coming out the front.

The Blue and Brown is mains coming out the back.

STEP 12: 5 Volt Bus

As there are going to be a few components that require power I have soldered two rows of Header Pins to the end of the 5 volt cable. One Black, one Red.

Each row of Headers has 6 pins, one extra just in case.

This makes a Power Bus for all the components to plug into.

All the Black pins are soldered together with copper wire and connected to the Negative lead.

All the Red pins are soldered together with copper wire and connected to the Positive lead.

The back side of the headers where it is all soldered together is insulated using UV Resin. (or cheap Ultra Violet Fingernail Lacquer)

This makes it easy to connect power to all the components.

STEP 13: Heat Insulation

Next is to add some insulation, this is two part.

The first part is is a piece of reflective card. What I have used is a lid of a foil cooking tray, make sure it's a shiny lid.

  • The drawing shows the dimensions.

On top of this I have added some cotton wool.

  • Make sure it is pure cotton, if there is a percentage of polyester, it will melt.
  • Cotton will just get a little charred over time.

This is all that happens to the cotton, but I have found it a good insulator.

You could use some glass fibre, but as I am not sealing it in, I would just end up with itchy skin every time I touched it.

STEP 14: Thermocouple

I decided to drill a little hole (2mm) for the thermocouple to sit in.

  • As I have mentioned the little blob on the end of the wires is not the actual sensor.
  • It will conduct heat to the wires of what ever it is touching.

I drilled the hole on the edge, away from the ceramic heater inside the aluminium.

I shortened the Thermocouple before gluing it into the hole.

  • The overall length is about 200mm long.

I glued the blob inside the hole with some UV resin. (or cheap Ultra Violet Fingernail Lacquer)

I have also added four stainless steel M3 countersink set screws x 30mm long complete with nuts.

STEP 15: Hot Plate

I then fitted the Hot Plate to the wood supports.

I screwed the Set Screws into the wood until the top of the screw head was 20mm up off the wood.

I then tightened the nuts under the Hot Plate to hold in place.

I don't show it in the image (can't draw cotton wool), but the cotton wool insulation should be between the Hot Plate and the Shiny Card.

STEP 16: Component Mount

I have made some some parts out of plastic on my 3D printer.

Can't attached the STL of the Component Support (file must be under 25Mb).

If you don't have a 3D printer then I leave it to you to find a suitable box to place all the components in.

This part is a Plastic Base for all the components to be mounted on.

This is fitted with four M1.7x6mm self tapping screws from underneath.

STEP 17: Mains Lead

I'll start from the back with the mains lead, here a 3 Amp terminal block is required to connect all the mains wires together.

  • This is held in place with an M1.7x10mm self taping screw.

The Mains Lead is held in place with a clamp, using two M1.7x10mm self tapping screws.

I have attached a STL of the Cable Clamp.

  • Cable_Clamp.stl

The wires are connected to the Terminal Block as shown.

STEP 18: SSR (Solid State Relay) Module

The SSR Module is held in place with four M1.7x6mm self tapping screws and four plastic washers.

The wires from the Mains and the Heater fix in the two terminals on the right (SW1).

There is a cover shown in the next photo, this is held in place with two M1.7x6mm self tapping screws.

I have attached a STL of the Cable Cover.

  • Cable_Cover.stl

The SSR Module will require three cables approximately 100mm long.

Two for power DC+ and DC- with a double female DuPont connecter that will be connected to the Power Bus.

One for the trigger (CH1) with a single female DuPont connecter which will connect to the Arduino NANO.

The loose wire from the capacitor and the LED connect to the negative (DC-) of the SSR Module also.

Note! the FQFER type of SSR should also fit, but does not require the Power DC+ cable.

STEP 19: Arduino and MAX6675

After fitting the cover over the mains cables.

The Arduino NANO and the MAX6675 can be fitted. The back of the Arduino NANO fits under lip on the plastic, the front of the Arduino NANO is held in place with a M1.7x6mm self tapping screw.

The MAX6675 is held at the back by a lip on the plastic, the front should just push down and clip into place under anther small lip. push the MAX6675 up against the Arduino NANO so the terminals line up with the plastic recesses.

STEP 20: Connections

Hopefully every thing now has got DuPont Plugs on the end of all the wires, with the exception of the Thermocouple and the Capacitor.

Start by fixing the Red Wire of the Thermocouple the the Positive Terminal (T+) of the MAX6675.

Then fit the Black Wire of the Thermocouple and the Capacitor to the Negative Terminal (T-) of the MAX6675.

Now it should be a mater of plugging everything onto the Arduino NANO and the Power Bus.

  • The sketch shows which pins of the Arduino NANO the components are connected to.

All the Power to the Power Bus.

I pushed the Power Bus in-between the two rows of headers on the Arduino NANO.

The LED is held in place with just the connector to the Arduino NANO.

STEP 21: Cover

Once all connections are done, carefully arrange any wires as need to fit the Cover, using five M1.7x6mm self tapping screws.

STEP 22: Knob

Fit the knob to the Encoder.

I have attached a STL of the Knob.

  • Knob.stl

STEP 23: Firmware

I have put all versions of the the firmware into a zip file.

In this zip file there is also a copy of XLoader for installing the HEX file of your choice.

Here is the ZIP File: Hot_Plate_Firm.zip

  • The firmware was updated Sept, 2022
  • If you made this before then you may want to update the firmware.

The choices are:

For the Arduino NANO AtMega168:

  • Tims_Hot_Plate_NB_G3MB_168.hex = No bootloader for G3MB Solid State relay. (Low Level Trigger).
  • Tims_Hot_Plate_NB_ALT_168.hex = No bootloader for Alternate Solid State relay. (High Level Trigger).

I have a feeling there is an issue between the AtMega168 and the XLoader, best to use an AtMega328P.

For the Arduino NANO AtMega328P:

  • Tims_Hot_Plate_NB_G3MB_328P.hex = No bootloader for G3MB Solid State relay. (Low Level Trigger).
  • Tims_Hot_Plate_NB_ALT_328P.hex = No bootloader for Alternate Solid State relay. (High Level Trigger).

Note!

I have just come aware that XLoader only works with 328P if the Nano has the old Bootloader installed on it.

  • Old Arduino NANO
  • Chinese made copies.

If you would like a different version for a different Arduino Architectures, just ask.

STEP 24: Plug It In

Provided every thing has gone to plan, It is ready to be plugged into the mains.

STEP 25: Setting the Temperature

To set the Temperature, just dial-in the Target Temperature rotating the knob.

To quickly turn off the Temperature, set the Temperature to Zero, just push in the knob.

A Tip on achieving a Target Temperature quickly. (High Temperatures)

The control of the Temperature is done using a PID algorithm, this type of heater (PTC) heats up quickly, it wants to get to it's max temperature as quick as it can.

If you set the Target Temperature your require straight away, it will tend to over shoot, and take quite a while to settle down. (This heater cools down quite slowly)

The best method is to initially set the Temperature 10 degrees less than what you want.

When it over shoots this Initial Temperature, it will start to cool down to the Initial temperature.

When it starts to cool down set the Target Temperature to the value you want.

STEP 26: First Use


I have done another relatively boring video showing me soldering a PCB I have made with SMD components.

This is the first time I soldered SMD components using this heater with Temperature control, I had no idea what temperature I should be setting it at, it was trial and error time, haha.

STEP 27: Addendum [Let's Go Pro]

I am so pleased there has been so much interest in this project.

Also by request I thought it would be nice to make a dedicated PCB to control the PTC Hot Plate.

The only issue I had was the PSU, I have no clue what make or where to get the transformer used in the in the PSU. As these PSU are so cheep anyways, it is probably cheaper to by them as is.

So I have designed the PCB to take this type of PSU. Also I have left the Arduino as a plugin.

I have left the Display as a plugin also, this gives the option to have the display on cables so that it can have a custom position.

I have added a header so that the Encoder Switch can be connected via cables and have a custom position.

Like with most of my projects using the Arduino, if there are any pins not used, I have put a header for four of these just in case I think of something later.

If anyone wants to make this PCB version, it is very easy to get the PCB, just click the link PCBWay Tim_s_PTC_Hot_Plate_Controller

This takes you to the place where I have placed all the files to make this PCB. All you have to do is and to cart and order.

In the UK we have Fused Mains Plugs, so the above PCB will be fine for me.

Some have shown concern, So I have made a version with a Fuse built in, This version can be found here: PCBWay_Tim_s_PTC_Hot_Plate_Controller_[Fused Version]

STEP 28: Designing the PCB

If I was a professional Circuit Designer and designed circuit every day, I would probably use Autodesk Eagle.

Included with a Fusion 360 for personal use subscription, EAGLE free download is a limited version for hobbyists including two schematic sheets, two signal layers and an 80 cm2 (12.4in2) board area.

Um, what's the square root? about 8.9cm x 8.9cm, more than enough for small projects like this one.

Don't know why 80 cm2 because most PCB manufactures like PCBWay offer a cheep prototyping deal for projects less than 100mm X 100mm. ($5.00) I think Autodesk should bump up the size to 100cm2, I think that would make a big difference.

I use KiCAD, it is open source and version 6 has recently been released.

If you use KiCad, I recommend if you haven't yet, to get version 6. Note it installs separate to previous versions, there has been some big changes.

KiCAD now has a plugin manager, I recommend the PCBWay Plugin, it makes ordering a PCB simple with just one click.

For those that have KiCad, and would like to check/edit my PCB, I have put the KiCAD files (ver. 6) on my Google Drive: Tims_Hot_Plate_PCB_KiCad.zip

STEP 29: BOM

Thought I would do a Bill of Quantities (BOM), I have attached a CSV file created with KiCAD.

All SMDs are 0805 Imperial 2012 Metric unless noted otherwise.

Resistors

  • R1, R10 = 1k.
  • R2 = 150R.
  • R3, R4, R5, R6, R7, R8, R9 = 10k.
  • R11, R12, R13 = 270R.

Capacitors

  • C1 = 1uF (Tantalum 3216) I chose this because I used an electrolytic one before, I don't think the type matters. Same as C2 will probably do.
  • C2 = 1uF.
  • C3, C4, C5 = 100nF.

MAX6675

  • U1 = MAX6675 (SO-8 3.9x4.9mm P1.27mm)

Diode/LEDs

  • D1 = Green LED
  • D2 = Red LED (Through Hole 5mm Dia.)
  • D3 = Blue LED
  • D4 = Schottky (SMA) This is just for reverse polarity protection, not necessary if using the PSU module, can be bridged.

Transistor

  • Q1 = Basic PNP (SOT23 Base, Collector, Emitter).

Solid State Relay (SSR)

  • U2 = G3MB-? (SIP) Depending on what Amperage you need, 202P = 2A, 203P = 3A, 205P = 5A.

Rotary Encoder

  • SW1 = Standard Rotary Encoder as sown previously (Through Hole).

Connectors/Headers

  • J1, J4 = 2 pin Screw Terminal (Through Hole Pin spacing = 5mm) I think 0.2in (5.08mm) will be ok.
  • J2 = 4 pin 2.54mm header. Male/Female, depends what you put on the display module.
  • J3 = 3 pin Screw Terminal (Through Hole Pin spacing = 5mm) I think 0.2in (5.08mm) will be ok.
  • J5 = 4 pin 2.54mm header. Male/Female, depends if you use it and what you put on the cable used for making the encoder remote.
  • J6 = 4 pin 2.54mm header Male. Optional. This is in case of future upgrades.

Arduino

  • A1 = Arduino NANO 168. Will require Male and female headers.

Power Supply Unit (PSU)

  • Mini ac-dc power supply See Step 32, I have designed the board to take a specific type of PSU.
  • I have designed the board so other types can be connected by cable.

STEP 30: PCB Received

I made no urgency for the PCBs when I ordered them, I have received them in less than a week, that's from PCBWay to North of England.

They where vacuumed sealed and came in a box with foam packing.

They look just as drawn in KiCAD.

I do love working with professionally made PCBs, having PCBs with a solder mask makes soldering components to them so much better. With my home made PCBs I have to be carful not to bridge close tracks.

STEP 31: Add the SMD Components


You could say this is the chicken before the egg. As I am making a PCB to control the PTC hot plate I am using in my First version of "Tim's Hot Plate" to solder the components.

I didn't get a solder paste stencil for this PCB, I felt there where not enough components to warrant one.

With this one I decided to try out the Solder paste that comes in a syringe. MECHANIC XG-Z40 Liquid Solder.

The Needle/Nozzle that came with it had a bore size of 1.5mm, I think this was a bit big. I think I will look for some with a smaller size.

Before mounting the Components, I sort them all out into an old pill tray.

I use a printout of the component locations to aid placing the devices on the PCB.

I have tried to keep the video as short.

STEP 32: Add the Through Hole Components


I am sure anyone making this type of project should know how to solder in a Through Hole Component, so I am just making a few points. All the components are identified with an ID mark on the PCB.

I have designed a simple case and I want the "Too Hot To Touch" warning LED to fit through the lid. To do this the LED needs fitting quite high. As a guide I have made the underside of the LED flush with the top of the NANO.

I have designed the PCB to take the PSU shown, I have made it so that the PSU can be soldered direct to the PCB.

The Display is connected using male and female headers, there is a printed support for display to hold it against the lid.

I have put Earth slots should anyone want to go overboard and add a metal Earth cage over the live area.

STEP 33: Case

Now that I have put all the components on one PCB, the Case is quite simple.

The box STL is over 25Mb (cannot attach here) so I have made a zip of all the Files on my Google Drive: Tims_Hot_Plate_PCB_Prints.zip

  • Box.stl
  • Cable_Clamp.stl
  • OLED_Support.stl (This goes under the display to hold it level under the lid.)
  • Lid.stl
  • PSU_Cover.stl
  • Knob.stl

It also means, if you don't have a 3D printer, an off-the-shelf box can be used.

All you would have to do, is cut a few holes. I have done a DXF file with dimensions to help.

I have designed the PCB in a way that both the Display and Encoder can be attached via cables and header connecters, this way the Display and Encoder can be fixed remotely. The encoder would not require the resistors and capacitors like the previous version as they are onboard the PCB.

STEP 34: In the Box

I just used Four M1.7x6mm Self Tap Screws to hold the PCB in place, there is a fifth hole, optional.

The Mains Cable clamp uses Two M1.7x10mm Self Tap Screws.

Where the wires of the capacitor come through on the PSU may need trimming flush.

A good tip for the end of K-Type sensor wires is to make them a Zig-Zag shape, I feel it gives a better connection.

I'm happy this works fine, but I don't have a second PTC Hot Plate yet, so For now I'm just going to close up the case.

I just used Four M1.7x6mm Self Tap Screws to hold the Lid in place.

Two M1.7x6mm Self Tap Screws to hold the PSU Cover on.

The Knob is a push fit.

STEP 35: Addendum

Winning with this Instructable enabled me to get a Temperature Laser Gun.

This meant I was able to check the accuracy of the temperature readings shown on the display.

There was a quite a bit of inaccuracy, luckily the inaccuracy was linear.

  • I think this is due to the addition of a Capacitor on the of the Thermocouple wire to stop the noise from the mains.

As of September 2022 I have updated the firmware to show the correct temperature.

I have made a chart to show the readings I now get.

  • The PCB reading are low as expected.
  • I have shown the PCB readings to give you an idea of the difference between the actual plate temperature and items placed on top of it.

The max temperature is now in line with its advertised temperature.

STEP 36: Addendum 2

For those that want to try something more user interactable:

60 Comments

I like the project but the values in the CSV BOM do not match the values on your schematic.

I have looked at my files and done a BOM zip of both versions of the PCB, that is fused and not fused.

There are HTML versions also.

The Instructable is two Instructables in one.

The first part, I make it out of modules. Uses Modules bought from the web,

Then by request, I did a PCB version. Step 27: Addendum [Let's Go Pro]. onwards.

  • U1 = MAX6675 (SO-8 3.9x4.9mm P1.27mm), see step 29.

Re: Power Supply. See Step 23. Sorry it is my Dyslexia, should be: See Step 32. I will correct this.

Here are a few links:

Hope this makes it clearer for you.

Actually both PCBWay at https://www.pcbway.com/project/shareproject/Tim_s_PTC_Hot_Plate_Controller_06de6518.html

and this one have the same CSV file but your schematic here shows different values than the BOM and quite a difference.


Also you mention in step 23 you specified the power supply unit but I see no spec there. Did you mean step 5 or step 11? Also I do not see an actual spec for the power supply and I do not see any WS-DC12003 that it looks like you used. Also your instructions here call for a MAX6675 module but the board is laid out for a bare chip MAX6675 thermocouple controller.

My apologies.

Is it the one I have here, or the one I uploaded to PCBWay?

It's been a while now, if I remember I also did a fused version also.

Hi Tim, it is a great project that I like it. You have a great details of each steps that I can follow easily. I have built the Pro version with the PCB but I having some problem of trigger the SSR of G3MB202P or FQFER type of SSR, I use S8050 SOT23 for Q_PNP.
With refer to your schmatic of Pro version, I find the voltage of pin 3 of SSR is not having enough high voltage to trigger FQFER SSR (3V to 32VDC trigger voltage) that is the trigger voltage is about 1.8V when D5 is high (5V). The voltage is dropped when pin 3 of SSR is connected, since when I disconnect the pin 3 of SSR then the voltage of Q1 pin 3 is having voltage of about 3.3V.
I resolved this issue by direct jump the D5 of A1 Nano 168 (removed Q-PNP leaving R8 and R9 in PCB) to pin 3 of SSR then it work great.
I would like to know the root cause of why the Q1 is over loaded casing a voltage drop below 3V that it cannot trigger the SSR. Is S8050 is not having enough current to drive the SSR? I have try S9012 still having the same issue. Any Q1 is subject to use or do I need to change R8 and R9 value?
Any comment for my issue?

Thanks a lot
Alan
Are you using the correct firmware?
There are two types of firmware:
One of the firmware has D5 LOW for on. (goes through Q1)
One of the firmware has D5 HIGH for on. (Connects Direct)

See Step 23
Removing Q1 from the circuit means that you are using the Firmware for the Alternate SSR.
(Please check I could have sliped up)

Pin 3 of Q1 should be HIGH if D5 of the NANO is not pulling it LOW.

I kept Q1 in the circuit of the PCB version, because it was a proven build using the modules.
Hi Tim, Thanks for your quick response to my questions.

After I reviewed your comments, I recognised my problems is caused by the followings mistakes I have done.


1. I use S8050 is NPN type not PNP with firmware is NB_G3MB_168 (D5 LOW for ON goes through Q1)

2. I use S9012 is PNP type with firmware is NB_ALT_328P (D5 HIGH for ON goes through Q1)

3. I use S9012 and FOTEK SSR-40A with firmware NB_ALT_328P (D5 HIGH for ON goes through Q1,) it is behave strange

4. I removed Q1 only and jump D5 direct to G3MB202P pin 3 with firmware NB_ALT_328P.hex D5 HIGH for on. (Connects Direct) but the hot plate was not turn on as D5 go high level.

I removed Q1 and direct connected D5 to FOTEK pin 3 with firmware NB_ALT_328P, PIN 3 of SSR (Q1 pin3) It works as expected and the pin 3 voltage of SSR is from 0 to +4.7V

Today, I reviewed your comments then I install S9012 back to circuit and use firmware NB_G3MB_168 (D5 LOW for ON goes through Q1), it worked as expected.

But I found the voltage of Pin 3 of SSR G3MB or pin 3 of FOTEK ( I connected two SSR external for testing) is from -1.3V to +4.8V. Is this voltage level is correct ? I am expected the voltage should be from 0V to +4.8V.

Now, I resumed Q1 and G3MB202P on the PCB as the original designed with NB_G3MB_168.hex firmware, it works great !!

I attached my circuit that what I did for your reference.

Simply specking, If I use external SSR of FOTEK SSR-40A or G3MB SSR models I need to remove Q1 and use firmware ALT version.

If I use Q1 with G3MB202P in the PCB then I need to use firmware G3MB (D5 LOW for ON to Q1) version.

One more issue, I flashed firmware WB_G3MB_168 on Nano 168 after power reset 168 is not boot up and I cannot flash the Nano again. It is due to the serial port is always busy. Do you know why and how to resolve the issue that I can refresh it again?

Thanks,

Alan
With regards Q1.
The two resistors R8 and R9 I just copied from the module.
The module worked in that version so I did not want to change anything.
Like most modules/things from China, I think they have a mountain of 10k resistors.
If I had designed it I would have put a low resistor for R9, (something below 1k) I think this is to make sure the current is low on the microcontroller pin but still enough for the Base.
R8 I would have made a lot higher, (maybe a meg) this is to top it from floating in between states.
What I used for Q1 was a S8550 (PNP), this is the pair to S8050 (NPN) you used.

The HEX files, I just use Arduinos IDE to create them.
I don't have every microcontroller to test them on.
I did have 168, so I tried it.
I am now in the same state as you, I will remove the ones with Bootloader.
I do not know why it does not work.
If I manage to fix mine I will let you know.

Hi Tim,
With regards Q1, I agree with you. I have bought the High level and Low level G3MB-202P SSR modules for this project. During the trouble shooting of my issue I have reviewed the two versions SSR modules that I bought from China. The two resistors R8 and R9 is 10K and the Q is 2TY S8550 PNP for Low Level Trigger module and J3Y S8050 NPN for High Level Trigger module. The resistors connection is a bit different for the trigger level asinged.
Since I do not have S8550 so I use S9012 for the replacement.
May be I can try of your suggestion to change the value of R8 and R9 to see the result. When I completed I will let you know the result.
Thanks a lot !! Have a nice day!!
I am sorry about the bootloader version, I have removed them.
I assumed the Arduino IDE or the XLoader worked is they should, don't know which to blame, who is me I guess.
I am having no luck with my brick, but if I do come up with a solution I will let you know.
Sorry it was you that got the short straw.
Hi Tim,
It is fine for me ! Don't feel guilty! It is good to know there is a bug on the firmware version. I also try to recover my brick but it still not work.
Keep going on your great jobs, I am looking forward of all your projects in the future.
I also learn a lot from your project.
Thankyou for your understanding.
I also put a note about the 328.
Sent you a mail.
Thanks for your explainatioin about the 168 issue. I also bought 168 and 328 from China at the same time for this project. Actually the price is not much different between 168 and 328, I guess no one buy 168 now, I bought 168 due to I do not have 168 on hand and it is a bit cheaper then 328 for this simple software as your comment. In fact nobody know what version of boot loader the supplier provided.
I bought 168s at a time when they where a lot cheaper, before covid.
I finally resurrected the 168.
I think the XLoader corrupted the boot sector on the 168.
The HEX with bootloader is fine, hope you still have it, I have remove it from the zip.
Here is the solution:
You need a programmer for the ICSP pins. Or another Arduino Arduino as ISP and Arduino Bootloaders | Arduino Documentation | Arduino Documentation
I downloaded AVRDUDE from here: Releases mariusgreuel/avrdude (github.com)
I wanted it a fresh and latest in a folder I could get to easy when in command prompt (DOS) window.
Opened a Command Prompt window, navigated to where I unzipped AVRDUDE.
This is the command, you will need to modify path to "Tims_Hot_Plate_WB_G3MB_168.hex" the full path.(E=start hex=end)
If you don't have a USBASP programmer like me and are using another Arduino then "usbasp" needs changing for what you are using.
I think it will be "arduino" no quotes, lowercase, for an Arduino.

avrdude -F -c usbasp -p m168 -U flash:w:E:\Hot_Plate_Firm\Tims_Hot_Plate_WB_G3MB_168.hex:i

I hope that all made sense, let me know if need more.
Hi Tim,
It is good to hear that you get back the 168. I have try to use Arduino as ISP and burn boot loader but not success two days ago, it is due to some errors of connection failed or signature issue, I forgot the exact error messages.

I will try the AVRDUDE method to fix my 168 but I am afraid that i do not know the exact procedures to do it, could you show me the full details of the steps?

I do not have ISP downloader, so can I use Arduino UNO for the repair process?
Is it just connect UNO to 168 as "Arduino as ISP" and UNO need to program as Arduino ISP programmer first?

For you message of
"Opened a Command Prompt window, navigated to where I unzipped AVRDUDE.
This is the command, you will need to modify path to Opened a Command Prompt window, navigated to where I unzipped AVRDUDE.
This is the command, you will need to modify path to "Tims_Hot_Plate_WB_G3MB_168.hex" the full path.(E=start hex=end) the full path.(E=start hex=end) "

I will use 7 zip to unzip to the folder named AVRDUDE then the next step I am not sure your meaning of (E=start hex=end)?

I have the firmware "Tims_Hot_Plate_WB_G3MB_168.hex" or can I flash 168 with NB no boot loader version?

Could you send me a more details of step by step for try?

Thanks a lot!



Ok this link shows you how to wire up the UNO (Programmer) to NANO (Target)Arduino as ISP and Arduino Bootloaders | Arduino Documentation | Arduino Documentation
Also if you read through the documentation (although I think there is a bit missing), it will help with my instruction here.
You don't need LEDs.
Have the Arduino IDE open on your computer. (I have version 1.8.??)
After wiring it up. Plug in the USB cable and make a note of the COM Port Number it uses.

To Program the UNO as a Programmer:
Go Tools and set as follows:
Board = UNO.
Port = As you noted when you plugged in the USB.

Go to File => Examples => 11.ArduinoISP => ArduinoISP
This will open a new window.
No need to change anything, the default should be what we want.
Upload to the UNO.

The Arduino UNO should now be a programmer.

To get a copy of the latest AVRDUDE.
Go to: Releases mariusgreuel/avrdude (github.com)
Download the version for your machine.Make a new folder on you C Drive called AVRDUDE.
Unzip the 3 files in the zip file into this folder.
So inside the folder AVRDUE you should have:
  • avrdude.conf
  • avrdude.exe (you may not see *.exe depends on your settings)
  • avrdude.pdb
Copy Tims_Hot_Plate_WB_G3MB_168.hex to this folder also to make it easier.

To get command prompt.
Click Windows Start button, then type on your keyboard: command Prompt.
You should have an option for Command Prompt Application. click it.
You should have a command prompt window.

Set correct path in Command Prompt Window.
If you have something like:
C:\Users\your name>Then type:
CD ..That's "C" "D" "space" "dot" "dot"
And press enter.
Do this until it looks like this:
C:\>Now type CD AVRDUE
There is a space after CD.
Press entre.
It should look like this:
C:\AVRDUE>
Program the 168.
Below change COM7 to the port number you noted.
Then all you should have to do is type the following in the Command Prompt Window and press enter.
You can copy and paste.

avrdude -F -c arduino -P COM7 -b 19200 -p m168 -U flash:w:C:\AVRDUDE\Tims_Hot_Plate_WB_G3MB_168.hex:i

Test.
I don't think you will be able to be used as before with the Arduino IDE.
But it should now be programmed to use for the Hot Plate.
To test connect the Display and add power to display and 168.

I hope this works for you.
I don't see why it shouldn't, the only difference is I used a usbasp Programmer.
Hi Tim,
Thanks for your details steps of the resolution, I can recover my brick 168 and I can it on Hot plate and another Arduino program.
Thanks a lot!!

By the way I also found an issue on the hot plate temperature control that is the MAX6675 is reported higher temperature then my external 2 temperature monitors which I use to confirm the hot plate actual temperature.

1. At room temperature about 28 to 30C, I tide the 3 temperature sensors together to confirm all 3 sensors are sensing at the same spot. At this moment all 3 temperature sensors report almost the same temperature about 30C.
2. I insert the 3 temperature sensors into the hot plate inside, when I started to set the hot plate temperature to over 50C, the 2 external temperature monitors reported the same temperature but the MAX6675 temperature is much higher then the others 2 sensor.
3. When I set the heater temperature to over 300c than the MAX6675 is much higher than the 2 external temperature sensors almost having 60c of different.
4. Use an IR thermal temperature meter to measure the hot plate surface temperature to confirm the hot plate actual temperature generated.
5. The hot plate set to 300c and locked at about 300c but the 2 external temperature meters show only 240c and the IR thermal meter shown 200c.
I have try to change all K-type sensors but it still have the same result, so I think there is the issue on the MAX6675 sensing problem.

Do you have any comments on the issue? It looks like the MAX6675 is reported the temperature is too high than the actual temperature generated.

I have attached the photo for your reference.

I am glad to hear you was also able to recover you brick.
I now have a laser temperature gun (thank you judges).
I think the difference in temperature could be due to the addition of the capacitor to one of the thermocouple wires. This is needed to remove noise from the mains.
I think there could be room for experimenting with this capacitor. "C1".
Did you use the ceramic or electrolyte type?
For now lets keep it as it is.
I am getting the same sort of results. I am using my Module version with an electrolyte type.
I thought I was getting a good deal with the heater when I bought it, it was advertised at 270 degrees, I thought I was getting more. Apparently I got what I pay for, ha.
That aside, the temperature is relative, as long as it is adjustable that is what counts, saying that it should be correct if it can made to be.
I have done some tests at set settings on the display.
I wait until the temperature settles.
Also my temperature gun has adjustable "Radiance" I am leaving it at 0.95 and have put a blank piece of PCB copper side down on the hot Plate. This will be just for reference.
The temperature gun also has a probe attachment, This is the reading I will take as being the one to use, as it will be inserted inside the end of the hot plate.
If you could do the same at the same settings.
If your results are the same or even close, I will try and do some alterations to the code to take the results into account.
Results:
Setting, Laser, Probe.
60, 49.8, 51.7
100, 77.2, 85.5
140, 105.7, 116.8
180, 131.1, 148.0
220, 160.7, 180.7
260, 189.3, 213.7
300, 212.6, 243.9

The result I get look proportional, so if you get similar results, then we can say that it will be repeatable, and working in the results to the code, would be the same for all.
Without having the right tools at the time I first made this. I was not able to check.
Hi Tim,
Thanks for your great analyse !! I guess your outcome data is same as me in my 1st checking. We are in the same spot.

My C1 is small in size ceramics SMD type.
Do you suggest to change it to 1.0UF or 2.2uF tantalum captor type? I got some of 2.2uF and 1.0uF Tantalum SMD type but 1.0uF is much bigger then 0850 size.

I will do the same process again in more details for your analyse with the current setup of PCB.

1. To confirm my 600W 260C max hot plate temperature which I bought it from China. A spare PCB will be put on the surface for reference checking.
- Power on Hot plate with 220Vac. only without 168 hotplate controller attached
- Compare the MAX6675 probe with external temperature monitor / IR gun
2. To confirm the hotplate 168 controller temperature accuracy
- preset 4 sets of temperature setting on hotplate and measure the internal and surface temperatures
3. Export the result temperatures data for analyse
4. Repeat the same process with external MAX6675 module that I bought from China same as yours with external temperature probes.

I will let you know my outcome data once I completed in this few days.


leave the capacitor as it is.
If your temperature readings match mine, then I know it makes no difference.
Can you confirm you get the same temperatures as me.
If so, I will start modifying the code.
More Comments