

The L9110S is a dual-channel DC motor driver designed to control up to four DC motors. Manufactured by Arduino/ESP32, this versatile component enables bidirectional control of motors, making it an excellent choice for robotics, automation, and other motor-driven applications. It features built-in protection against overcurrent and thermal overload, ensuring reliable operation in demanding environments.








The L9110S motor driver is designed to provide efficient and reliable motor control. Below are its key technical details:
| Parameter | Value |
|---|---|
| Operating Voltage | 2.5V to 12V |
| Output Current (per channel) | 800mA (continuous) |
| Peak Output Current | 1.5A (short duration) |
| Number of Channels | 2 |
| Motor Control | Bidirectional (forward/reverse) |
| Protection Features | Overcurrent and thermal overload |
| Operating Temperature | -25°C to +85°C |
| Dimensions | 28mm x 21mm x 5mm |
The L9110S module has a simple pinout for easy integration into your projects. Below is the pin configuration:
| Pin Name | Description |
|---|---|
| A-IA | Input signal for Motor A (direction control) |
| A-IB | Input signal for Motor A (direction control) |
| B-IA | Input signal for Motor B (direction control) |
| B-IB | Input signal for Motor B (direction control) |
| VCC | Power supply for the module (2.5V to 12V) |
| GND | Ground connection |
| MA1 | Output to Motor A terminal 1 |
| MA2 | Output to Motor A terminal 2 |
| MB1 | Output to Motor B terminal 1 |
| MB2 | Output to Motor B terminal 2 |
The L9110S motor driver is straightforward to use in a circuit. Follow the steps below to integrate it into your project:
VCC pin to a power source (2.5V to 12V) and the GND pin to ground.MA1, MA2, MB1, and MB2 pins.A-IA, A-IB, B-IA, and B-IB pins to the GPIO pins of a microcontroller (e.g., Arduino or ESP32).Below is an example of how to control two DC motors using the L9110S and an Arduino UNO:
// Define motor control pins
const int motorA_IA = 3; // Motor A input A
const int motorA_IB = 5; // Motor A input B
const int motorB_IA = 6; // Motor B input A
const int motorB_IB = 9; // Motor B input B
void setup() {
// Set motor control pins as outputs
pinMode(motorA_IA, OUTPUT);
pinMode(motorA_IB, OUTPUT);
pinMode(motorB_IA, OUTPUT);
pinMode(motorB_IB, OUTPUT);
}
void loop() {
// Example: Rotate Motor A forward
digitalWrite(motorA_IA, HIGH);
digitalWrite(motorA_IB, LOW);
// Example: Rotate Motor B backward
digitalWrite(motorB_IA, LOW);
digitalWrite(motorB_IB, HIGH);
delay(2000); // Run motors for 2 seconds
// Stop both motors
digitalWrite(motorA_IA, LOW);
digitalWrite(motorA_IB, LOW);
digitalWrite(motorB_IA, LOW);
digitalWrite(motorB_IB, LOW);
delay(2000); // Wait for 2 seconds
}
Motors not spinning:
Motors spinning in the wrong direction:
MA1 and MA2, or MB1 and MB2).A-IA, A-IB, B-IA, B-IB).Overheating of the module:
PWM control not working:
Q: Can the L9110S control stepper motors?
A: Yes, the L9110S can control stepper motors by driving the coils in sequence. However, a dedicated stepper motor driver may provide better performance.
Q: Can I use the L9110S with a 3.3V microcontroller like the ESP32?
A: Yes, the L9110S is compatible with 3.3V logic levels, making it suitable for use with ESP32 and similar microcontrollers.
Q: How many motors can I control with one L9110S module?
A: One L9110S module can control two DC motors. To control four motors, you will need two modules.
By following this documentation, you can effectively integrate the L9110S motor driver into your projects and troubleshoot common issues with ease.