DIY Electric Car Forums banner

Inexpensive ASIC DC Series controller, no uC, DSP or programming

18818 Views 127 Replies 11 Participants Last post by  Tony Bogs
Inexpensive DC Series and ACIM ASIC controllers, no uC, DSP or programming

Hi everyone. I have noticed a trend towards the use of DC series traction motors in DIY EV projects.

In this thread I am going to design an inexpensive, very basic, easy to build
but also efficient DC series motor controller with modern ASICs,
based on PWM control of the applied DC voltage and hysteretic control of the maximum motor current.

Why? I'm going to buy an EV for daily use, building one is mainly for the fun of it.
I don't have a lot of spare time or money to spend on it, so a DC traction conversion is the best option for the next couple of years.
A drivetrain based on a DC series motor is by far the easiest and least expensive way to get traction (high start-up torque) from a DC power source.
As demonstrated in a recent video of a €1000 build and in every ICE car with a DC series starter motor.

DC series motors have been used for propulsion for ages and back in the pre-IGBT era,
torque and speed of DC series motors were controlled by shifting a tap on a huge, high power series resistor bank.
Very inefficient of course, but that is the way it was done when I was EE student in my first year.
At the core, the driver of the vehicle is the most important part of the control mechanism,
being both the feedback path and the input. A very elegant control solution because of its simplicity.

In the design in this thread the resistor bank will be replaced with modern silicon in ASICs.
Yes, application specific integrated circuits, so there's no time consuming complexity from microntrollers,
digital signal processors, unnecessary and potentially unstable controllers (PID) in software and the biggest issue: bugs and programming errors.
The electronics only kick in automatically when the response of the driver is too slow for the protection of the power electronics and the motor: overcurrent protection.
That is what "very basic" means, but it takes very little effort to dress up the controller with whatever (automated) (protection) feature is wanted.
Examples: cruise control, monitoring (warning lights, gauges), reduction of the maximum motor current when there's not enough air flow across the cooler.

The schematic shows the heart of the controller: only three SOT-23 devices, the lvc4066 and the lvc14 can be replaced with a single lvc3157 SPDT device.
Current sensing for overcurrent protection is done with a low cost LEM sensor.
Hysteretic control is implemented with a low cost comparator (MCP6561) and a LTC6992 has a suitable frequency response for the conversion of the throttle input into a PWM signal for the power stage.

EDIT: The all hardware ACIM controller is introduced later on. Thanks again, Damien!





See less See more
1 - 20 of 128 Posts
You've beaten me to it once again, Jack. Man, you're fast.

I think I'm going to steal your PCB design for the test runs.

But I see you haven't put in a car yet.

Well, I've got a similar piece of ICE sh*t you've bought for your €1000 build.

Nah, I think it's actually a bit better. No smell.

Battery pack is on its way.
See less See more
A car with this controller isn't going anywhere without a power stage.

I'm not a big fan of a lot of mosfets in parallel, so I've picked the IXYS IXTN550N055: 550A, 55V, Tjmax 175C, max dutycycle @48V,400A : 50% (200A terminal amp limit).

Repetitive avalanch current 200A

Gate resistor turn-off starting point: 5R. Turn-on: 1R
Driver: the usual IXDN609

Freewheel schottky DSS2x160-01A

Effectively 8kW+ per power stage isn't bad at all. Lots of torque at low RPM.

@Damien: brake input is a very good addition, but please drive slowly in the vicinity of petting zoos. ;)
See less See more
The design for the idle control is done.

Now the nexr circuit: The "HOLD" circuit for the the battery fault input from the BMS.

It holds (captures) a fault from the battery that indicates a too large static (internal voltage) or dynamic (impedance) difference between sections of the battery pack.
It is part of the controller because this fault condition has to lower the output amps to the motor and the wiring to the hysteretic controller has to be as short as possible.

A total shutdown is unwanted. A sort of "limp home" is better.

i'm going to use a thyristor. Similar to commutating thyristors in early 3phase motor inverters, the "hold" status can be reset by bypassing the current through the thyristor.
No flipflops needed for this. Very simple circuit. Design is ready.
See less See more
@ jackbauer: Definitely. Can't do without precharge. Seen anything you like?

Next: the very simple gate driver for the 55V,550A (1375A peak) IXYS mosfet.
It is very clear that desat has no benefits in this low voltage, single mosfet design.
The TRACO 12 to 15V isolated power supply does not need a high dV/dt rating, since the source of the mosfet is at ground level.
But a step-up of the 12V is needed, because the UVLO of the optocoupler has a 13.5 V upper threshold.

With the insulated mosfet at ground level, the cathode of the freewheel diode and its cooler are at battery+ voltage.
This way the coolers cannot act as high power antennas.

The turn-off gate resistor has a high value (10 Ohm).
For a major part the stored energy in the parasitic inductances has to be dissipated in the mosfet
during turn-off to prevent a very high Vds voltage spike and an avalanch current that is above the spec limit of 200A.
See less See more

I've entered a PTC in series with a 11W (and 5x overload spec for 5 seconds) wire wound resistor in the schematics for precharge.

Only used when the power stage is connected to the baterry pack via a fuse: it's a low voltage system, no need for additional safety devices or relays.

And: I'm maintaining the AT, so it's impossible to start the controller in a drive position.

With a big wink, this fan controller complies with all applicable key words of the thread name except ASIC ;).

