Open ESC (Electronic Speed Controller) Version-1
Introduction
OpenESC is an innovative open-source project designed to control Brushless DC (BLDC) motors using an Electronic Speed Controller (ESC). This project aims to provide a highly customizable, accessible, and cost-effective alternative to proprietary ESC systems. By making its hardware and software freely available, OpenESC empowers enthusiasts, researchers, and engineers to build, modify, and enhance their motor control systems.
The development of OpenESC begins with a straightforward open-loop controller and is planned to evolve into a sophisticated closed-loop controller leveraging Back-EMF (BEMF) feedback for enhanced precision and performance.
Key Features
- Open-loop ESC: Initial version based on open-loop control for BLDC motors.
- Back-EMF Feedback: Planned feature for future versions to implement closed-loop control with BEMF sensing.
- MOSFET Control: High-side and low-side MOSFET switching for precise motor control.
- Dead Time and Commutation Delay: Adjustable to prevent shoot-through and optimize commutation timing.
Speed Control Methods
- Potentiometer Control:
- The ESC supports analog speed control through a potentiometer.
- The potentiometer input adjusts the commutation delay, with the delay mapped to a range of 500 to 2000 microseconds, allowing fine-grained control over motor speed.
- Radio Controller Integration:
- The ESC can also be controlled wirelessly using a transmitter and receiver pair.
- The receiver provides a pulse-width modulated (PWM) signal to the ESC. The attachPulseInput() function ensures accurate interpretation of the PWM input.
- The received pulse width is mapped to a commutation delay range of 4000 to 850 microseconds, effectively controlling motor speed.
Challenges and Solutions
The development process faced several challenges:
- Analog Control: Initially, motor speed was controlled using a potentiometer, which worked seamlessly with the analogRead() function.
- PWM Signal Processing: Transitioning to PWM signals from a receiver posed difficulties in achieving stable input interpretation. The team initially used the pulseIn() function but encountered issues with inverted outputs.
- Inverted Signal Resolution: To resolve this, the attachPulseInput() function was implemented, ensuring a stable and correctly interpreted PWM signal, enabling reliable speed control through the receiver.
Conclusion
The initial development phase of OpenESC has been successfully completed, delivering a functional open-loop Electronic Speed Controller (ESC) for Brushless DC (BLDC) motors.