

A DC motor is an electromechanical device that converts direct current (DC) electrical energy into mechanical energy. It operates on the principle of electromagnetic induction, where a magnetic field interacts with a current-carrying conductor to produce rotational motion. DC motors are widely used in various applications due to their simplicity, reliability, and ease of control.








Below are the general technical specifications for a typical DC motor. Note that actual values may vary depending on the specific model of the DC motor.
| Parameter | Specification |
|---|---|
| Operating Voltage | 3V to 12V DC |
| Rated Current | 100mA to 2A (depending on load) |
| Stall Current | Up to 5A (varies by model) |
| Speed | 1000 to 5000 RPM (no load) |
| Torque | 0.1 to 1.5 Nm (varies by model) |
| Shaft Diameter | 2mm to 6mm |
| Dimensions | Varies (e.g., 25mm x 20mm x 15mm) |
| Weight | 20g to 200g |
DC motors typically have two terminals or wires for connection. These are:
| Pin/Wire Name | Description |
|---|---|
| Positive (+) | Connects to the positive terminal of the power supply. |
| Negative (-) | Connects to the negative terminal of the power supply or ground (GND). |
Some DC motors may include additional features, such as an encoder for speed and position feedback, which would have extra pins or wires.
Below is an example of controlling a DC motor using an Arduino UNO and an L298N motor driver.
OUT1 and OUT2 pins of the L298N driver.IN1 and IN2 pins of the L298N to Arduino digital pins 9 and 10, respectively.ENA pin of the L298N to Arduino digital pin 3 (for PWM speed control).VCC and GND pins.// Define motor control pins
const int IN1 = 9; // Motor direction control pin 1
const int IN2 = 10; // Motor direction control pin 2
const int ENA = 3; // Motor speed control (PWM) pin
void setup() {
// Set motor control pins as outputs
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(ENA, OUTPUT);
}
void loop() {
// Rotate motor forward at 50% speed
digitalWrite(IN1, HIGH); // Set IN1 high
digitalWrite(IN2, LOW); // Set IN2 low
analogWrite(ENA, 128); // Set PWM duty cycle to 50% (128/255)
delay(2000); // Run motor for 2 seconds
// Rotate motor backward at 75% speed
digitalWrite(IN1, LOW); // Set IN1 low
digitalWrite(IN2, HIGH); // Set IN2 high
analogWrite(ENA, 192); // Set PWM duty cycle to 75% (192/255)
delay(2000); // Run motor for 2 seconds
// Stop the motor
digitalWrite(IN1, LOW); // Set IN1 low
digitalWrite(IN2, LOW); // Set IN2 low
analogWrite(ENA, 0); // Set PWM duty cycle to 0%
delay(2000); // Wait for 2 seconds before repeating
}
Motor Not Spinning:
Motor Spins in the Wrong Direction:
IN1 and IN2 signals in the code.Motor Overheating:
Excessive Noise or Interference:
Can I connect a DC motor directly to an Arduino? No, the Arduino cannot supply the high current required by the motor. Always use a motor driver or an H-bridge circuit.
How do I control the speed of a DC motor? Use PWM (Pulse Width Modulation) to vary the average voltage supplied to the motor, which controls its speed.
What happens if I exceed the motor's rated voltage? Exceeding the rated voltage can cause overheating, reduced lifespan, or permanent damage to the motor.
Can I use a single power supply for both the motor and the Arduino? Yes, but ensure the power supply can handle the combined current requirements of both the motor and the Arduino. Use proper decoupling to prevent voltage drops or noise affecting the Arduino.