Cirkit Designer Logo
Cirkit Designer
Your all-in-one circuit design IDE
Home / 
Project Documentation

Arduino-Controlled DC Motor Driver for Multi-Directional Movement

Image of Arduino-Controlled DC Motor Driver for Multi-Directional Movement

Circuit Documentation

Summary

This circuit is designed to control multiple DC motors using an Arduino UNO and L298N DC motor drivers. The L298N motor drivers allow for bidirectional control of the motors, enabling them to run forwards and backwards. The Arduino UNO serves as the central controller, sending signals to the motor drivers to manage the operation of the motors.

Component List

L298N DC Motor Driver

  • Description: A dual H-bridge motor driver that can control the direction and speed of two DC motors.
  • Pins: OUT1, OUT2, 12V, GND, 5V, OUT3, OUT4, 5V-ENA-JMP-I, 5V-ENA-JMP-O, +5V-J1, +5V-J2, ENA, IN1, IN2, IN3, IN4, ENB

DC Motor

  • Description: A standard DC motor used for driving mechanical loads.
  • Pins: pin 1, pin 2

Arduino UNO

  • Description: A microcontroller board based on the ATmega328P, used for programming and controlling the circuit.
  • Pins: UNUSED, IOREF, Reset, 3.3V, 5V, GND, Vin, A0, A1, A2, A3, A4, A5, SCL, SDA, AREF, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0

Wiring Details

L298N DC Motor Driver (Instance 1)

  • OUT1 connected to pin 2 of DC Motor (Instance 1)
  • OUT2 connected to pin 1 of DC Motor (Instance 1)
  • ENA connected to D12 of Arduino UNO
  • 12V connected to power supply
  • GND connected to GND of Arduino UNO
  • 5V connected to 5V of Arduino UNO
  • OUT3 connected to pin 2 of DC Motor (Instance 2)
  • OUT4 connected to pin 1 of DC Motor (Instance 2)

L298N DC Motor Driver (Instance 2)

  • OUT1 connected to pin 2 of DC Motor (Instance 3)
  • OUT2 connected to pin 1 of DC Motor (Instance 3)
  • ENA connected to D9 of Arduino UNO
  • 12V connected to power supply
  • GND connected to GND of Arduino UNO
  • 5V connected to 5V of Arduino UNO
  • OUT3 connected to pin 2 of DC Motor (Instance 4)
  • OUT4 connected to pin 1 of DC Motor (Instance 4)

Arduino UNO

  • D2 connected to IN1 of L298N DC Motor Driver (Instance 1)
  • D3 connected to IN2 of L298N DC Motor Driver (Instance 1)
  • D4 connected to IN3 of L298N DC Motor Driver (Instance 1)
  • D5 connected to IN4 of L298N DC Motor Driver (Instance 1)
  • D10 connected to ENB of L298N DC Motor Driver (Instance 1)
  • D6 connected to IN1 of L298N DC Motor Driver (Instance 2)
  • D7 connected to IN2 of L298N DC Motor Driver (Instance 2)
  • D8 connected to IN3 of L298N DC Motor Driver (Instance 2)
  • D11 connected to IN4 of L298N DC Motor Driver (Instance 2)
  • D12 connected to ENA of L298N DC Motor Driver (Instance 2)
  • 5V connected to 5V of L298N DC Motor Driver (Instance 1 and 2)
  • GND connected to GND of L298N DC Motor Driver (Instance 1 and 2)

Documented Code

void setup() {
  // Set control pins for the first driver as outputs
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);

  // Set control pins for the second driver as outputs
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}

void loop() {
  // Run the first motor forward
  digitalWrite(2, HIGH);
  digitalWrite(3, LOW);
  analogWrite(9, 255); // Motor speed

  // Run the second motor backward
  digitalWrite(4, LOW);
  digitalWrite(5, HIGH);
  analogWrite(10, 255); // Motor speed

  // Run the third motor forward
  digitalWrite(6, HIGH);
  digitalWrite(7, LOW);
  analogWrite(12, 255); // Motor speed

  // Run the fourth motor backward
  digitalWrite(8, LOW);
  digitalWrite(11, HIGH);
  analogWrite(13, 255); // Motor speed

  delay(2000); // Run for 2 seconds

  // Stop the motors
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  analogWrite(9, 0);
  analogWrite(10, 0);

  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(11, LOW);
  analogWrite(12, 0);
  analogWrite(13, 0);

  delay(2000);
}

This documentation provides a comprehensive overview of the circuit, detailing the components used, their connections, and the code that controls the operation of the motors.