Guidance on how to control a heater circuit

The question:
How best to control a 12v heating circuit if it needs to be controlled high-side?

  1. Do I just use a high-side switch with NPN and P-Channel MOSFET connected to one PWM Arduino pin to pulse the 12v supply to the heating elements?

  2. Is there some buck converter module I can be controlled by the Arduino (either digitally or via PWM fed through an RC filter to the feedback pin) that can handle as much as 10A?

  3. Is there some other pre-built heater controller (thermostat) that can handle 10A at 12v while being controlled by the Arduino somehow and has inbuilt protections?

  4. Something else I have not considered or missed?

Background:
I'm attempting to design a battery management system since I have not been able to find anything on the market that fits my needs. I have built a LiFePO4 based battery that will spend its life outside and be exposed to below freezing temperatures in the winter, but do not have a proper BMS for it. While there are low-temp rated LiFePO4 batteries on the market, I have failed to find any that offer the max current draw capabilities I need in the small package I require, hence why I am building my own.

As LiFePO4 should not be charged below freezing, but can be discharged as low as -20C, I need a way to sense an input current and disconnect the battery if the temperature is too low. That part is easy enough, but I wish to add an internal heating element to the picture. The idea is that once the battery is disconnected due to low temp, the internal heater is instead the only thing connected to the incoming power source. This would be used to heat the cells up over a period of time to a safe level before reconnecting the battery for charging. This is how many commercially available low-temp rated LiFePO4 batteries work.

The battery will have NTC thermistors all over it to monitor the bus bar temps and the hottest areas where the heating elements contact the individual cells. I'm not certain on the number of thermistors, but it will likely be over 10 at least during development and testing. The heating elements will need to be temperature controlled as they are capable of 200C and could prove catastrophic if thermal runaway were to occur.

Now, I'm fairly certain that I will need to put the battery disconnect on the high-side as the current monitoring IC connected to the Arduino will have circuits on both sides of the disconnect and requires a common ground (INA3221). That is what complicates things and where my questions come in (as listed at the top of the post).

You only need on off control for your heater , so the simplest method is to use a relay ( not one of those blue things ) switching the heater directly off the battery voltage
I can’t see why you need lots of thermistors either - one or two on the battery side should do it ( if it’s supplying power it will keep itself slightly warm )

Put your batteries in a insulated box to reduce heat demand , you might then be able to use a smaller heater . 120W is a lot. Don’t forget some fuses !
You can buy PTC heaters which will self regulate their own temperature

Hi,

Forget NTC thermistors, they are relatively high impedance and you will pick up noise, from the PV controller and your power inverter through the leads and NTC mounted onto bus bars.

Use PT100 and the modules you can get for them, to make life easier.

I presume you have your batteries lifted off the ground.

Tom... :smiley: :+1: :coffee: :australia:

I have recently made a heater circuit to keep an arduino within operating temperature range.

instead of buying a heater, I used two 8 Ohm 25 watt wire wound resistors in parallel and ran them of a 12v supply. Cheap and very effective
s-l500

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.