DIY Warmer Pad


Winters can be too cold sometimes. So much so, that you make your body shiver in order to make muscular activity and produce heat. In order to stay warm in winter, I made a warmer pad that is easy to make. This build makes use of Peltier modules which are popularly used to make DIY refrigerators.
One might think Peltier modules are inefficient in terms of heating compared to resistive heating. For which, I had done a testing where I attached a TEC1-12705 Peltier module on a 200 mm x 200 mm x 1.5 mm aluminium sheet. With 41 W of power, it took 1 minute and 8 seconds to heat up the sheet from ambient temperature (23ºC) to 40ºC with the Peltier module. With the resistive heater (made by converting an induction heater coil to a resistive one), it took 1 minute and 3 seconds to do the same. Though the resistive heater seems to take the lead, it does not have a surface to dissipate the heat unlike the Peltier modules, making it easier to heat up on the resistive heater than the Peltier one. This made me conclude that Peltier heating is efficient.
Efficiency is important as I am running from a battery source.
Features of the warmer pad :
Up to 50ºC heating
Uses Peltier modules to deliver efficient heating
0.96 inch OLED display to show current temperature and target temperature
Supplies


I used the following components in order to build the warmer pad:
Components:
TEC1-12706 - The TEC1-12706 is the most common peltier module. Another advantage is that it is the one that has the lowest COP rating. COP is the cooling coefficient of the module. The higher it is, the lesser the wasted heat is produced. The TEC1-12706 has a maximum COP of 0.57. A TEC1-12703 module has a maximum COP of 0.7. This means 57% of the applied power is converted to useful cooling. Wheras the rest is outputted as heat. Since we are using the peltier module for heating, the value is the inverse. That is, the TEC1-12706 has a maximum heating of 70%, assuming a COP of 0.3. In the end, I had used two of those in parallel to heat things up faster.
N channel logic level MOSFET - You can use any N channel logic level MOSFET, I advise choose one with atleast double the current required current of the module, which is 12 A. I used IRF540N, which has a maximum current of 33 A, which is more than enough. It has a threshold voltage of 4 V. This means that the MOSFET would be fully on at 4 V. It comes in a TO220 package, which is the most common MOSFET package.
TO220 heatsink - Even though we only use 18% of the MOSFET's maximum power, there is still a drain to source resistance that causes the MOSFET to heat up, which has to be dissipated. I used a common one with an M3 screw.
LM2596 module - Since the Peltier modules operate at about 12 V, while the Arduino board operates at 5 V. Though it has an onboard regulator on the Vin pin, I thought it would be safe to just use a discrete step down module. This time, I went with this one rather than the MP1584 as it was out of stock. Also, LM2596 is more commonly available than the MP1584.
RGB LED - In order to show the status of the heater, I thought it would be cool if I had used an RGB LED that slowly fades out blue and fades in red as the pad is heated. Also, the green LED would indicate that the warmer pad is idle and not turned on. Since I am using only one, I could directly connect it to the Arduino board whose pins are capable of 40 mA max. So, I went with a common cathode.
SSD1306 Display - In order to see the target temperature and the current temperature, I had used an SSD1306 display. I went with a blue one.
Arduino Nano - I used an Arduino Nano board as it is one of the most common, breadboard friendly microcontroller.
Headers (male and female) - In order to connect the Arduino nano board as well as to connect the display and other components, I used 2.54 mm headers.
10k NTC thermistor - In order to measure the temperature, I used an NTC thermistor. Though it is not very accurate, it is still accurate enough to be used in this build.
10k resistor - As a voltage divider is necessary for the NTC thermistor to measure the temperature, I used a 10k ohm resistor.
10k potentiometer - In order to set the target temperature, I used a 10k ohm potentiometer.
220 ohm resistors - For the RGB LEDs to operate at 5 V, I used three 220 ohm resistors each for one colour.
Push button - In order to start or stop the heating functionality, I used a push button.
On/off switch - In order to turn the device on or off even when the battery is connected.
Perf board - For the circuit, I used a dotted PCB board.
Voltage measurement sensor - Since Peltier modules have a maximum operating voltage of 15 V, we need to make sure the input voltage is less than that to prevent damage to the Peltier module.
1.5 mm Aluminium Sheet - For the heated surface, I used an aluminium sheet in order to spread the heat rapidly. I had applied a matte black wrap on the aluminium surface to give it a better look. It measures an approximate of 195 x 195 mm.
0.7 mm Copper sheet - In order to cover the cold side of the peltier modules, I used an 80 mm x 40 mm copper sheet.
Tools:
Rotary tool - In order to cut the aluminium sheet to the required dimensions, I used my drill with a saw blade as a makeshift rotary tool. Though it works, I don't really recommend you to use it like this and rather get a proper rotary tool.
Drill with metal bit - For making a hole on the aluminium sheet for the NTC thermistor, a drill is needed.
3D printer - For the enclosure, I used my Creality Ender 3 V3 SE in order to print it. I used 64% infill for the enclosure to make it strong.
Soldering iron - In order to connect the components together, I used my soldering station at 330ºC. I used a chisel tip along with 60/40 solder with a flux core.
Miscellaneous:
XT60 connector
Wires (1 square millimetre)
Wires (ribbon)
Wire stripper
Black PLA filament (< 200 g)
White PLA filament (< 10 g)
Thermal Paste
2 pin JST connector
The Heater



