I did some more testing. This is measured at supply bus bars at 120 A phase current and 60V input voltage:
The biggest spike zoomed in at t=0:
I cannot go any further with current test setup. I was already melting supply cables and triggering 220V fuse.
Ring frequency is 25 MHz. I'll put some ceramics caps close to FETs in next revision. Seems like current version will handle 200A @ 84V just fine. There is still 66V for spikes before any damage occurs.
Also measured gate voltage with that spring thingy instead long crocodile cable on probe. Looks much better now.
I CNC-ed the bottom housing for my controller and installed it in my bike.
After few tests I set it to full capacity - 200 A motor current in FOC mode. I don't have any nice graphs yes because I'm still waiting for Metr module. Everything seems to run fine. Torque at 200 Amps is just insane. I drained about half the battery and the controller temperature didn't even move for more than 10°C.
Great work man. Looking really awesome!
I 3D printed top housing for BESC.
Another part is used to cover high current terminals. It doubles as mount for 12V 5A DC/DC.
And here it is in my bike.
I did three battery cycles with my bike and everything seems to be working.
Settings for my bike are:
Motor current max
Motor current max brake
Absolute maximum current
Battery current max
Battery current max brake
MOSFET Temp Cutoff Start
Minimum input voltage
Maximum input voltage
Dead Time Compensation
Accelerations are insane except for very low speed. Regenerative braking is useful for going downhill for a long time. It extends battery life for about 20% when riding on road. Doesn't do much when riding offroad because I'm used to mech brakes.
Current bottleneck is my battery. It can output up to 125 A but only does when it holds about 50% of charge or more otherwise voltage drops too much. Motor heats up to 60°C (I'm using hubsink and statorade), BESC up to 65°C during normal riding (~100A average current) and up to 75°C (MOSFET cutoff) if going uphill for a very long time. This should drastically improve now that I added a fan. Before it was just closed in a box with no air circulation.
Current version will be the last since it's good enough. If someone is interested in PCBs or BESC as a kit write me a PM. I also have something beefier than BESC in mind with more than double the current capacity to drive this so stay tuned.
Thanks to anyone who helped. Big thanks to TechAUmNu for schematics and layout ideas and also to Benjamin for writing this wonderful software and keeping VESC project alive.
I installed 40x40x10mm fan to move some air through heatsink. Driver temperature didn't go over 55°C most of the time with peak at 60°C.
Todays muddy ride:
Some nice graphs with current, speed, temperatures, etc.: https://metr.at/r/7XZie
Very impressive work. Subbing.
Hello Galp, Nice project, it is impressive!, It seems than this design is for a bigger project than a bike!
What power do you think it could handle? 16kw?
Hi! I've tested it to ~10 kW. It runs steadily @ 200A phase current and 72 V nominal input voltage.
I am new in vesc.
i want use acs712-30A(current sensor) in my driver. i use 2.4k and 4.7k resistor to convert 2.5 volt to 1.65v but i dont know how much is CURRENT_AMP_GAIN ?
How do i calculate CURRENT_AMP_GAIN and CURRENT_SHUNT_RES?
Can everybody help me?
Does anyone know if the Generation 1(150v 200A) BESC have GPIO pins that is suitable for using quadrature encoders like the Vesc 6? I know that the BESC is compatible with Vesc 6 firmware but I'm not sure if the Generation 1 BESC will have the same GPIO pins as the Vesc 6.
This is a crazy cool project!
I am starting a project now looking to build the smallest and lightest ESC possible for voltage 48-100 V. Also building my own lightweight high power motor (11kW).
Im looking for 3-4 partners to help me! Send me a PM if interested.
Hello. Does this support "balance" app and does it have a position sensor? Just I want try to use it for monowheel.
Here is to hoping that the OP is still kicking around and checking his post and emails.
I've bit into the VESC project and am following a lot of your design.
I noticed from the schematics that maybe the newest stuff isn't added such as your use of film resistors. I went with the older design.
Had a question about the schematics. Maybe anyone can help me.
What is going on in the section with ENGATE and DISGATE? it is going though some sort of logic converter but not sure what is happening with the output of ENGATE once it goes through he SN74LVC1T45
Hope someone can help.
Also had a question about the VBOOT Section. What is being connected to what here. A bit confusing as it seems the Phase (High Voltage) Is just decoupled with caps back to the Phase?
Ok. Seemed to have answered my own question on the VBOOT. That is bootstrapping and you are charging up via phase to vboot. 12v always above Vgs to ensure proper swich on of high side fets.
But still wondering what this DISGATE does. I see no other references to it in the schematic. I'm trying to minimize my design to exclude a lot of stuff. For eg. CAN or servo input. Any reason why I need any of these on a simple high power speed controller?
Ok... Looks like I may have actually answered my own question here but it be great to confirm.
Seems that ENGATE is to enable the gate drivers but needs to go through a logic level converter first? Comes out as DISGATE which I think you just connect to each of the 3 drivers. as DRV_DIS but I don't think you show this and it is another end on the UCC21222 that you haven't shown what happens on.
Hi . So you have succesfully build this controller ?
It's just there because back then I didn't know what to change in software so I simply implemented it in hardware. It's useless now and must be avoided.
Are they available and how much?
Can you provide some insite? Your config files or your firmware that you are using. I need to know how to change my code to invert also the enable bit as well as any changes you made to yours to work with your G1 besc board. Your support is greatly appreciated as I am knee deep in shit in this project.
You would need to invert the logic. That is where the value is True, it needs to be interpreted as False and vice versa.
The logic NOT is represented with "!"
There is a good example in the original code: #define IS_DRV_FAULT() (!palReadPad(GPIOB, 7))
In this case, the value is read and reversed. I had to actually remove ! for my hardware because, in my case, Fault is reported when the reading is HIGH, not LOW as in the original FW.
For the enable/disabled gate you can just swap the Set and Clear commands here in defines. For example:
#define DISABLE_GATE() palClearPad(GPIOB, 5) --> palSetPad(GPIOB, 5)
#define ENABLE_GATE() palSetPad(GPIOB, 5) --> palClearPad(GPIOB, 5)
My programming skills are a bit better then that but I was more curious what was changed and where it was located. I really appreciate the responce.
I noticed also that the gate drivers for the original vesc hw has data lines to them. How do you or do you need to disable this feature in FW?.. Last thing I think I need to know before I power up my board and hopefully not smoke it is. Since I'm using hall sensor current sensors like besc. Do I need to set the current gain to 1?.
Thanks for the replies.
In the hw config there is a define called has_drv or something like that. If that is not enabled the vesc will not try to communicate with a drv.
Thanks for the reply!
I think i'm ready to power this baby up today. Just one last check... if I have gate drivers with HW deadtime and I have them setup correctly. Is there still someway my vesc will smoke my H bridge? I've had this controller built for a week and I'm affraid to plug in the drive section. Lol...
I've got very little experience with HW and i've really jumped into this with a rather complex circuit that can blow itself up if instructed wrong.
There is always a way to smoke things. Just jump in with a current limited power supply so nothing will blow even if there is a dead short. Don't connect batteries until you can spin a motor.
You disable things by not connecting them.
I concur with the advice to always run a virgin controller from a supply with a current limiter. I use a cheap 300w supply that shuts off above 10A and I don't run above 30v the first time.