I'm working on a high voltage version of VESC6. Schematics.
Main parts used:
- IPB044N15N5 150 V 174 A 4.4mR MOSFET https://eu.mouser.com/datasheet/2/196/Infineon-IPB044N15N5-DS-v02_00-EN-...
- UCC27714 600 V 4 A half bridge driver http://www.ti.com/lit/gpn/ucc27714
- ACS758 +-200 A hall current sensor https://www.farnell.com/datasheets/2629295.pdf
- WP-SHFU REDCUBE PRESS-FIT Terminals M6 250 A https://katalog.we-online.de/en/em/WP-SHFU_FULL_PLAIN
- 4.7 uf 200 V x7r ceramics
- 560 uf 160V aluminum capacitor
Each phase is for now decoupled with 2x 560uF aluminum capacitors and 6x 4.7 uf 200V x7r ceramics. Gate drivers go up to 600V. Fets breakdown at 150V. Nothing else is connected to high voltage because I'm using hall current sensors - similar design as electric cars. For now the driver needs external 12V power supply for the logic. The driver also supports low power (sleep) mode to eliminate external high current high voltage switch - the driver stays connected to the battery even when electric vehicle is turned off.
I already made most of the layout. It has four layers and its size is 177x78 mm.
Orange and green towers are M6 screw terminals for input and phases. They can handle 150A continious.
Orange bars are copper bus bars. They are actually standard size (3x10 mm) copper profiles cut to correct length so no laser processing is needed just a handsaw. Their second function is to conduct heat away from mosftes and PCB traces. A layer of heat conductive silicone (or ceramics) will be placed on top of the bars to insulate them electrically. The PCB will be then placed in an aluminum housing. The whole device will be mounted on external heatsink if required by high loads.
I might over engineer this whole thing for my e-bike (84V 80A phase current) but there's never enough power when it comes to ebikes ... PS. B in BESC stands for beefed.
Looks really nice :D those hall sensors are a great way to get round the voltage limits of current shunt amplifiers.
Interesting project. I've been working sporadically on a higher power ESC as well (based on VESC6) and was quite surprised to see the similarities in your design. Especially with regards to the layout and the use of copper busbars for both high current handling and good thermal transfer to the case/heat sink.
My targets were 100V max input voltage and 200A continuous current. For current sensing I use differential isolated amplifiers AMC1301 followed by an diff-single ended conversion stage. Did you consider this as an alternative to the hall current sensor in your design?
Huh that's cool. We must be doing something right haha.
I was looking for high voltage amplifiers but couldn't find any. The hall sensors also seemed a lot cleaner (1 component vs ~10). I'll see how they perform but according to datasheet I shouldn't have any problems. They have 120 kHz bandwidth (-3 db) and 4 us response time (3 us rise). Should be enough even at 100 kERPM.
For 100 V it might be worth checking the new DRVs out. http://www.ti.com/product/drv8353r
Triple shunt amplifier and buck regulator. Just like the VESC 4.xx. It might be interesting for new high voltage version of VESC6 also.
The problem with the DRVs is the low gate drive, the MOSFETs required for 80A+ ESCs are usually rather beefy with plenty of gate charge and as such need monster gate drivers to supply the current
Yes, and thanks for the tip. I didn't know about the new DRV8353 chip which looks pretty interesting. However, not sure if FOC mode can be supported with the R-shunts to ground. And I prefer to have the flexibility of tailoring the FET drivers, current sense circuits and the power management section separately.
I agree the use of hall sensors is a bit cleaner and probably cheaper as well. If I'd have done more research before starting my design I'd might have considered that also. However, looking at it now the available options seem fairly limited. The ACS758 is listed as not recommended for new designs for some reason. Do you kow why and if there's a replacement part available?
@TheFallen It really depends on the mosfet. IRF7749 in VESC6 has 200 nC gate charge. IPB044N15N5 in my design has 80 nC ... But yes generally mosfets for more current have more gate charge because they are larger (longer).
@bmlski At their website they state: "These parts are in production but have been determined to be NOT FOR NEW DESIGN. This classification indicates that sale of this device is currently restricted to existing customer applications. The device should not be purchased for new design applications because obsolescence in the near future is probable. Samples are no longer available. Date of status change: June 5, "
Looks like ACS758 is obsolete. ACS772 and ACS773 are new parts available with almost double bandwidth (200 kHz). The footprint is the same too. As it seems only Arrow has them in stock. Never bought components from them. Any good/bad experiences?
More info about Allegro current sensors: https://www.allegromicro.com/en/Products/Current-Sensor-ICs/Fifty-To-Two...
The reason to try my luck with hall current sensors is because I researched how high power drivers for electric car motors are made. They all had hall current sensors and separated logic and power stage with optocouplers. Seemed like a good idea to make my design the same way with huge 600V gate drivers and galvanically isolated current sensors. Less components connected to high voltage the better. The only downside (for now) is their size. They are huge.
Repository with hardware design files: https://github.com/galpavlin/BESC
nice design. What motor are you actually using in your eBike? I am using a MXUS3000 right now and unfortunately the VESC 6 with its max 12s is the limiting factor.
To your question regarding Arrow orders. I have very good experiences with them and am also located in the EU. I tried them after reading that they now offer free shipping. I chose their "Delivery Duty Payed" shipping at checkout and received all packages very quick and without any problems.
I'm pretty sure you are aware of this thread, but better posting it then not doing it. http://vedder.se/forums/viewtopic.php?f=15&t=505 I don't remember all of it and its results, but TheFallen also used ACS current sensors there. When you search for ACS on the vedder.se forum you find also other ones trying them. Please keep us updated on your progress. :)
It's from this kit. Looks the same as yours.. I know it's running on 80 A phase current.
Thanks for info about Arrow. Helps a lot. :)
Thanks for the thread link. This thing is 95% researching and 5% actually making the schematic and routing the PCB. Whole project being open source helps a ton. Looks like I'll have to add some caps next to ACS sensors to decuple noise.
How far along is this project? Do you think you will have product for sale soon? Any actual pictures of prototypes?
DIY Zap scooter build...20kw peaks.
First prototype will be assembled next week.
Awesome! Can't wait to see pictures.
Do you think you will build them for sale?
DIY Zap scooter build...20kw peaks.
As I'm waiting for the parts for the first prototype I'm playing around trying different layouts for future version. Mostly trying to minimize cap / bus / transistor distance and inductance. I came up with a layout that minimizes the distance to ceramic caps. By placing one bus bar on top and another on the bottom the total distance between caps and bus bars is less than 5 mm. Furthermore distance between parallel bus bars is also minimized decreasing total inductance.
To decouple high frequency noise at supply pins of various ICs few ceramic capacitors are used. Each with a value 10x lower/ higher than the other one. The reason behind this is that big ceramic capacitors have higher inductance and can't filter high frequency noise. For example to bypass a supply pin of MCU a 100n, 10n and sometimes 1n capacitors are used.
I followed the same principle on my board too. Instead of using 4.7 uF ceramic capacitors as I have in the initial version I will use more 0.47 uF capacitors. They are a lot cheaper at the end but take up more room for same capacitance / area. I was playing with LTspice simulation and found that increasing capacitance of ceramic capacitor has only little effect. By using a lot of smaller capacitors the system benefits a lot from reduced bypass capacitor inductance.
Using grater number of electrolytic capacitors instead of few big ones helps spread out heat dissipation and makes it easier to handle.
That is a really clever layout! I might take some inspiration from this for my next version :D
PCBs are here.
Whats about getting the current from Bottom (Bus Bar) to the TOP (Mosfets) in your new design?
The whole current goes over via's.
How much Via's? How much Current per Via?
117 0.5mm hole vias. At 30°C temp rise one via current can go up to 2.8 A. This is only for one transistor. So another 117 vias on the other transistor. There is also solderpaste on top and bottom that gets in the holes.
Great work this seems to be coming together nicely.
Looks really promising, will definitely continue follow this!
Not sure if you've seen this project, which's also called BESC; http://bitwizard.nl/shop/BitWizard-ESC
Guess you've seen this project also which is a bit split up between several communities but contain lots of interesting research work;
https://electricmotorcycles.news/80kw-electric-dirt-track-from-jambon-be... (uses the controller mentioned above afaik)
I soldered the initial version together. I'm still waiting for ceramic capacitors and busbars so I soldered some capacitors I had at home. I figured for first tests I don't need busbars.
I modified parameters in code such as input/phase voltage resistors, shunt value and deadtime. Everything seems to work except current calculation. It is always negative even if I set the current gain to negative value in config file.
I made few tests using BLDC mode.
In the picture above the total motor current (blue line) is negative. I believe this is correct since the motor was in full brake mode and was working as a generator.
The picture below shows what happens if I try to spin the motor by pressing right arrow on keyboard. The error returned is abs overcurrent.
The video bellow shows what happens if I click left or right arrow on keyboard while motor is spinning. Duty goes to either -0.95 or 0.95, motor spins at full throttle, motor and battery current is negative as if the motor was regenerative braking. Charged capacity also goes up. I tried setting current gain and shunt resistance to negative value with no success.
Figured it out. Apparently I'm missing a bootloader or something. I was uploading the firmware via VESC tool and it didn't flash. The program on mcu was the same all the time. This time I flashed it with stlink and bldc mode works perfectly. Yay!
@larsrocket I've seen some of those threads. A lot of valuable information, thanks.
A bit of status update:
How BESC looks now:
Future work and ideas for next revision:
I've been working on layout for v1 and this time came up with something that greatly reduces distance between phases. Ceramic decouple capacitors are also right where they should be. The downside is that it needs custom laser cut conductive elements. Because the layout has triangular shape the distance between all phases is the same.
Conductive elements on bottom side are also used for heat conduction. I'll cnc a custom aluminum heatsink. On top of it a high performance fan will be placed. Something like this:
Wow looks like you have been busy . Interesting design with the mosfets arranged in a triangle.
Lol 50ns rise is really fast. Is your gate resistance 2 ohms or something silly like that? I bet if you used much higher gate resistors the mosfet heating probably wouldn't rise that much. All that oscillation will result in extra heat too.
Did you ever make boards with your "future v1 design"?
50ns is a bit fast! I run 300ns currently.
@district9prawn: No, never. Any potential problems with that loop?
@TechAUmNu: What gate resistance do you use?
Tesla used to have sort of triangular layout on their early model s controllers, maybe looks similar on newer cars also;
I am working on my own high voltage design at the moment, going to be using this half bridge driver from Infineon 2EDL23N06PJ. It has shoot through protection, deadtime insertion and a built in overcurrent comparator. Also its much cheaper than the TI drivers.
That's a really good gate driver. Better than TI at all aspects. I'll consider using it for my future version. Thanks for sharing.
I'm having some crosstalk issues in my design. Swinging 100V at 300 ns without any shielding produces 5V crosstalk on signal lines. So the intense gate ringing I'm getting is because output swing couples to signal line which causes the driver to switch states again swinging the output and coupling it to signal line. The cycle continues about 10 times and then fades out. Because this ringing couples to PWM lines the whole 3.3V rain rings. I'm getting 7V pk-pk ~20 MHz noise on 3.3V rail every PWM cycle. Not good.
For your future high voltage design take some measures to prevent crosstalk. Also take time to set clearance rules correctly to have enough high voltage spacing. In Altium you can use "Parameter set" and then add rules to it. https://www.altium.com/documentation/15.1/display/ADES/Sch_Obj-ParameterSet((Parameter+Set))_AD
Excellent work so far! This design (or something like it) is my prospect for a e-motorcycle motor controller. Has there been any consideration in supporting a sine/cosine encoder?
I highly suggest you look at TIs isolated MOSFET drivers, they have better propagation delays than their non isolated devices, as well as adjustable deadtimes, good noise immunity shoot through protection, enable pins and really high bootstrap voltages (because the high side driver is functionally isolated to 1500v!)
I didn't know they exist. Looks like a really new device. They outperform every part I researched. Price is a bit high but I guess it's expected with isolated driver. Thanks!
@shaman I think I've seen implementation of such encoder on some other forum a while ago. Should be easy to implement in firmware. I suggest you write in "Feature Requests".
Some other quick design review stuff you may want to look at after reading the thread and looking at the github, don't take this as an attack, consider it constructive criticism;
A voltages over 100v you should really start looking at film capacitors, ceramics offer very little capacitance at that kind of voltage and are terrible value for money.
Compare this film cap to your ceramics https://www.digikey.com/product-detail/en/kemet/C4AQCBW5300A3JJ/399-1699...
The film cap at 100v is still 30uf, and at 150v, still 30uf. They are a bit more pricey initially, 6.78 in 1x and 5 in 100x but when you only need one per phase it gets a whole lot cheaper, smaller and better than an equivalent ceramic solution.
The real ESR of film caps is also much much lower than that of ceramics caps, I learned this when designing induction heaters - this is because the metalization of film capacitors is much thicker than that of ceramics capacitors, and as a result that can handle high ripple currents without issue, and even higher peak currents. That particular film cap I linked is designed specifically for this kind of application (automotive DC link), it would be a great replacement for all of the ceramic low-esr dc link capacitance.
You can't/shouldn't use those diodes for your bootstrap supply, they have too long of a reverse recovery for the kind of switching speeds you will be seeing, with a 100v swing in 300ns you are likely discharging your bootstrap capacitor significantly on the switching cycle, leading to lower Vgs and more conduction losses (there are other issues too, like noise induced on the 12v rail from the current spikes from the reverse voltage and heat dissipation), consider using a schottky diode or SiC schottky diode with low capacitance rather than an ultra fast diode. For a 150v rated controller, something like the SMD1200PL should be suitable, but if there are issues, something like C3D1P7060Q would be more suitable.
Your bootstrap capacitor is probably undersized; you state "10x qgate" but under the DC bias that will be a lot lower, combine that with gate driver leakage currents and high duty cycles and you have a situation where you may run into FETs operating in the ohmic region. There is almost no disadvantage to using a larger bootstrap capacitor. The only disadvantages are initial charge time is longer, but on a "human scale" it is negligible, and price.
Resistors, its a bit of a mess, sizes of 0402 to 1210, all in odd places. I know you want this to be small, but this really isn't the way to go, instead consider narrow/high density footprints rather than the wider standard footprints.
For FETs with big gate capacitance and such strong drivers you may run into issues with fusing currents on your series gate resistors of only 0603 size, I mean, for the bootstrap diode series resistor you chose 1210, but then only 0603 for the gate resistor, they're essentially going to be seeing the same currents. Swap your gate resistors to 0805 for both the series termination resistor and the pulldown.
Also, be careful with your resistor size selection, 0402 are rated to 50v dc and 75v transient, 0603 are rated to 75v dc and 150v transient - so anything that goes near your high power nodes should be at least 0805.
The PWM signal series resistors, swap them for the same ones as your gate drivers, I know you're getting induced noise, but this is current noise, a resistor won't do much to stop that, it is the capacitor doing most of the work, the rc time constant will still be plenty long enough to take the edge off the noise, if you want to cut the noise down more, add a shunt termination resistor of around 1-2k to ground, right near the FET driver, this will turn the signal from a high impedance signal of a few uA and pF of input capacitance to a lower impedance signal with a few mA of current, and the induced current will be a lower percentage of the signal current and will be proportionally less noisy.
Since your layout isn't on github and the pictures posted are of relatively low resolution I can't do much for layout critique, but I would like to help - I personally intended to do a similar controller in the new year, so when I found your thread I thought it would be worthwhile commenting, also, I realize that this is a work in progress so things may have changed in the design compared to the thread and github.
Hey bgdwiepp, thanks for your feedback. How could I take is as an attack haha. I'm just an undergrad student building a high power converter for my bike. Any criticism and suggestion is welcome.
I've uploaded schematic of last version. You can view it here: https://github.com/galpavlin/BESC/blob/master/besc_schematic_v1.1a.pdf
I changed a lot from the initial version.
- I'll research film capacitors. The only problem I see is their size. Is there anything else to ba careful about when choosing the correct film cap? Like dv/dt, max ripple current, etc.? In the last version I used 42x 200V 0.47 uF x7r ceramics. Using a lot smaller caps is a lot cheaper than using only few bigger. https://si.farnell.com/multicomp/mc1210b474k201ct/cap-0-47-f-200v-10-x7r...
- Didn't know that. I just used a diode recommended in some datasheet design. I'll run some spice simulations because I want to fully understand what kind of diode I need. Thanks.
- Bootstrap capacitor was replaced with 2.2u and 220p in parallel.
- To be honest, everything was a mess in initial version. 0402 were only used for signal filtering and low side of phase voltage divider. Still, I replaced every 0402 with 0603. I'll also replace 0603 resistors on high voltage side with bigger ones.
- Thanks for the last tip. Makes sense.
Layout is here: https://github.com/galpavlin/BESC/blob/master/layout.jpg
Pictures go: top, mid 1, mid 2, bottom, top 3d, bottom 3d
I have had bad experience with other engineers in the past, they get very defensive...
Anyway, lets go through this a bit;
For your gate resistors, they are there to stop the ringing from the fast rise time pulse from the mosfet driver, the way you have it set up in that schematic, all you are doing is limiting the overall risetime by limiting the current out of the driver, this works to stop the ringing, but also essentially makes the strong mosfet driver obsolete.
Instead, you should use a gate resistor directly at the gate pin of each of your mosfets, this will ensure the mosfets all get the same, and maximum drive current, it allows the fast rise time to be right at the leg of the resistor, but it stops the ringing that develops between the capacitor of the mosfet gate and the inductance of the trace.
A gate resistor of 4-5 ohms for each of the mosfets closer to the driver and 7-8 ohms for the mosfets further away would be about optimal - however I am personally not particularly fond of your layout as it makes the gate drive traces excessively long and both are crossing a high di/dt current path, a solution would be to put the driver between the high and low side mosfets, and route the PWM and supply voltages in on the bottom layer, and with middle layer 2 having a ground plane to shield them. I don't see this layout change being too terrible for the high current routing as most of this is done by the copper bars, nor do i see this effecting heat dissipation.
Those multicomp caps have terrible datasheets, so I can't get much information from them about their characteristics, so I did a quick search for similar capacitors and looked at their characteristics and they are pretty poor as one would expect for a ceramic capacitor, -60%~ at the rated voltages, with a bit of re-routing you could fit the film capacitors in without issue.
The layout generally looks good, but i think you may have over estimated the amount of copper for the power routing and this is impacting the routing of other signals - you are going to hit the limits of your mosfets before you get anywhere near the limits of the copper bars and the board, the same with your electrolytic capacitors, 6 should be more than sufficient, especially if you can reorganize the board to fit some film caps.
As far as things to look for in film caps, i'd say heating is pretty much the only issue and it is also a warning sign, it is very hard to hit the dv/dt limit on the film capacitors if you have decent bulk capacitance and they don't catastrophically fail usually from it either, ripple currents can be an issue, but you will discover that in them heating up before they catastrophically fail.
The diodes thing, you should look into it, silicon diodes have two reverse recovery characteristics, the junction capacitance and the recombination, you need to discharge that capacitor and then wait for all the hole and electrons to recombine to form the depletion region before the diode stops conducting. In a schottky diode, there is no charge carrier depletion, so there is no recombination time, so they essentially switch instantly with slight capacitive loading. Usually, this isn't much of an issue, the high voltage ultrafast silicon diodes don't generally see use in applications with high switching speeds, so their reverse recovery time is usually quite short compared to the rise time of the nodes they are connected to, here though, that isn't the case.
The 2.2u bootstrap cap is good, I don't think the 200p is doing much though, i'd replace that with 0.1u~.
What are you using to get your 12v supply, that isn't clear from the schematics, it looks like maybe a module in the 3D view?
Overall it looks good, especially for an undergrad, I have fundamental issues with the use of SMD FETs in high power designs, but i'm not going to get into that or how you are going to dissipate a potential 100+ watts.
I'll be using external 12V DC/DC converter. I don't want to go through trouble of designing such converter so I'll just buy Meanwell RSD-60-H and mount it externally. It can be also used to power other devices on an electric vehicle.
Changed the capacitor bank. It looks like this now:
6x 560 uf aluminum and this fella for each phase: https://www.farnell.com/datasheets/2318769.pdf
Or even better:
This one uses only three aluminum caps but is "solderable".
I have been working sporadically on a higher power ESC as well and was quite surprised to see the similarities in your design. Especially with regards to the layout and the use of copper busbars for both high current handling and good thermal transfer to the case/heat sink.
I'm at version 1.1b and confident enough to fabricate it.
I also designed housing for it. Bottom part is CNC machined aluminum and top is 3d printed. Looks like this:
Final dimensions are 193x117x54 mm.
PCBs should arrive sometime before new year.
Looking really good! Can't wait to see it in action
Sweet. Maybe this or a version of this can compete with the sevcon. I really don't like the hoops you have to jump through to program that thing...
This looks really great! Do you have an estimate for BOM cost?
Hey! Plugged the BOM in octopart yesterday. Result:
Add the cost of PCB, housing and labor this thing could be in 500-600€ range competing with this Kelly. It could also be one of the few 30S (110V) capable. Of course it has to work first.
I'm still waiting for bus bars. They should arrive this week.
I think you will have a problem with low inductance motors not having any ceramic close. You need less than like 2nH for the low inductance motors as they just look like shorts.
Each film cap has 6 nH inductance. The current path to them adds another 0.3 nH (without bus bars). Totally 66 uF +-5% at all conditions. Taking into account that low inductance motors are not really common at targeted applications for this driver and at least 25 V (at 30S fully charged) of room for spikes I don't expect major problems.
You still using the 10uF film caps? The spec says 18nH...
I would only count the closest cap as being for each phase, the others won't help all that much. How did you get your 0.3nH current path? That sounds spectacularly low for how far they are away.
They look about 15-30mm away from the legs of the mosfets, so it will be at least 2nH to each leg. So say 22nH total.
Plugging that into ltspice gives me about 30S @ 250A max with 200ns switching time. So you are probably good.
Nope. Changed it to something beefier. https://www.farnell.com/datasheets/2373709.pdf
2.5 cm to one leg and return. It's 0.5 nH a bit more than I said. Total 6.5 nH. Having more than 50 mm conductor width to cap really helps. Even to the next one the conductor inductance is still ~1nH.
Today I soldered the new version. After some initial reviving problems because of poor soldering BESC came to life. First tests look very promising.
Just PCB with components weights a bit over 0.5 kg.
I CNC-ed this tool for easy assembly of press-fit supply and phase terminals.
Gate voltage at transition:
I could only test @ 60V 60A phase current and 45A battery current with my setup at home. I got ~6 V spikes on supply. I was using very thin 1.5 m long crocodile cables so it should be a lot better with a battery. When I get my bike ready to ride I'll test it to its full current capacity @20S.
Fantastic work, I made a similar comment on Reddit and I have copied it below.
There are two separate things you are trying to achieve with caps on the voltage rails. All the large caps are really there to prevent ripple which occurs at the fundamental frequency of the PWM (20-30Khz). There is a separate problem of ringing, but that is almost impossible to measure without designing the board specifically to allow the measurement. You need a BNC or similar on the board to allow you to connect the scope directly, without using probes.
It looks on your youtube like you are trying to measure ringing of the power rail on the switching edge. With such a long scope ground lead, all you are really measuring is the inductive coupling from the motor wires. You will probably have a similar measurement by attaching the GND clip to the prope tip and having nothing connected to the circuit. I would be very interested in seeing the much lower frequency ripple.
Or you can use the little ground spring that comes with all probes, you are just trying to get the loop inductance as low as possible so, as long as you calibrate them properly you will see that ringing just fine for our purposes. Although if you really want to see it properly then yeah you would want some bnc on there and a fast scope or spectrum analyser.
It's basically impossible to see the actual ringing on the gate edge, by that I mean, what is the REAL magnitude of the gate ringing. Of course, you can still see changes, reductions in it as you make circuit and firmware changes. It can also help to get an idea of the measured ringing with just the probe loop, then see how much larger it is when you are attached to the circuit.
It definitely helps to use the ground spring, but I have found that the real signal will still be swamped by the induced current. The best cheap option is to chop a BNC cable and solder a resistor to the end, then solder that cable to the circuit with tiny loop areas. Then use 1:1 or 1:2 to get a nice low impedance ie don't use a 1M resistor.