coche-robot-barato-con-arduino-esquema

Coche robot 2WD barato con Arduino- Esquema eléctrico

Continuamos con la serie de entradas destinadas a hacer un coche robot barato. En la primera entrada vimos el presupuesto y en la segunda entrada el montaje del robot. En esta entrada toca ver el esquema de conexión eléctrica.

A lo largo de las entradas de la serie hemos visto que no hay una única forma de montar nuestro coche robot si no que una de las partes divertidas es podemos hacer distintas configuraciones a nuestro gusto. Si tenéis dudas sobre las posibles variaciones, mirar las entradas anteriores.

Entre las muchas opciones y variaciones posibles vamos a ver el esquema eléctrico que vamos a ver es uno de las más habituales,

  • Porta baterías de 4 pilas AA
  • Arduino Nano
  • Controlador de motores L298N
  • Dos encoders infrarrojos
  • Sensor de ultrasonidos HC-SR04 montada sobre un servo SG90
  • Barra infrarroja, para seguidor de líneas.

Este esquema de conexión es una configuración generalista que viene bien para ilustrar porque agrupa muchos componentes distintos (servo, ultrasonidos, infrarrojos). Pero insistir en que la podéis modificar a vuestro gusto siempre que tengáis suficientes pines libres.

Esquema general

Empezamos con un esquema general de nuestro robot, con la disposición aproximada de cada dispositivo. En la siguiente sección entraremos en detalle en cada componente.

robot-2wd-arduino-conexion-esquema

A grandes rasgos, la corriente es suministrada por el portapilas que alimenta tanto el Arduino Nano y el controlador de motores L298N.. Disponemos de un interruptor para apagar o encender el robot. Por su parte, el L298N tiene conectados ambos motores DC.

Por otro lado el Arduino Nano controla todo el resto de dispositivos. Es decir Arduino controla el L298N, ambos encoders (izquierdo y derecho), el sensor de ultrasonidos HC-SR04, el servo para mover el HC-SR04, y la barra de infrarrojos para hacer un seguidor de líneas.

Esquemas detallados

A continuación vamos a ver el esquema de conexión de cada componente en detalle. Para que sea más sencillo seguir la conexión, hemos asignado un color en los esquemas a cada componente. La siguiente leyenda muestra el color de cada componente en los esquemas.

Porta baterias
Arduino Nano
Controlador de motores L298N
Encoders
Sensor de ultrasonidos HC-SR04
Servo
Detector líneas

Porta baterias

La alimentación del robot parte del porta baterias de 4 pilas AA, al que ponemos un interruptor en el negativo para poder encender y apagar el robot.

La conexión es sencilla. Simplemente conectamos Gnd a través del interruptor a los Gnd del Arduino Nano y el controlador de motores L289N y, por otro lado, alimentamos Arduino Nano y el L298N conectando Vcc, respectivamente, a Vin y Vm.

robot-2wd-arduino-conexion-baterias

Las 4 pilas de AA nos dan una tensión de entre 5.8-6.4V, según el estado de carga de las pilas. Esto es adecuado para los motores que estamos montando, así que alimentamos el controlador L298N directamente desde las pilas.

Por otro lado, esta tensión también es adecuada para encender el Arduino Nano a través del puerto Raw (o Vin) que hace uso del regulador de tensión interno.

No alimentar Arduino por el pin 5V, la tensión es demasiado elevada y podemos dañarlo.

Arduino Nano

El Arduino Nano es el cerebro de todo el sistema y controla todos los demás dispositivos. Recibe la alimentación de las baterías a través del pin Raw (o Vin), y Gnd.

robot-2wd-arduino-conexion

El Nano necesita 6 pines para controlar el L298N, dos de los cuales deben ser salidas PWM. También necesitamos 2 para los encoders, que conviene estén asociados a interrupciones.

Por otro lado, controla los componentes (opcionales) servo, sensor de ultrasonidos HC-SR04, y la barra de detección de infrarrojos.

Controlador de motores L298N

El controlador de motores L298N recibe alimentación de las baterías a través de los pines Vm y GND. Dado que la tensión 5.8-6.4V el jumper de la placa debe estar cerrado.

Por otro lado el L298N tiene conectados los motores. La polaridad condiciona el sentido de giro, pero no os preocupéis porque podemos arreglarlo más adelante, incluso en código.

