Tuesday, December 2, 2014

Motor Controllerino, pls

After spending the better part of Thanksgiving break suffering from severe phase lead (diurnal living is overrated too hard), I thought it'd be wise to use the time on yet another project: a BLDC motor controller. Given that I wouldn't have the funds to complete the godly hysterically controlled buck converter until at least the end of summer, something on the smaller side could provide the amusement one needs when suffering from end of semester burn-out.

And so, the list of requirements was born.
  • 2kW continuous operation
    • This means at least 60A given a 10S pack. 
  • derpy voltage and less-derpy current control schemeability
    • From looking at homebrew controllers, open loop voltage control with block commutation seems to be the most common, but at some point current control would be nice (something, something, torque). Note that I'm avoiding fancier control schemes (sine drive, FOC), mainly because the algorithms involved typical take up more time on your cheap hobbyist microcontroller, thus limiting the commutation frequency.   
  • sensored commutation
    • Allows for starts from a stand still (extra important in vehicles such as pocket bikes and go-karts). 
  • low-cost
  • serviceability
    • I say this mainly because after having made so many boards with parts on top of parts and impossibly close clearances, it might be time to make my life a little easier when debugging. Maybe. 
Being ever so inclined to start by making a board, I went on the hunt for components. I ended up settling on many of the same components that the later iterations of melontroller used: D2PAK FETs, the same current sensor, and the same arduino; I was attracted to the power density of the D2PAK package (how heatsinkable they are is another question) and the modularity of the arduino nano, however the only current sensor I'm using will be on the DC-link. This is to avoid cost and to employ phase current estimation via techniques discussed here and here as opposed to having a hall effect sensor on each phase.

As for the drive electronics, I settled on these bootstrap ICs (LM5104) after being a little sick of discrete gate drive, which inevitably leads to a board space nightmare. Floating drive rails were out of the question considering I'd be driving FETs with under 4000pF of gate capacitance. Everything seems so cute after having to drive bricks.

Other considerations would be opto-isolating the gate drive from the arduiner - a habit I intend to continue after having seen too many micros and 74 series chips die to failures in the power side propagating to innocent logic. Note, optos with built in logic output may seem convenient, but often have propagation delays up into the tens of microseconds - not good when those microseconds constitute a nontrivial quantity of clock cycles and degrees of rotation. I'll probably end up using some variant of this (6N137).


Time for some board layout...


No comments:

Post a Comment