Welcome to open-esc: the open esc!
The aim of this project is to produce an ESC that is very high performing, widely applicable, and attractive to manufacture.
GSC will run on these target microcontrollers:
- Giga Device GD32 F350 series (in development)
- STM32 F0 series (working!)
- STM32 F3 series (in development)
- STM32 G0 series (in development)
- STM32 G4 series (in development)
- STSPIN series (in development)
- Active Semi PAC5523 (in development)
open-esc-hardware is a repository of hardware designs supported by this firmware.
To add support for a new hardware, copy one of the exisiting folders in the target directory and change the pin defitions.
Current functionality:
- automatic input signal detection (pwm, oneshot125/42, multishot)
- audio
- open-loop sine-modulated pwm
- closed-loop comparator based commutation
Project roadmap:
- dshot, proshot
- Closed-loop adc based commutation
- Support for dshot commands
- Save/store settings
- Sensored Field Oriented Control
- Sensorless Field Oriented Control
- Support for common communication interfaces (uart, i2c, spi, can, usb)
- GUI configuration
- Bipolar pwm (active braking)
- Support for PAC5523
- Switch from stm32-lib to STM LL, libopencm3 or bare-metal
To build the main application for the selected target board (the default board is wraith32
):
mkdir -p build
cd build
cmake --configure -DTARGET_BOARD=wraith32 ..
make
To flash the program after building (with openocd and st-link programmer), use the flash
make target:
make flash
This project's launch.json
will allow you to debug the program in vscode with the cortex debug extension using an st-link programmer and openocd.
Be Advised: I am developing my understanding of motor control and embedded programming as I work on this project. I am not an expert (yet). Many cool open source projects already exist to control brushless motors. Some day, I might choose to retire this project in favor of developing further one or more of these:
- f051bldc (I see you, @conuthead)
- phobia (stm32, foc)
- blheli_s (assembly, avr, silabs)
- tgy (assembly, avr, silabs)
- openmotordrive (stm32)
- vesc (stm32, foc)
- odrive (stm32)
- betaflight-esc (stm32, not mature)
- sapog (stm32)