Electric Bicycle BLDC Motor Control Circuits 500W 1000W

| February 27, 2022 Updated
Electric Bicycle BLDC Motor Control Circuits 500W 1000W

A few months ago, a friend said that the electric bicycle brain was faulty, so I said bring it and we’ll see. High power BLDC motor control documents can be useful for code repair or project development. There is also a 250w 36v electric bike motor control scheme made in China. The explanations below are the edited translation.

The first project is based on STM32F103 microcontroller, USART bluetooth module, MPU6050 chip for angle measurement, ACS712 current sensors, IR2184s mosfet drivers are used. It also sends data via bluetooth. It can control a 500W 30km/h motor.


Active components used in the project;

STM32F103C8T6 ARM microcontroller

1x ASM1117 3.3v Linear Voltage regulator for 3.3v

ACS712ELCTR-05B-T (+-5 amps max) Hall Current Sensor in 2 Separate Phases – For measuring phase current

3x IR2184s Gate Driver for Half Bridge. Onboard fixed Deadband 1 per N-Fet Pair

2x XL7005A SMPS Max 80v input Output adjustable 1 Used to generate 15-20v for Gate driver ICs Other generates 5-12v for Current sensors

6Axis Accel/Gyro with nifity in Invensense MPU6050 (no login required) filtering

Bluetooth / UART signals The board always displays the board voltage, motor speed, motor current, etc. sends data about The baud rate is 115200 bit/s.

Maximum temperature protection: When the temperature reaches 65ºC, EUC will beep 2 fast and go to protection No temperature sensor on board. The temperature value returned by the system’s MPU6050 is being used. The STM32F103 has a built-in temperature sensor, but it looks like this sensor will need to be calibrated on the production line.

UART Bluetooth protocol information

START sequence: 0x18 0x5A 0x5A 0x5A 0x5A 0x55 0xAA
The next 12 bytes will contain the following data and calculate the actual value:
Voltage = signed 16bit int, actual value = value / 100.0 (ie 188C = 6284 / 100 = 62.84V)
Speed ​​= signed 16-bit int, actual value = value / 100.0 * 3.6
Trip = signed/unsigned 32 bit int, actual value = value / 1000.0 (kilometers)
Current = signed 16 bits, actual value = value / 100.0 (A)
Temperature = signed 16bit int, actual value = value / 340.0 + 36.53 (Celsius)
Unknown: 0x0 (sometimes 0, 1 or 2)
LAST sequence: 0x0 0xff 0xfe 0x0

• Beep: Vibrates for five seconds: “b”
• Vibrate for five seconds: “,bbbbbbbb”
• Drive mode – Madden: “hb”
• Driving mode – Comfort: “fb”
• Driving mode – Comfort: “sb”
• Horizontal alignment: “,cycycy”
• Display current: “m”
• Check the temperature

Teensy 3.2 BLDC Motor Controller


The other project is based on Teensy 3.2 module using 32-bit ARM CortexM4 architecture. It can be programmed using the adapted version of the Arduino IDE program (Teensyduino) or directly in the C language.

A simple brushless (BLDC) sensor motor controller. It is designed to drive electric vehicles such as electric bicycles, skateboards or Eco-Marathon vehicles. The controller can handle about 1kW of rated power.

This controller is designed to fill a gap in the generally released motor controller designs. It will serve as an introduction to power electronics and is simple enough for those unfamiliar with motors to understand. For this purpose, the controller is designed to be as simple and easy to understand as possible. It therefore lacks more complex features such as sensorless control or current feedback control, but these features can be easily added with some modifications. This project is meant to be a learning tool and a foundation for creating potentially more complex designs.

BLDC motor driver features

15v-60v working voltage
20A continuous current, 40A peak current (with big heatsink)
Automatic sensor identification
Extremely simple code. <200 lines with comments Duty cycle control Completely open source

FILE DOWNLOAD LINK LIST (in TXT format): 28116a.zip pass: 320volt.com


Published: 2022/02/27 Tags: ,

Leave a Reply

Your email address will not be published. Required fields are marked *