I'm going to use an automotive tangential fan to produce linear flow along the fins of the coolers.

In series I'll connect a NTC thermistor, mounted on the cooler of the mosfet: inexpensive fan control.:D

Really works well. Applied it to a number of low cost designs.
OK, it's an early rise and shine today, because it has been terribly hot here.

Nobody has posted a reaction yet, but the simple gate driver has a flaw.

Without desat, the circuit relies on UVLO, time constants in the power circuit and a response time of the control circuit in the microsecond range.

For UVLO to work properly the zener in the turn-on path of the gate has to be removed.

With the zener removed, the gate will be driven with at least 0 to 9.5 V (full turn-on for the IXYS 55V/550A mosfet) at the low threshold of UVLO.
The usual transient suppressor zener at the gate.

Driver; the very frequently applied IXDN609.
UVLO: optocoupler HCPL3120 SMD, also provides ground isolation.

The mosfet is Vgs=10V on type, the zener lowers the output voltage from 15V to 10V under operation conditions.
Here's the flaw: doesn't work that way at low UVLO threshold.

And as usual: diodes provide seperation of the flow of gate current for turn-on and turn-off.

Serious engineering, but just for the fun of it.
See less See more
The boards are on the way. Idle control is the largest (1.1 x 2.1"). And then the gatedriver, the overtemp protection input and the battey fault (bms) hold. 3D doesn't work perfectly yet in Kicad.

Yep, it's definitely an inexpensive and quick to build controller.

I think I'll build a nice laminated busbar for the power section. 2mm thick sheet of copper to be added to the next parts order. I've already have the 0.5mm thick sheet of glass filled epoxy.

The gatedriver can be screwed directly onto the power mosfet.

Capacitor bank on the busbar will consist of a couple of smaller Kemet 400V that can handle the ripple current and a big one for the farads (voltage drop).
The parts of the hysteretic DC series controller "squeezed" onto a 3x3" PCB.:)
Great news. The PCB foundry now offers full small series PCBA service. Parts supply, professional pick and place, online pre-check tools, all in the EU.
Part size down to 0402 and 0,5 mm pin spacing.
No need to switch to RS and sparkling software. I can stay with Kicad.

Not ready yet for that order, this one will be a low cost "engineering" board. Only two, no silk, no solder mask.

I'm going to run this board with a 50V power stage, but jackbauer (Damien Maguire) has been kind enough to try out the basic version (no pin headers for daughter boards) with a 100V dual HB IGBT power stage.

P.S. The pin headers are NP in the BOM of thsi board, headers are on the daughter boards
Precharge controller can be done with only a few discrete parts for a conversion of a ICE car with a key mechanism, i.e. contacts 30, 54 ..., 50 is the supply contact for the relay of the starter motor.

The circuit operates as drivers are used to in an ICE. Turn the key to the start position and wait for the motor to start or in this case for the precharge ready LED to light up.

Protective measures must be implemented externally, i.e. by blocking the 12V from contact 50 to the precharge controller. For instance when the AT is in a drive position.
Well, the tiny LTC6992 converts a voltage (0,1 to 0,9V) directly into a digital PWM output.
What can be more straightforward than that.

In a micro, you have to do a lot of bit banging before you get this functionality up and running and it takes much more hardware.
Bit banging means: set bits in a lot registers, load them with values, set up a scheduler, activate a watchdog, set up an interrupt scheme, initialize complex PWM controllers .....
Some develoment systems hide a lot of the bit banging to make it look a little bit easier.
And then there are the bugs. This guy I occasionally meet at a party, has a full schedule bringing down the number of critters as a member of a team of experts.

I've done my share of bit banging. When it was new, it was interesting. Not any more.
I'm being mild here: if it can be done without bit banging, yes please.
See less See more
Damien tried out the very basic functionality. As far as I know, that's enough for his car (for now). He did make the suggestion to incorporate a precharge controller for the power stage.

Well, there you have one of the things one can add. Some don't like it, they can leave it out. It is a seperate piece of hardware.

I'm dressing up the basic functionality with other modules, for example idle speed control.
If idle speed control is unwanted, don't place the module and the connectors for it. It's as simple as that.
Other modules for example: handling of battery fault, overtemperature of motor and battery.
Some prefer one or two dash battery meters in the dash in stead of automatic handling of a battery fault. That's OK. It's a free world.

But you can get started with Damiens PCB for €30 when the basic functionality is enough for you. And that's entirely up to you to decide.
See less See more
In a couple of weeks my donor car for my senior citizen EV wiill be ready to be stripped down.

And then I can have a look at the existing hardware to see what interfaces I need on my boards.
Tacho input, dash lights, that kind of stuff.
The number of connectors is probably a bit too much. New diagram with idle speed comparator, modified current limit comparator circuit,
smart hi side mos switch for delayed turn on and simplified inputs (no modules anymore). Minimal hardware, but still very versatile.

Power output to gate driver is now 5V. DC/DC converter in gatedriver circuit lists IGBT application in specifications (Recom R05P215S/P), full continuous short circuit protection.
Thanks, but the Fairchildsemi ASIC for ACIMs is now obsolete. So I'll leave that one for you. :D
Nevertheless, an AC controller can be done without without a single line of code.

So @Jackbauer, when can we see a glimpse of your ideas and find out what so naughty about them?
1 - 20 of 128 Posts
This is an older thread, you may not receive a response, and could be reviving an old thread. Please consider creating a new thread.