I firstly cut the aluminium piece with my rotaty tool. It measured around 195 x 195 millimetres. I next drilled a hole near the centre for the NTC thermistor to get in to later measure the temperature of the heated bed of the warmer pad.
I then went ahead and placed both the Peltier modules' hot side on the aluminium plate. I added adequate amount of thermal paste while also making sure that it does not overflow or spill out.
Next, the wires of the Peltier modules were connected in parallel observing polarity.
Later, I added more thermal paste onto the Peltier modules' cold side and pasted the copper piece on top.
I then used masking tape to secure it firmly.
I tested this contraption and the setup started off at around 72 W (12 V, 6 A) and slowly went down to around 60 W (12 V, 5 A). The surface on the other hand, heated up quickly to 50ºC, when I disconnected the power supply.
Due to the quick heating, the surface was heated up unevenly. After heating to 50ºC, I reduced the voltage to 6 V, where it drew around 2.8 A. After a couple of minutes, the heated bed was evenly heated and was almost at the same temperature.
These values are important as we will use these values in the Arduino code to heat the bed properly and evenly.
After testing this, I inserted the NTC thermistor into the cutout made by my drill, and secured it with some PVA glue and masking tape.
Once this was done, I wrapped the metal surface with matte black vynil wrap which replicated my table, in order to give it a better look, and don't worry, my vynil wrap can sustain temperatures upto 80ºC, so there is no issue in using it on my 50ºC surface.
The Circuit













