Skip to content
Julián Fernández Ortiz edited this page Dec 5, 2015 · 4 revisions

Abstract

El circuito del coche es el encargado de hacer que el coche se mueva en todas las direcciones requeridas para que el brazo se desplace hasta el objeto. Para ello se necesitan:

  • Dos motores para mover las ruedas traseras (que será donde se ejerza la fuerza para el movimiento).
  • Un Puente H que nos servirá para cambiar el sentido de giro de los motores y por tanto e las ruedas.
  • Un sensor de ultrasonido que nos dirá la proximidad del móvil con los diferentes obstáculos que se encuentre.
  • Placa Arduino para regir el movimiento del coche (p.ej. si se encuentra con un obstáculo que entienda que ha de detenerse y buscar otra vía de movimiento).
  • Batería que alimente todo lo anteriormente expuesto.
  • Regulador de Tensión para obtener los voltajes adecuados para los diferentes componentes con la batería.
  • Placa perforada para el ensamble de todos los componentes.

A continuación se detalla todo lo necesario de todos los componentes para el proyecto.

Puente H

El puente se utilizará para controlar el motor de DC que controlará el eje trasero del coche de la base.

Especificaciones técnicas del puente

  • Utiliza ST' L298N chip, puede directamente dos 3-30V DC motor de accionamiento y proporcionan una interfaz de salida de 5V, alimentación 5V sistema de circuitos de chip único, control de apoyo 3.3VMCU

  • Puede controlar fácilmente la dirección y velocidad del motor DC, también controlan el paso-a-paso 2-fase

  • Conductor: L298N H doble puente controlador de Motor DC IC

  • Impulsado por parte de la tensión de alimentación terminal: VMS 5 ~ 35V

  • Impulsado por parte del pico de corriente Io: 2A por puente

  • La parte lógica de la tensión de alimentación terminal: 4.5 ~ 7V

  • La parte lógica de la gama actual de funcionamiento: 0 ~ 36mAColor

  • Señal de control rango de voltaje de entrada: 4.5 ~ 5.5V (alto) / 0V (bajo)

  • Máxima potencia absorbida: 20W

  • Dimensiones: 2,36 x 2,17 en en x 1,02 en (6,0 cm x 5,5 cm x 2,6 cm)

  • Peso: 1.23 oz (35 g)

Cómo usar el L298N con Arduino

Este módulo basado en el chip L298N te permite controlar dos motores de corriente continua o un motor paso a paso bipolar de hasta 2 amperios. Nosotros sólo lo utilizaremos para controlar el motor del eje trasero (el que tiene las dos ruedas grandes).

El módulo cuenta con todos los componentes necesarios para funcionar sin necesidad de elementos adicionales, entre ellos diodos de protección y un regulador LM7805 que suministra 5V a la parte lógica del integrado L298N. Cuenta con jumpers de selección para habilitar cada una de las salidas del módulo (A y B). La salida A esta conformada por OUT1 y OUT2 y la salida B por OUT3 y OUT4. Los pines de habilitación son ENA y ENB respectivamente.

En la parte inferior se encuentran los pines de control del módulo, marcados como IN1, IN2, IN3 e IN4.

Conexión de alimentación

Este módulo se puede alimentar de 2 maneras gracias al regulador integrado LM7805.

Cuando el jumper de selección de 5V se encuentra activo, el módulo permite una alimentación de entre 6V a 12V DC. Como el regulador se encuentra activo, el pin marcado como +5V tendrá un voltaje de 5V DC. Este voltaje se puede usar para alimentar la parte de control del módulo ya sea un microcontrolador o un Arduino, pero recomendamos que el consumo no sea mayor a 500 mA.

Cuando el jumper de selección de 5V se encuentra inactivo, el módulo permite una alimentación de entre 12V a 35V DC. Como el regulador no esta funcionando, tendremos que conectar el pin de +5V a una tensión de 5V para alimentar la parte lógica del L298N. Usualmente esta tensión es la misma de la parte de control, ya sea un microcontrolador o Arduino.