Lo que si es conveniente es que en lugar de conectarlos “simétricos” (que es la tendencia natural) los conectemos en la misma posición según miras a la ficha. Si no un motor girará en dirección contraria (aunque también podemos arreglarlo después).

robot-2wd-arduino-conexion-l298n

Por otro lado, tenemos 6 pines de control desde Arduino. De ellos, IN1, IN2, IN3 e IN4 controlan el sentido de giro, y ENA y ENB la velocidad. Estos dos últimos es necesario que sean salidas PWM.

Por este motivo, aunque nos obliga a cruzar un cable, hemos elegido que ENA y ENB sean D9 y D10 porque son salidas PWM alimentadas desde el mismo Timer, lo cual favorecerá a que el robot vaya en línea recta más fácilmente.

Encoders

La conexión de los encoders es muy sencilla. Simplemente alimentamos ambos módulos desde Arduino a través de los pines Gnd y Vcc del encoder. Por otro lado, conectamos los pines de salida (DO) de ambos módulos a dos pines digitales de Arduino.

robot-2wd-arduino-conexion-encoder

Para el funcionamiento correcto de los encoders resulta muy conveniente emplear entradas asociadas a interrupciones. En el caso de Arduino Nano recordar que tiene dos pines con interrupciones, D2 y D3.

Sensor ultrasonidos HC-SR04

La conexión del sensor HC-SR04 es sencilla. Alimentamos desde Arduino a través de los pines 5V y Gnd del HC-SR04.

robot-2wd-arduino-conexion-hc-sr04

Por otro lado, conectamos Trig y Echo a dos salidas digitales cualquiera de Arduino. Aunque, llegado el caso de andar escasos de pines, podríamos llegar a controlar el HC-SR04 con un único pin.

Servo

Controlar un servo tampoco debería ser ninguna dificultad. Alimentamos el módulo desde Arduino conectando Gnd y Vcc. Por otro lado, empleamos una salida digital cualquiera para el control.

robot-2wd-arduino-conexion-servo

Al ser un servo pequeño tipo SG90 Arduino puede suministrar potencia suficiente para hacerlo funcionar conectándolo a sus pines.

Si usáis un servo mayor (tipo MG966R), por ejemplo para actuar sobre una garra, necesitaréis una fuente independiente de 5V. Con una tensión de alimentación de 5.8-6.4V, en ese caso podríamos conectar nuestro servo directamente a las baterías.

Detector líneas

Por último, tenemos la barra de sensor de infrarrojos para hacer un seguidor de líneas. Hay muchos tipos de barras, incluso podemos usar sensores de infrarrojos individuales.

robot-2wd-arduino-conexion-detector-lineas

Para hacer un seguidor de líneas el mínimo número de sensores que necesitaremos son 2. El robot intentará mantener la línea entra ambos, oscilando continuamente.

Con un mayor número de sensores el comportamiento del robot mejora mucho ya que, al saber lo alejados que estamos de la línea podemos mejorar el control (por ejemplo, implementando un PID). Un buen número de sensores es 5, por ejemplo.

La barra del esquema tiene 8 sensores, muchos más de los que necesitamos, y no queremos usar tantos pines de Arduino para esto. Así que sólo conectamos 6 de ellos.

La conexión es sencilla, alimentamos el módulo conectando Gnd y 5V a los pines correspondientes de Arduino. También conectamos 5V a IR, para encender los LED infrarrojos. Finalmente, conectamos las 6 entradas centrales a 6 entradas analógicas de Arduino, para realizar la lectura del sensor.

Conclusión

¡Ya hemos tenemos todo lo necesario para conectar y terminar de montar nuestro robot! Más allá del esquema particular, lo más interesante es que veáis porqué cada cosa se conecta donde se conecta y qué función tiene cada componente en el robot.

Así podéis jugar con la configuración del robot. Que no queréis la barra de sensores infrarrojos ¡no la pongáis de momento! ¿Quieres poner tres sensores de ultrasonidos fijos, en lugar de uno encima del servo? Quita el servo. Prefieres otro sensor de distancia, ponerle un laser, una garra… ajusta el proyecto a tus necesidades.

En la próxima entrada de la serie empezaremos con la programación básica para mover nuestro robot, y en futuras entradas profundizaremos en el control de encoders, sensores de distancia y seguidor de líneas.

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github. github-full