1
\$\begingroup\$

I'm looking at replacing some steppers with a BLDC to get smoother operation and higher speed. The BLDC motor we want to use is this one.

It is a small 2-axis robot that requires accurate position control but I also want to have speed control if possible (rather than just a step and direction input). The maximum motor speed is probably less than 100 RPM. The motor is sensorless and I found some sensorless controllers like this one but they don't incorporate position control. The encoder on this motor is SPI anyway so I doubt I'll find such a controller.

There will already be another processor (RPi-based) with the main application running, but it's not capable of the high speed requirements of this real-time motor control so there needs to be another external controller. I figured a motor controller like the one above with a small MCU for closing the position loop might work, but then why not just have the MCU do the whole thing (aside from the extra firmware development required). I was looking at the PIC18F2431 which includes a motor feedback module.

In this case it's likely I would use UART or SPI to send motion profiles and get position and status feedback to/from the MCU.

Any other options or factors I should consider?

\$\endgroup\$
1
\$\begingroup\$

For low rpm or static positioning you cannot use a normal sensorless controller because the back-emf signal is too weak. However your motor has a built-in 14bit encoder which measures absolute rotor angle, simplifying the design of the controller.

A PIC18F2431 should do the job since it has PWM outputs suitable for driving a 3 phase BLDC motor (through a 3 phase FET bridge). The encoder is read via SPI. You would not need the motion control module because the encoder already provides the required information. Firmware would be similar to a brushless gimbal controller, with the addition of angular velocity control.

Be aware that brushless gimbal motors have high winding resistance, which results in low output power and poor efficiency compared to a conventional motor. They are normally powered at low PWM ratios to avoid overheating the windings.

| improve this answer | |
\$\endgroup\$
  • 1
    \$\begingroup\$ Thanks @Bruce, good point on the low speed back-EMF. So the encoder would be used for position and commutation? Can I assume that the position would be referenced to the windings somehow physically? I noticed in the datasheet that the encoder can be zeroed. I'm just concerned about the encoder position being arbitrary relative to the windings. \$\endgroup\$ – AngeloQ Feb 23 '17 at 20:41
  • 1
    \$\begingroup\$ Hopefully the sensor has already been programmed with the correct zero position. If not you may need to calibrate it before first use. \$\endgroup\$ – Bruce Abbott Feb 23 '17 at 20:50
  • \$\begingroup\$ Bruce do you have any thoughts on how that calibration would be done? Would it be something like adjusting the zero reference to achieve maximum torque? \$\endgroup\$ – AngeloQ Mar 1 '17 at 13:18
  • 1
    \$\begingroup\$ Put current through 2 phases to set a specific angle, or spin the motor and compare back-emf zero crossings to the sensor values quantumdevices.wordpress.com/2010/03/17/… \$\endgroup\$ – Bruce Abbott Mar 1 '17 at 17:03
  • \$\begingroup\$ Excellent, thanks. The first method seems obvious now, should have thought of that. \$\endgroup\$ – AngeloQ Mar 1 '17 at 17:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.