This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

General getting-started BLDC driving/control questions

Folks,

I'm interested in developing a motor controller/driver for a range of small BLDC motors (5-12v, <1amp) generally with a gear train (100-250x), to be used in small mobile robotic devices for K12 education.  General idea is to package MCU, driver and motor in a standardized module, with multiple modules to be used for various functions,

Here's where it gets interesting.  Would like to be able to monitor/control all of the following:

  • RPM, for continuous motion, from very slow speed to max motor RPM.
  • Acceleration/deceleration curves.
  • Count "steps", i.e., changes in pole positions (with n pole pairs per rev)
  • Hold position, like a stepper motor.
  • Single "step", like a stepper (where this will correspond with a small output angle, determined by n and the gear ratio
  • "Micro step" (Is this practical with a BLDC motor?)
  • Force control/feedback by modulating/measuring drive current (via PWM I presume)
  • For motors with and without Hall effect sensors

I'm presuming that I can jump right into the InstaSPIN tool for the continuous motion design, but what about very low speed and stepping?  Treat them as two different control regions, with InstaSPIN for the high end and typical stepper motor control for the low end?

BTW, for purposes of focusing the discussion, assume that I'm a competent embedded system HW and SW designer with MSP430, ARM and (a little) C2000 experience.

Any general pointers or words of wisdom?

TIA,

Mike

  • Hi Mike,

    This sounds like quite a challenge. We will contact our experts for their opinions.

    In general, the InstaSPIN devices do not operate at 5V. When you say 5V, what is the lowest voltage? What are your space and cost constraints?
  • Possible with sensorless
    •RPM, for continuous motion, from very slow speed (how slow is the real discussion) to max motor RPM.
    •Acceleration/deceleration curves.

    Additionally Possible with hall sensors
    •Hold position, like a stepper motor.

    Additionally Possible with encoder
    •Count "steps", i.e., changes in pole positions (with n pole pairs per rev)
    •Single "step", like a stepper (where this will correspond with a small output angle, determined by n and the gear ratio
    •"Micro step" (Is this practical with a BLDC motor?)


    Not sure what you mean by this one
    •Force control/feedback by modulating/measuring drive current (via PWM I presume)


    For most of what you want to do I would recommend using stepper motors. Either sensorless or with an encoder. If you want to use BLDC you pretty much need to use motors with encoders.
  • Rick,

    Thanks for the quick response.  In the anticipated application, it's typical to have a 3 cell LiPo battery, so 11-12vdc is available.  The BLDC motor I'm currently using as a prototype is about 1" dia. and with the gearcase is about 3" long, so a 1"x3" PCB wouldn't be too large (but smaller is desirable -- I'm used to designing and building wearable wireless devices somewhat smaller than that :-)

    Since this is for an educational application, cost is always a consideration.  For reference, the motor I'm now using is $5 (from China).  The ultimate goal is to release it to the community as an open-source design.

    Mike

  • Chris,

    Thanks for the detailed reply. Responding by group:
    • Sensorless for RPM, accel/decel: Got it.
    • Hold, count steps, single step with Hall sensors and encoder: I'm hoping that all of this can be done without an encoder at the resolution(!) of a single BLDC step, i.e., coarse, but made much finer effectively by the gearbox.
    • Similarly, for "micro stepping", presuming a delta UVW wiring for the motor stator, couldn't I position the motor at a "half step" with U positive, and V and W negative with equivalent currents? And move within that single step be varying the average current through V and W via PWM?
    • Re force, I'm presuming I can vary the torque generated by the motor at fixed voltage by varying the drive current (via PWM again). Correct? Conversely, (as I've noted with a simple speed control coupled to the motor), I can estimate the resisting torque of the mechanical load by the average current (useful up to stall torque).

    Yes, there are advantages with stepper motors. But in high-end robotics, I understand it's much more common to use DC servo motors to get a wider range of speeds and force feedback. I'm just trying to bring those advantages down to small, low-cost platforms, especially taking advantage of the plethora of cheap, powerful BLDC motors (e.g., for helicopter drones).

    Thanks again,

    Mike
  • all your questions are going to depend on the gear reduction you use and how many poles you have in your motor. good luck!

  • Chris, et al,

    Thanks for the feedback.  

    After a bit more study and deliberation, it looks like a good starting point for me is the DRV8305N Booster Pack, used as a reference design.  I've started a new thread on the Motor Drivers forum with (I hope) more focused questions: Adapting the DRV8305N BoosterPack Eval Module for low-speed and with Hall sensors

    So we can close the discussion here.

    Mike