The question:
How best to control a 12v heating circuit if it needs to be controlled high-side?
-
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?
-
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?
-
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?
-
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).
