Está en la página 1de 8

Robolin 1

Coche robot seguidor de lineas con arduino y


sensor Infrarrojo TCRT5000
Consumo máximo 380 mA
Manual:

- Material necesario
- Montaje
- Esquema eléctrico
- Explicación del código de programación

Filp113 18/03/2017
Material necesario

Chasis 3 ruedas

Bateria lipo 7,5 V / 400 mA

Portafusibles + fusible 1A

Interruptor

Regulador de tension
Módulo LM2596

Doble puente
H L298N

2 bases arduino nano

Arduino nano
Atmega 328
2 Sensores TCRT5000

Diodo 1N4007

Cables varios

Tornillos varios 3mm

2 tiras de 15 pines puenteadas

Metacrilato 9x9 cm
Montaje

Montar chasis 3 ruedas

Doblar metacrilato

6 cm

3 cm
Vista trasera Vista delantera

Montar regleta
Todo GND
Todo VCC

+ =
distacia
1cm

ON / OFF
je
nta
Mo
Esquema electrico

Motor izquierdo Motor derecho


Nota: GND comun
Arduino se alimenta desde
la placa H L298N (5V)

VCC 5V

OUT2 Diodo rectificador 1N4007


OUT1 OUT3 OUT4 3V3 5V Vin
para alimentar arduino
y que arduino no alimente
RST D13
el circuito mientras
le cargamos el codigo AREF D12
de programacion. D11
H L298N Arduino D10

Digital Input/Output
D9
D8
D7
D6
D5
A0

Analogico Input
D4
OUT3 OUT2 A1
Motor D3
Motor A2
Derecho Izquierdo D2
A3
OUT4 OUT1 A4 TX-D1
A5 RX-D0
GND

Input
6V Output
VCC ENA - IN1 - IN2 - IN3 - IN4 - ENB
5V
D5 D7 D6 D10 D8 D9
GND
GND
VCC

GND
VCC
D2

D4

Regular voltage - +
Módulo LM2596
6V

Bateria lipo 7,4V 400mA

TCRT5000 TCRT5000
Sensor izquierdo Sensor derecho

Fusible 1A
Explicación código de programación

TCRT5000 TCRT5000 0 = Blanco


Sensor Izquierdo Sensor Derecho Estado 1 = Negro
0 0 Hacia delante
0 1 Giro derecha
1 0 Giro izquierda
1 1 Stop

int VelocidadMotor1 = 5; // ENA - PWM


int VelocidadMotor2 = 9; // ENB
int Motor1A = 6; // IN2
int Motor1B = 7; // IN1
int Motor2C = 8; // IN4
int Motor2D = 10; // IN3

int infraPin = 2; // izquierdo - pin del infrarrojos utilizado como entrada digital
int infraPin1=4; // derecho
int valorInfra = 0; // Valor inicial de la lectura digital del infrarrojos
int valorInfra1 = 0;

void setup() {
pinMode(infraPin, INPUT);
pinMode(infraPin1, INPUT);
pinMode(Motor1A, OUTPUT);
pinMode(Motor1B, OUTPUT);
pinMode(Motor2C, OUTPUT);
pinMode(Motor2D, OUTPUT);
pinMode(VelocidadMotor1, OUTPUT);
pinMode(VelocidadMotor2, OUTPUT);

analogWrite(VelocidadMotor1, 138); //motor izquierdo PWM


analogWrite(VelocidadMotor2, 120); //motor derecho PWM

digitalWrite(Motor1A, LOW); Ajuste para que los dos motores


digitalWrite(Motor1B, LOW); giren a las mismas revoluciones
digitalWrite(Motor2C, LOW);
digitalWrite(Motor2D, LOW);

void loop() {
valorInfra = digitalRead(infraPin); // valor entrada que lee el infrarrojo izquierdo
valorInfra1 = digitalRead(infraPin1); // valor entrada que lee el infrarrojo derecho
// Lectura de los sensores 0 = blanco
1 = negro

if(valorInfra == 0 && valorInfra1 == 0){ // hacia delante

digitalWrite(Motor1A, HIGH);
digitalWrite(Motor2D, HIGH);
delay(20);
digitalWrite(Motor1A, LOW); Tiempos para el control
digitalWrite(Motor2D,LOW); de la velocidad
delay(20);
}

if(valorInfra == 0 && valorInfra1 == 1){ // Gira hacia la derecha


digitalWrite(Motor1A, LOW);
digitalWrite(Motor2D,LOW);
delay(25);
digitalWrite(Motor1A, HIGH);
digitalWrite(Motor2D,LOW);
delay(20);

if(valorInfra == 1 && valorInfra1 == 0){ // Gira hacia la izquierda

digitalWrite(Motor1A,LOW);
digitalWrite(Motor2D, LOW);
delay(25);
digitalWrite(Motor1A,LOW);
digitalWrite(Motor2D, HIGH);
delay(20);
}

if(valorInfra == 1 && valorInfra1 == 1){ // STOP

digitalWrite(Motor1A, LOW);
digitalWrite(Motor1B, LOW);
digitalWrite(Motor2C, LOW);
digitalWrite(Motor2D, LOW);

}
a c i ón
g ram
d e pro
ó d ig o
ión c
ic ac
Expl

También podría gustarte