Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino-Controlled Line Following Robot with H-Bridge Motor Driver and IR Sensors

View and Edit Project In Cirkit DesignerImage of Arduino-Controlled Line Following Robot with H-Bridge Motor Driver and IR Sensors

Circuit Documentation

Summary

The circuit in question is designed to control two DC motors using an H-bridge (ponte h) and is interfaced with an Arduino UNO microcontroller. The system also includes two TCRT 5000 IR sensors for input, which are likely used for line tracking or obstacle detection. The power supply for the circuit is provided by two 18650 batteries connected to the Arduino UNO, which also powers the other components through its voltage regulator.

Component List

Arduino UNO

Ponte H

TCRT 5000 IR SENSOR (x2)

DC Motor (x2)

2x 18650 Battery Pack

Wiring Details

Arduino UNO

Ponte H

TCRT 5000 IR SENSOR

DC Motor

2x 18650 Battery Pack

Documented Code

// *** DECLARAMOS LAS VARIABLES QUE VAMOS A UTILIZAR ***
static int PinIN1 = 2;
static int PinIN2 = 3;
static int PinIN3 = 4;
static int PinIN4 = 5;
static int Pin_sensor1 = 8;   // Con este pin recogemos las señales del sensor
static int Pin_sensor2 = 9;   // Con este pin recogemos las señales del sensor

void setup() {
  Serial.begin(9600);               //iniciamos las comunicaciones con el puerto serie para el monitor serie
  pinMode(PinIN1, OUTPUT);
  pinMode(PinIN2, OUTPUT);
  pinMode(PinIN3, OUTPUT);
  pinMode(PinIN4, OUTPUT);
  pinMode(Pin_sensor1, INPUT);       //definimos el pin que vamos a utilizar como entrada para el sensor izquierdo
  pinMode(Pin_sensor2, INPUT);       //definimos el pin que vamos a utilizar como entrada para el sensor derecho
}

void loop() {
  
  int value1 = 0;                        // Variable temporal que usaremos para recoger la señal del sensor izquierdo
  int value2 = 0;                        // Variable temporal que usaremos para recoger la señal del sensor derecho
  value1 = digitalRead(Pin_sensor1);     // lectura digital de pin del sensor1
  value2 = digitalRead(Pin_sensor2);     // lectura digital de pin del sensor2

  if (value1 == LOW && value2 == LOW) 
  {
    Serial.println("adelante");
    MotorAdelante();    
  }
  
  if (value1 == HIGH && value2 == HIGH) 
  {
    Serial.println("detenido");
    MotorStop();    
  }
 
   if (value1 == HIGH && value2 == LOW) // Si el sensor izuierdo detecta una zona oscura    
    {
     Serial.println("izquierda");
     MotorIzquierda();
    }
    
   if (value2 == HIGH && value1 == LOW) // Si el sensor derecho detecta una zona oscura  
    { 
     Serial.println("derecha"); 
     MotorDerecha();
    }
 
  delay(20);                             // Hacemos una pausa en milisegundos, de forma que leemos el sensor cada dicho tiempo
}
  
  void MotorIzquierda()
  {
  digitalWrite (PinIN1, HIGH);            // Motor Izquierdo atras
  digitalWrite (PinIN2, LOW);  
  digitalWrite (PinIN3, HIGH);            // Motor Derecho adelante
  digitalWrite (PinIN4, LOW); 
  }

  void MotorDerecha()
  {
  digitalWrite (PinIN1, LOW);             // Motor Izquierdo adelante
  digitalWrite (PinIN2, HIGH);  
  digitalWrite (PinIN3, LOW);             // Motor Derecho atras
  digitalWrite (PinIN4, HIGH);
  }

  void MotorAdelante()
  {
  digitalWrite (PinIN1, LOW);             // Motor Izquierdo adelante
  digitalWrite (PinIN2, HIGH); 
  digitalWrite (PinIN3, HIGH);            // Motor Derecho adelante
  digitalWrite (PinIN4, LOW); 
  }

  void MotorStop()
  {
  digitalWrite (PinIN1, LOW);             // Motor Izquierdo detenido
  digitalWrite (PinIN2, LOW);
  digitalWrite (PinIN3, LOW);             // Motor Derecho detenido 
  digitalWrite (PinIN4, LOW);
  
  }

The code provided is an Arduino sketch that controls the motors based on the input from the TCRT 5000 IR sensors. The MotorAdelante, MotorStop, MotorIzquierda, and MotorDerecha functions control the motors' movements to go forward, stop, turn left, and turn right, respectively. The loop function reads the sensor values and determines the movement of the motors based on the sensor inputs.