Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Contactor control - Higher voltage PWM

+2
−0

I have a battery pack that consists of 18650 battery cells(14 cells in series max.). Hence, the voltage of the battery pack will be between 35V and 60V(to be on the safe side)

I am designing a BMS in order to control it with cell monitoring, analog measurements, contactor control, etc. features built-in.

Using the battery HV pack voltage(35-60V), I would like to control a 12V/1.5A coil of a contactor. The reason for that being the fact that the rest of the circuitry could be powered with a 5V/500mA buck converter and not having a 12V/2A supply only for the sake of contactor control would be nice.

Would the following architecture for that purpose work in real life? Is there a better way of doing this? PWM Relay Picture


Here is how the circuit should work. Vpack_analog_input is fed into the micro analog input. The circuit around L1, C1, and D1 serves as a flipped buck converter having an NMOS instead of a PMOS. C2 is providing a low impedance for the switching node because I fear the ringing would cause a significant amount of emissions on the input cable.

The idea is to sense the Vpack and initially allow M2 to be opened for no more than t=L1*Icoil/Vpack , and after that apply PWM to Pwm_Control and limit the duty cycle in order to never have more than a certain threshold of current flowing through L1(to be done through experimenting).

History
Why does this post require moderator attention?
You might want to add some details to your flag.
Why should this post be closed?

1 comment thread

General comments (2 comments)

2 answers

You are accessing this answer with a direct link, so it's being shown above all other answers regardless of its score. You can return to the normal view.

+1
−0

While your basic idea seems fine, I will not enter into this matter, especially after Olin has said he will.

Instead, I will give some other ways to do that, that may be useful in other circumstances.

First of all, there are also inductorless convertors, working with capacitors, that are much cheaper and much less noisy. This one for example, is one of the infinitely many convertors you can found on the market for very cheap. small-buck And they are ready to use, no need to experiment, which can be a mess for a person not well used with convertors.

So, my first advice would be:

if you have no particular reason to build a buck convertor, buy one; after all, why doing by yourself what you can buy at low price.

And if you are not satisfied with bought convertors (e.g. if your supply voltage is too high), my second advice would be:

Take the schematic of a convertor another person has built and tested, and build exactly the same one, adapting if necessary few components.

In fact, for very simple tasks where the load is fixed (as in your question), even a simple LM555 can do, a fact that seems not to be well known. Here is how (I assume you know how to mount 555 oscillators):

  • If the supply voltage is too high, power the 555 with a resistor + zener. The output should have a voltage of 10V (say) in order to switch a mosfet;
  • Mount the 555 as a square wave generator with variable duty cycle;
  • Then use the output of the 555 to switch a Mosfet feeding the load (the coil in your case) from the main supply;
  • add a capacitor in parallel to the load to smooth the voltage;
  • set the duty cycle of the 555 to obtain the desired voltage at the load.

Please, note also the following: you say you have a battery pack where batteries are mounted in series, and it should provide a voltage between 35 and 60V. So, why not manage to introduce a terminal at half the battery chain, or even 1/3 of it? In this way, the voltage would be between 17V - 30V or 12V - 24V, which is easier to deal with.

After there are many ways to abase the voltage efficiently without having to design complicated things, here is a power saver circuit I "invented" once and that worked well for me (in this schematic, I assume there is a 1$ small buck convertor with fixed 5V output, but any other solution mentioned above to obtain a fixed voltage will do):

power_saver

The principle of operation is simple: at startup, the cap is not charged and the Sziklai pair Q1-Q2 conducts the current from the main supply, restricting it to somewhat below 15V because of the Zener D2. As cap C1 is charging, the voltage decreases, until it comes below 5V (and eventually stop conducting). At this point, diode D1 that was preventing the buck convertor to feed the load opens, and the buck convertor feeds the contactor coil at 5V, which is sufficient because of its hysteresis.

Here is a simulation of the above circuit: PS_simul

An advantage of this power saver circuit is that you can control everything easily; in particular, by increasing the value of the cap, you can increase the switching delay time.

History
Why does this post require moderator attention?
You might want to add some details to your flag.

2 comment threads

The image of the website that shows a step-down DC-DC converter doesn't seem to be that of an *induct... (2 comments)
General comments (1 comment)
+2
−0

Your basic idea is fine, but your implementation is not. C1 makes the whole thing not work, as it will block DC. C2 puts a burden on the switch. D1 would preferably be Schottky.

I'll write a more detailed answer when I have time, probably tomorrow.


I'm back now and have more time to answer this question properly.

Again, your basic concept is fine. You can use the contactor coil as the inductor of a buck converter to keep a reasonably steady current flowing thru that coil.

With the right PWM duty cycle, the coil will act just like it is being driven with steady 12 V. It's the current thru the coil that produces the magnetic field that ultimately activates the contactor. As long as the voltage doesn't exceed any insulation breakdown limits, it doesn't really matter other than to cause the desired current. That voltage can contain AC components. Since the inductance of the coil smooths out the current, only the average applied DC voltage matters as long as the AC components have high enough frequency.

Here is the basic topology that achieves the above:

Note that there must be a DC current path thru the coil, which C1 in your schematic prevents. The PWM frequency should be high enough so that the coil current changes little during one pulse. The microcontroller producing the PWM signal is also measuring the power voltage, so it can adjust the PWM duty cycle to result in average 12 V across the coil. The accuracy requirements are not that strict, so doing this open-loop is good enough. Make sure that the micro is reading the power voltage, and therefore adjusting the PWM duty cycle, often compared to the expected changes in the supply voltage.

One possible problem with the above circuit is that the bottom node of L1 sees large and fast voltage excursions. These can possibly cause unwanted radio emissions. If the whole unit is contained in a shielded box, and you pay careful attention to grounding and the return currents, then you probably don't need to do anything more. However, if the contactor is connected to the circuit by a pair of external wires, then the voltage spikes will probably need to be filtered.

Here is a schematic snippet from a real commercial product where I needed to drive an external solenoid valve, and wanted to control the apparent drive voltage from a microcontroller:

Note the additional inductor L6 and capacitors C32 and C30. These smooth the voltage across the coil, which is at the end of an external cable connected to P19B and P19A. Instead of the rapidly-pulsing voltage being on the bottom end of the solenoid coil, it is at the bottom end of L6. L6 is on the same board as the rest of the circuit. The board has a ground plane, and the loop currents were carefully considered in layout.

You may be wondering why I bothered to do all this when the supply voltage was already the correct voltage for operating the solenoid. In this case, I wasn't trying to adjust to supply voltage variations, but wanted to be able to throttle back the solenoid drive current once its initial pull-in was completed. That was largely to reduce the heat dissipated by the solenoid in steady-state on condition, which was a problem with the previous version of this product. Solenoids are often specified for a "pull-in" drive level, with a lower "holding" drive level. This circuit allowed for switching to the holding level after the solenoid was done moving. If I remember right, I kept the PWM duty cycle at 100% for 1 second, then switched it to the holding level after that. A few 100 ms would probably have been good enough, but the amount of heating during the extra fraction of a second was inconsequential.


keep the reverse voltage in mind. 60V is too much for standard Schottky.

60 V is getting up there, but is still doable. The Vishay SS8PH9-M3/87A is one example. Fortunately, once the voltage gets so high that a Schottky isn't available, the extra voltage across a full silicon diode will be a smaller fraction of the whole.

History
Why does this post require moderator attention?
You might want to add some details to your flag.

1 comment thread

General comments (4 comments)

Sign up to answer this question »