Se recomienda nunca conectar una tensión de entrada al pin de +5V, cuando el jumper de selección de 5V se encuentre activado. Esto provocaría un corto y podría dañar permanentemente el módulo.

Ejemplo de control de un motor (nuestro caso)

Se mostrará el ejemplo de control un motor DC a través de la salida B del módulo. El pin ENB se conectará con el jumper a +5V.

El ejemplo esta desarrollado en Arduino UNO, pero el código es compatible con cualquier Arduino, pingüino, funduino...etc.

Esquema de conexión

Código en Arduino

El programa básicamente activa el motor en un sentido por 4 segundos, luego detiene el motor por 0.5 segundos, después activa el motor en sentido inverso por 4 segundos y por último detiene el motor por 5 segundos. Luego repite la acción indefinidamente.

/* 

 El programa activa el motor en un sentido por 5 segundos, 
 para el motor por 1 segundo, activa el motor en sentido inverso por 4 segundos 
 y se detiene por 5 segundos. Luego repite la acción indefinidamente.

 `*/`

int IN3 = 5; 
int IN4 = 4;

void setup()
{
  pinMode (IN4, OUTPUT);    // Input4 conectada al pin 4 
  pinMode (IN3, OUTPUT);    // Input3 conectada al pin 5
}
void loop()
{
  // Motor gira en un sentido
  digitalWrite (IN4, HIGH);
  digitalWrite (IN3, LOW); 
  delay(5000);
  // Motor no gira
  digitalWrite (IN4, LOW); 
  delay(1000);
  // Motor gira en sentido inverso
  digitalWrite (IN3, HIGH);
  delay(4000);
  // Motor no gira
  digitalWrite (IN3, LOW); 
  delay(5000);`
}

Control de un motor DC variando su velocidad

Se controlará la velocidad del motor con PWM Este PWM será aplicado a los pines de activación de cada salida o pines ENA y ENB respectivamente, por tanto los jumper de selección no serán usados.

Esquema de conexión

Código en Arduino

El programa controla la velocidad de un motor DC aplicando PWM al pin ENB del módulo L298N.


/* 

 Ejemplo de control de motor DC usando modulo L298
 
 */

int IN3 = 5;    // Input3 conectada al pin 5
int IN4 = 4;    // Input4 conectada al pin 4 
int ENB = 3;    // ENB conectada al pin 3 de Arduino
void setup()
{
 pinMode (ENB, OUTPUT); 
 pinMode (IN3, OUTPUT);
 pinMode (IN4, OUTPUT);
}
void loop()
{
  //Preparamos la salida para que el motor gire en un sentido
  digitalWrite (IN3, HIGH);
  digitalWrite (IN4, LOW);
  // Aplicamos PWM al pin ENB, haciendo girar el motor, cada 2 seg aumenta la velocidad
  analogWrite(ENB,55);
  delay(2000);
  analogWrite(ENB,105);
  delay(2000);
  analogWrite(ENB,255);
  delay(2000);
  // Apagamos el motor y esperamos 5 seg
  analogWrite(ENB,0);
  delay(5000);
}

HC-SR04: Sensor ultrasónico para Arduino

El HC-SR04 es un sensor de ultrasonidos realizado específicamente para la tecnología de Arduino. Su método de actuación se basa en la emisión y recepción de sonido en ultrasonido para medir el tiempo de propagación del mismo y así la distancia a la que están los objetos.

Conexión con Arduino

Será tan fácil cómo realizar la conexión reflejada en el siguiente esquema:

Programa en Arduino

Es tan simple como descargar la librería que se puede encontrar en este enlace y seguir los pasos que ahí se indican.

Una vez descargada e instalada la librería para obtener la distancia con el objeto tendremos que escribir lo siguiente en el software de Arduino.

#include<Ultrasonido.h>
Ultrasonido ultrasonido(9,8,100);
int distancia;
void setup()
{
Serial.begin(9600);
}
void loop()
{
distancia=ultrasonido.Distancia();
Serial.println(distancia);
delay(500);
}