I firstly planned all of the pins and assigned their roles on a piece of paper. I then used them as a reference when making a rough, hand drawn schematic. After making sure everything was good, I went ahead and used EasyEDA software in order to make a digital version of the same. Some of the used components were not available in the software for which, I drew custom rectangles with their respective names.
After finalizing my schematic, I got my dotted perf board cut into an approximate 60 mm x 100 mm shape. Before soldering, I first set my station to 300ºC and then later to 330ºC as the solder melted on the components very slowly. I then went ahead and cut 2 pieces of 15 pin female headers for the Arduino Nano microcontroller. I then soldered them according to the footprint of the Arduino Nano.
This was followed by the IRF540N N channel MOSFET which was positioned 4 dots away from the edge in order to leave some space for the heatsink that is going to be attached to it. Though this is a logic level MOSFET, it would still dissipate close to 1.5 W of power as heat with its standard Drain to Source resistance of 44 milliohms. So, adding a small finned heatsink is always a good idea.
After soldering the IRF540N MOSFET, I soldered two PCB screw terminals which were rated for 5 A and 250 V each onto the last dot, close to the edge of the perf board. These terminals will later connect the two Peltier modules to the source when needed.
After this, I soldered all of the connectors needed. Namely, two 4 pin female headers. One for the I2C protocol to the SSD1306 OLED display, and the other one for the RGB led with a common cathode. One 3 pin header connects to the 10k ohm potentiometer in order to set the target temperature. A 2 pin header was used for the push button in order to start or stop the heating process when needed. Last but not the least, the 2 pin JST connector in series to a 10k ohm resistor which was connected to the supply voltage, that is, 5 V. The other pin was connected to ground. I used a JST connector for the temperature measurement because it is more secure than the header connectors. This is important as the temperature value is the factor determining the on or off state of the Peltier modules. If the connector was loose, the temperature sensor may disconnect and display a low temperature value, leading to the MOSFET to turn on. With prolonged heating, the surface may exceed 48ºC and eventually the Peltier modules may stop working and also the enclosure would start deforming as PLA starts to soften at 60ºC. So, it is wise to add a very secure connection for the thermistor.
I could have soldered all the wires directly to the PCB and call it a day. But since this is a DIY project, we could have upgrades or additions in the future. In case of those times, it would be a hassle desoldering and soldering the wires from and to the PCB. Hence, I went with this approach.
Next, I added a small finned heatsink to the MOSFET. I used some thermal paste on the MOSFET and attached it to the heatsink before I secured it in the end with an M3 bolt.
After soldering all of the components onto the PCB, I went ahead and connected all of the ground paths together with black ribbon wire. This was followed by the 5 V path with brown ribbon wire.
I desoldered the male headers and the screw terminals from the voltage measurement wires and replaced all of them with silvered copper wire on the other side. Then the voltage measurement module was soldered onto the PCB.
I soldered all of the other wires according to the schematic and my PCB was ready. The wires are colour coded as following in the circuit:
- Black - Ground path (-)
- Brown - 5 V path
- Red - Vcc path (+)
- Orange - Connection to the red pin of the RGB LED.
- Green - Connection to the green pin of the RGB LED.
- Blue - Connection to the blue pin of the RGB LED.
- Yellow - Connects the display's I2C pins to the Arduino Nano
- Violet - Connects D3 to the Gate pin of the MOSFET.
- White - Connects all the input to the Arduino Nano.
I finally soldered the 1 square millimetre wires to the PCB connecting to the screw terminals' positive terminals. This was connected to the "Vcc" pin of the voltage measurement module's measuring side.
Notice a pair of wires namely black and brown? those wires will connect to the output of the LM2596 buck converter module.
But before connecting it to the board, we need to set the voltage to 5 V. I used my lab bench power supply set to 8 V and turned the trimmer till the voltage became lower than the input voltage. I then reversed till I got 5 V.
After doing this though, we can solder the buck converter. The final result is image number 1. But wait! why is the input ground not connected anywhere? This is because the input and the output grounds are connected directly. So, it is not necessary to connect the input's ground once again in my setup.
Other Parts, Making and Testing


















I soldered headers and wires to all of the other components like the display, the potentiometer, the LED and the rest. After doing that, I attached all of the components to the 3D printed front panel.
I then printed the base unit which consumed about 180g of filament. Things did not go as planned and the base started warping, I used plenty of PVA glue and managed it somehow. After 27 full hours of printing, the base was ready.
After making the PCB, I started with the coding. I used the temperature measurement and a simple thermostat code that turns on/off the MOSFET when the temperature is lower/higher than the target temperature. The coding part was simple this time. The code and the STL files for 3D printing are available at the bottom of this step. Feel free to use or check them out.
After uploading the code and double-checking that everything worked, I attached all of the components to the main board and placed this setup in the base of the unit. After this, I hot glued the font panel and the heater element to the base of the unit, and don't worry, hot glue can sustain up to 80ºC, so, there is no problem in dealing with 50ºC. After this, I closed everything and tested it.
After powering the unit with a 12 V, 5 A power supply, the system drew around 6 A on startup and dropped to 5 A when reaching 50ºC. The thermostat code also seemed to work flawlessly. Since this unit only consumes 72 W maximum, it can easily be plugged into a car's 12 V connector with an appropriate adapter. With my lithium iron phosphate battery pack, I could in theory, run this unit for more than 3 hours, assuming a capacity of 20 Ah at 12.8 V with the temperature set to maximum and a 4ºC ambient.
It helped me really well in keeping my tea and other metal objects warm and comfortable to drink/carry.
I hope you liked this build. Consider commenting and liking.
Thank you.