

A hub motor is an electric motor integrated directly into the wheel hub of a vehicle, eliminating the need for external transmission systems. This design allows the motor to provide direct drive to the wheel, resulting in a compact and efficient solution for electric propulsion. Hub motors are widely used in electric bicycles, scooters, and other electric vehicles due to their simplicity, reliability, and ease of installation.








Below are the general technical specifications for a typical hub motor. Note that specific values may vary depending on the manufacturer and model.
| Parameter | Value |
|---|---|
| Motor Type | Brushless DC (BLDC) or Brushed |
| Voltage Range | 24V, 36V, 48V, or higher |
| Power Output | 250W to 2000W (or more) |
| Torque | 10 Nm to 100 Nm |
| Speed | 200 RPM to 1000 RPM |
| Efficiency | Up to 90% |
| Weight | 2 kg to 10 kg (depending on size) |
For a brushless hub motor, the wiring typically includes the following connections:
| Pin/Wire Color | Function | Description |
|---|---|---|
| Yellow | Phase A | One of the three motor phase wires |
| Green | Phase B | One of the three motor phase wires |
| Blue | Phase C | One of the three motor phase wires |
| Red | Hall Sensor Power (+5V) | Supplies power to the Hall sensors |
| Black | Hall Sensor Ground | Ground connection for the Hall sensors |
| Yellow (thin) | Hall Sensor A | Outputs position feedback from Hall sensor A |
| Green (thin) | Hall Sensor B | Outputs position feedback from Hall sensor B |
| Blue (thin) | Hall Sensor C | Outputs position feedback from Hall sensor C |
Note: Some hub motors may include additional wires for features like temperature sensors or electronic braking.
Below is an example of how to control a hub motor using an Arduino UNO and a motor controller.
// Example: Controlling a hub motor with Arduino UNO
// This code uses PWM to control motor speed via a motor controller.
// Define the PWM pin for motor speed control
const int motorPWM = 9; // Connect to the motor controller's PWM input
// Define the direction control pin
const int motorDir = 8; // Connect to the motor controller's direction input
void setup() {
// Set the motor control pins as outputs
pinMode(motorPWM, OUTPUT);
pinMode(motorDir, OUTPUT);
// Initialize motor direction to forward
digitalWrite(motorDir, HIGH);
}
void loop() {
// Gradually increase motor speed
for (int speed = 0; speed <= 255; speed++) {
analogWrite(motorPWM, speed); // Set motor speed (0-255)
delay(20); // Wait for 20ms
}
// Gradually decrease motor speed
for (int speed = 255; speed >= 0; speed--) {
analogWrite(motorPWM, speed); // Set motor speed (0-255)
delay(20); // Wait for 20ms
}
// Reverse motor direction
digitalWrite(motorDir, LOW);
delay(1000); // Wait for 1 second before repeating
}
Note: Ensure the motor controller supports PWM input and is compatible with the Arduino's 5V logic level.
Motor Does Not Spin
Motor Spins in the Wrong Direction
Motor Overheats
Jerky or Noisy Operation
Controller Does Not Respond
Can I use a hub motor without a controller? No, a motor controller is essential for regulating power delivery and interpreting Hall sensor signals.
What is the difference between a brushed and brushless hub motor? A brushed motor uses mechanical brushes for commutation, while a brushless motor uses electronic commutation, offering higher efficiency and durability.
Can I use a hub motor for regenerative braking? Yes, many hub motors support regenerative braking when paired with a compatible controller.
How do I calculate the required battery capacity for my hub motor? Multiply the motor's power rating (in watts) by the desired runtime (in hours) and divide by the battery voltage to get the capacity in ampere-hours (Ah).
Is it possible to use a hub motor in water? Only if the motor is specifically designed to be waterproof. Otherwise, exposure to water can damage the motor and its components.