Dual Channel Motor Driver Module HG7881 / L9110 up to 12VDC 800mA Per Channel

  • Was  RM12.00 
  • RM8.00

  • Product Code: Motor Driver HG7881
  • Availability: In Stock

HG7881 (Another version of the L9110 motor driver) Dual Channel Motor Driver Module is a compact board that can be used to drive a small robots. This tiny module has two independent HG7881 motor driver chips which can each drive up 800mA of continuous current. 2.5V to 12V able to enabling this module to be used with both 3.3V and 5V microcontrollers.

A PWM Pulse Width Modulation signal is used to control the speed of a motor and a digital output is used to change its direction. This module can also be used to drive a single 5-wire 2-phase stepper motor.



  • Operating voltage: DC 2.5V - 12V
  • Maximum output current: 800 mA (continuous) / channel
  • Number of channels: 2
  • Board size: 30 mm x 23 mm




Motor Forward / Reverse
IA IB Motor State
L L Off
H L Forward
L H Reverse
H H Off

We recommend applying a PWM signal to input IA to control the motor speed and a digital output to input IB to control its direction.

Note: The actual direction that "Forward" and "Reverse" turn your motor will depend on how it is oriented and wired. If your motor spins the wrong way, either swap the motor wires that connect to the output terminals or change the way the IA and IB bits get set in your program.


Connect HG7881 to an Arduino

Importantly, we are currently feeding our motor 5v through our driver. This driver as explained above may work up to 12v (but never more than 1 amp) , or burn it. In order to achieve that we will reach 12v supply this voltage via an external source (This will do it in future tutorials), but basically would power the driver with the external source instead of the Arduino.

Arduino Sketch:

int M1_Left = 12; //Direccion
int M1_Right = 11; //Direccion

void setup()
  pinMode(M1_Left, OUTPUT);
  pinMode(M1_Right , OUTPUT);

void loop(){
  turn (1);
  delay(1000); //1 sg
  delay(250); //250ms

  delay(1000); //1 sg
  delay(250); //250ms

void turn(int direction)
  boolean inPin1 = LOW;
  boolean inPin2 = HIGH;

  if(direction== 1){
    inPin1 = HIGH;
    inPin2 = LOW;
    digitalWrite(M1_Left, inPin1);
    digitalWrite(M1_Right , inPin2);

void stop(){
    digitalWrite(M1_Left, LOW);
    digitalWrite(M1_Right , LOW);

As we can see in the code, it works in 2 directions through a boolean must define it in the 2 data that you send via the digital output " digitalWrite (M1_Left, inPin1) digitalWrite (M1_Right , inPin2);".   

Write a review

Note: HTML is not translated!
    Bad           Good


Related Products

Tags: Motor Driver, L298