We are using third party motor driver with regenerative braking and a lithium-ion battery. Apparently, this combination is well known in e-bike enthusiasts world as having a huge problem of BMS disconnecting the load while braking with full battery. The driver manufacturer simply pointed out the statement in datasheet that lithium-ion batteries are not supported and we are basically on our own.
While browsing the web I've found many industrial solutions, mostly in VFD context. Nothing small enough to fit into wheelchair. There are also references to chopper circuits for dynamic braking resistors. These are sometimes included into motor drivers with IGBT for external resistor. This seems to be not very good idea unless very high chopping frequency is used to prevent BMS from activation. Another manufacturer suggested a diode with braking resistor. This will, of course, waste the energy and substantially reduce the range.
Is it possible to create a relatively simple circuit that will limit regeneration voltage by directing part or all current via BJT to dissipate heat on the transistor itself or transistor and resistor combination? The goal is to have it activate only when battery is fully charged and not waste regeneration otherwise.
I am thinking something like a combination of Zener diode, OPAmp, diode, BJT and resistor can do the trick. Not sure if I can come up with a complete circuit on my own, so any advice will be appreciated.
I forgot one important requirement. Because the battery (and hypothetical circuit in discussion) cannot tell the difference between regeneration and charging, the circuit should have additional inhibit input that would disable it while charging. Normally this is done by shorting inhibit pin to the ground, but we do not have an access even to that pin. We might be able to get a signal "charger connected" from the motor controller.
Also here is some additional info asked about in the comments and answers that might help. The battery is 24V 7 cell Li-NCM. We do have an access to BMS configuration, like maximum current, charge and discharge voltage limits etc. Motors are brushed DC, 20A continuous, 40A peak. They have built-in parking brakes disengaged electrically by the controller when power is applied.
Finally, here are some examples of the commercial devices performing this function: from Roboteq and UniDrive. They are expensive, not designed specifically for our application and seem to be permanently out of stock. I was hoping that we can make much simpler device fine-tuned for the job.
Many thanks to all participants in the discussion. I'll try to summarize the suggestions below and maybe we can pinpoint the best approach. It seems that all workable solutions can be grouped into the following options:
Option A. Chopper circuit with IGBT or MOSFET controlled by PWM from MCU
I believe, this is how the commercial shunt regulators are made.
Pro: With right gate driver and transistor most of the heat will be dissipated on a brake resistor.
Con: Potentially excessive noise; requires MCU supply; software development time; cost.
Option B. MOSFET controlled by Comparator
While very different from A schematically, I suspect this will behave quite similar to it, with voltage oscillating around threshold voltage, producing chopping effect.
Pro: Simple; heat dissipation on the resistor; cheap.
Con: Could be even noisier than A.
Option C. Linear regulation of the brake resistor current, controlled by over-voltage
This can be done using OPAmp or BJT pair in Darlington configuration, as suggested by Jasen.
Pro: Reduced EMI; relatively simple;
Con: OPAmp requires either dual supply or biasing; Substantial heat dissipation on BJT requires heatsink; Jasen's circuit might be tricky to adjust for threshold voltage.
At this point I am favoring either B or Darlington. What do you think?