Summary of A simple brushless sensorless motor driver for AVR Atmega
This article describes a simple, sensorless brushless DC (BLDC) motor driver designed for the AVR Atmega microcontroller. It utilizes open-loop startup and Back-EMF zero-crossing detection via ADC to control motor speed and direction. While the code is functional for specific needs, it requires user configuration for ZC thresholds, port assignments, timer interrupts, and running steps. Speed adjustments are limited to when the motor is stationary unless digital implementation is added.
Parts used in the Simple Brushless Sensorless Motor Driver:
- AVR Atmega microcontroller
- Brushless DC (BLDC) motor
- Inverter or switching power supply
- Analog-to-Digital Converter (ADC)
- Timer interrupt system
Brushless electric motor (BLDC motors) are synchronous motors that are powered by a DC electric source via an integrated inverter/switching power supply, which produces an AC electric signal to drive the motor.
For an introduction to BLDC motors, please look at my sensored motor driver post, here: http://davidegironi.blogspot.it/2013/09/a-simple-brushless-sensored-motor.html
For this project, I’ve implemented a simple brushless sensoreless motor driver for AVR Atmega. The code i propose it’s not perfect, and can be improved, but for the needs i had it works.
The motor can be controlled in speed and direction (clockwise and anti-clockwise).
This project use open loop startup and bemf zero crossing detection method with ADC.
Speed change can be done only when motor is not running, ADC is used during spinning phase in zc detection so it can not be used during the motor spinning, but digital speed changing can be implemented.
ZC threshold current should be defined by user depending on the motor type.
User has to setup the port used to read the the bemf current. Also the timer interrupt and prescaler should be setup for different running frequency.
The running step for the motor are defined as default, anyway user can change it to fit any motor.
For more detail: A simple brushless sensorless motor driver for AVR Atmega
- How does the BLDC motor receive power?
The motor is powered by a DC electric source through an integrated inverter that produces an AC signal. - Can this project change motor speed while spinning?
No, speed changes can only be done when the motor is not running because the ADC is occupied with zero crossing detection. - What method is used for startup and detection?
The project uses open loop startup and Back-EMF zero crossing detection methods with ADC. - Is the motor capable of reversing direction?
Yes, the motor can be controlled in both clockwise and anti-clockwise directions. - Who defines the ZC threshold current?
The user must define the ZC threshold current depending on the specific motor type. - What settings require user configuration?
Users must setup the port for reading BEMF current, timer interrupts, prescalers, and default running steps. - Does the code cover all possible improvements?
No, the proposed code is not perfect and can be improved for other needs.