mxlemming said:
If you follow zombiess advice, you'll definitely end up with something that works well and reliably. He does this for money I believe, he has a strong interest in making things that work and don't fail.
But that's not much interest to me. I would rather see you fail and learn a whole load than succeed with a fairly standard controller, because I do this entirely for the lolz. My last job was dull as hell, i started this to prevent my brain turning into a potato.
I vote... You've been warned of the risks, you know the cost... Do the GaN.
Warning, I'm getting meta here.
As mxlemming has noticed, I put heavy emphasis on making stuff reliable,
because I like to push the limits. I only want to ride the struggle bus for as short a time as possible. There is a HUGE difference between making something that works on the bench vs something that goes to market. I HATE doing rework and if I'm going to sell something, I want it to be reliable.
I always recommend people start simple with power electronics and build something that is likely to work before getting too experimental, but to each, their own. Failure is the ultimate teacher, I love try storming / iterative prototyping, I fail a lot.
mxlemming said:
Further to the turning it off and floating all phases, the first thing I'd implement in code is to every single pwm cycle measure the bus voltage and turn it off instantly if the bus rises to the Vddmax of the FETs. Better yet, you might consider doing this with a comparator and latching it.
Best practice is to handle a fault in hardware first because it's faster and more reliable than software, but also signal the software to shut down. A comparator plus latched shut down is nice to have.
mxlemming said:
Over current failures are generally slow, you get a chance to survive them through PID loop, current limiting power supply etc. Over voltage failure from e.g regen into a power supply or BMS turning off is instant failure of the FETs.
Shoot through events are extremely fast over current events which can be addressed by selection of a good gate drive, but it's also good to have hardware + software over current protection to handle the more common slower events. I like to do both when I can.
Short shoot through test, I love how effective the protection is.
https://youtu.be/bvqAEGtAvEM
All this talk about GaN has caused me to give it a go myself. I have a 130V to 24V buck converter I designed for powering my controllers off the traction pack, but it's only about 90% efficient and produces over a watt of waste heat which is quite difficult to get rid of. I already have a working design, so now I'm going to tweak it for use with GaN devices so I can do a comparison. Hopefully it allows me to shrink my design size. A buck converter is pretty simple to design, but it took me multiple revisions (six I think?) to get to the design I have now. Thermal management turned out to be WAY more difficult than I anticipated. I killed about 15 controller chips while learning from various screw ups.
mxlemming said:
Bit depth isn't hugely critical for a motor driver generally, since the non sinusoidal ness of the motor will massively dominate the errors from bit depth. High bit depth is important for audio and precision power conversion, not this. I run my code at 1024 ARR/ 10 bit. Honestly, i don't think it would run any worse with half that.
I'm not as advanced in software design as you two, but one way to think about the control problem is by asking "what is my limiting factor". In this application, it's probably going to be the motor itself. The motor acts as a mechanical low pass filter, so then the question is how fast can the motor accelerate. Your worst case would be an unloaded motor. Is there an advantage to controlling a motor with micro second precision if the motor takes 100ms to start accelerating to what the controller commanded? <-- serious question