Línea seguidor Robot - Control PID - Setup Android (6 / 12 paso)

Paso 6: Aplicación de la lógica del Sensor

El sensor infrarrojo consiste en un individuo IR LED y un fotodiodo IR. La luz IR emitida por el LED incide en la superficie y se refleja hacia el fotodiodo IR. El fotodiodo entonces da un voltaje de salida proporcional a la reflectividad de la superficie (alto valor para la luz de la superficie) y baja para la superficie de negro oscuro. En el caso de los sensores utilizados, un circuito integrado en el módulo genera como salida una señal digital simple (alto: oscuro; BAJO: La luz). Un potenciómetro instalado en el módulo (ver foto) ajustará el nivel correcto de la luz para ser considerado "oscuro" o no. Actúa de forma que cuando el color de la luz reflejado es negro oscuro, un nivel alto ("1") se genera en su producción y un bajo ("0") por otro color más claro. Aquí usé un módulo integrado con 4 sensores y módulo adicional con un único sensor (forma diferentes, pero la misma lógica). La combinación es un arreglo de 5 sensores que creo que es bueno para un buen control como explicado abajo.

La serie de 5 sensores está montada de forma que si sólo un sensor se centra con relación a la línea negra, sólo que el sensor específico producirá un alto. Por otro lado, se calculará el espacio entre sensores para permitir que 2 sensores pueden cubrir todo el ancho de la línea negra simultáneamente, produciendo también una alta en ambos sensores (ver las fotos aquí).

La matriz del sensor posible al seguir una línea de salida son:

  • 0 0 0 0 1
  • 0 0 0 1 1
  • 0 0 0 1 0
  • 0 0 1 1 0
  • 0 0 1 0 0
  • 0 1 1 0 0
  • 0 1 0 0 0
  • 1 1 0 0 0
  • 1 0 0 0 0

Tener 5 sensores, permite una generación de una "variable de error" que ayudará a controlar la posición del robot sobre la línea, como se muestra a continuación.

Vamos a considerar que la condición óptima es cuando el robot está centrado, con la línea justo debajo de "medio sensor" (Sensor 2). La salida de la matriz será: 0 0 1 0 0 y en esta situación, el "error" será "cero". Si el robot empieza a conducido a la izquierda (la línea "parece mover" la derecha") debe aumentar el error con una señal positiva. Si el robot comienza a moverse a la derecha (la línea "parece mover" izquierda"), de la misma manera, el error debe aumentar, pero ahora con una señal negativa.

Relacionadas con la variable de error con el sensor de estado será:

  • 0 0 0 0 1 == > error = 4
  • 0 0 0 1 1 == > error = 3
  • 0 0 0 1 0 == > error = 2
  • 0 0 1 1 0 == > error = 1
  • 0 0 1 0 0 == > error = 0
  • 0 1 1 0 0 == > error = -1
  • 0 1 0 0 0 == > error = -2
  • 1 1 0 0 0 == > error = -3
  • 1 0 0 0 0 == > error = -4

Mirando el código de Arduino, cada uno de los sensores se define con un nombre específico (considerar que la línea siga Sensor más a la izquierda debe asignarse con una etiqueta "0"):

const int lineFollowSensor0 = 12;

const int lineFollowSensor1 = 18;

const int lineFollowSensor2 = 17;

const int lineFollowSensor3 = 16;

const int lineFollowSensor4 = 19;

En orden de almacenamiento se crearán los valores de cada sensor una variable de matriz:

int LFSensor [5] = {0, 0, 0, 0, 0};

Cada posición del array se actualizará constantemente con la salida de cada uno de los sensores:

LFSensor [0] = digitalRead(lineFollowSensor0);

LFSensor [1] = digitalRead(lineFollowSensor1);

LFSensor [2] = digitalRead(lineFollowSensor2);

LFSensor [3] = digitalRead(lineFollowSensor3);

LFSensor [4] = digitalRead(lineFollowSensor4);

Tener el valor de cada uno de los sensores, se debe implementar una lógica para generar la variable de error:

Si ((LFSensor [0] == 0) & & (LFSensor [1] == 0) & & (LFSensor [2] == 0) & & (LFSensor [3] == 0) & & (LFSensor [4] == 1)) error = 4;

else if ((LFSensor [0] == 0) & & (LFSensor [1] == 0) & & (LFSensor [2] == 0) & & (LFSensor [3] == 1) & & (LFSensor [4] == 1)) error = 3;

else if ((LFSensor [0] == 0) & & (LFSensor [1] == 0) & & (LFSensor [2] == 0) & & (LFSensor [3] == 1) & & (LFSensor [4] == 0)) error = 2;

else if ((LFSensor [0] == 0) & & (LFSensor [1] == 0) & & (LFSensor [2] == 1) & & (LFSensor [3] == 1) & & (LFSensor [4] == 0)) error = 1;

else if ((LFSensor [0] == 0) & & (LFSensor [1] == 0) & & (LFSensor [2] == 1) & & (LFSensor [3] == 0) & & (LFSensor [4] == 0)) error = 0;

else if ((LFSensor [0] == 0) & & (LFSensor [1] == 1) & & (LFSensor [2] == 1) & & (LFSensor [3] == 0) & & (LFSensor [4] == 0)) error =-1;

else if ((LFSensor [0] == 0) & & (LFSensor [1] == 1) & & (LFSensor [2] == 0) & & (LFSensor [3] == 0) & & (LFSensor [4] == 0)) error = -2;

else if ((LFSensor [0] == 1) & & (LFSensor [1] == 1) & & (LFSensor [2] == 0) & & (LFSensor [3] == 0) & & (LFSensor [4] == 0)) error = -3;

else if ((LFSensor [0] == 1) & & (LFSensor [1] == 0) & & (LFSensor [2] == 0) & & (LFSensor [3] == 0) & & (LFSensor [4] == 0)) error = -4;

Artículos Relacionados

LINUSBot - Robot seguidor de línea - con control PID

LINUSBot - Robot seguidor de línea - con control PID

LINUSBot - Robot seguidor de línea - con control PIDLINUSBot - Control PIDSe trata de un complemento de la primera "instructables" de LINUSBot (línea que sigue el robot).Ahora el robot tiene control de movimiento realizado por un controlador PID
Línea siguiente Robot con el control PD básico (proporcional-derivado)

Línea siguiente Robot con el control PD básico (proporcional-derivado)

Este Instructable demostrará cómo utilizar control PD (Proporational-derivado) de un seguidor de línea simple. El ejemplo utiliza el seguidor de línea desarrollado en el seguidor de línea básico Instructable:Se utilizarán los siguientes componentes:1
Línea siguiente robot con algoritmo PID

Línea siguiente robot con algoritmo PID

línea siguiente robot diseñado con Solidworks e implementado con arduino, ardumoto para el control de las ruedas y una barra de sensor con 8 sensores infrarrojos. Para cualquier duda con respecto a esta línea que sigue por favor dejadme un comentario
Robot control remoto frambuesa Pi (PS3 controlador) - neurálgico Fablab

Robot control remoto frambuesa Pi (PS3 controlador) - neurálgico Fablab

Estas instrucciones de intentan asumir muy poco. Que si se puede arrancar un Raspberry Pi y tiene conexión a internet debe ser capaz de completar este pequeño gran proyecto.Básicamente, este es un proyecto que resultará en algunas áreas específicas q
DIY Robot RC con su Android teléfono Tutorial parte 2: Bluetooth/microcontrolador partes y cableado

DIY Robot RC con su Android teléfono Tutorial parte 2: Bluetooth/microcontrolador partes y cableado

en la parte 2 de este tutorial, se introducen detalles de piezas y el cableado. Usted aprenderá cómo construir el Control del Robot RC paso a paso. También proporciona la base para la parte 3 que se muestra cómo conectarse a un puente H y motores. ¡
Mano robot controlable con Flex sensores y Servos

Mano robot controlable con Flex sensores y Servos

Este Instructable le mostrará cómo hacer una mano robótica controlable que es controlada con Arduino microcontrolador y servo motores. La mano robótica se trasladará directamente usando un guante de la mano.Antes de comenzar me gustaría dar crédito a
"DIY - excelente línea TRACER ROBOT sin microcontrolador"

"DIY - excelente línea TRACER ROBOT sin microcontrolador"

HolaSoy Ajinkya DixitEste es mi primer proyecto de robótica - "La línea TRACER ROBOT sin microcontrolador"Estos robot no contiene ningún tipo de microcontroladores, en lugar de otro utiliza solo circuito integrado (IC) y algunas otras piezas de
Boe Bot/Arduino línea siguiente robot

Boe Bot/Arduino línea siguiente robot

esta es una guía bastante clara de cómo construir una línea que sigue el robot. utiliza luces, luz resistencias dependientes (LDRs), un arduino y un chasis de boe bot (funcionará cualquier chasis robot con 2 servos de rotación continua). Lee los sens
ActoBitty línea siguiente Robot

ActoBitty línea siguiente Robot

Aprender a construir una línea que sigue el robot usando la ActoBitty y un Arduino. A continuación es la lista de hardware necesario para completar este build.Hardware requerido1 x Kit de Robot Actobitty 2 ruedas (https://www.servocity.com/html/actob
Línea siga robot, ninguna programación requerida

Línea siga robot, ninguna programación requerida

esta es la línea siguiente robot que diseñado y construido para una evaluación de diseño electrónico de CNAE. la idea vino a mí jugando con resistencias dependientes de luz (LDR), darse cuenta de que se puede variar la velocidad del motor cuando se c
Gesture control car(robot) con Arduino y Android(bluetooth)

Gesture control car(robot) con Arduino y Android(bluetooth)

Hola amigos,Aquí es un proyecto interesante por todo lo que mentes creativas que hay. Vamos a construir un auto RC android teléfono controlado.Nada podría ser más fascinante que los coches de controlados remotos. Éste utiliza Bluetooth para la comuni
Más simple del mundo línea siguiente Robot

Más simple del mundo línea siguiente Robot

Aquí en este instructable voy a mostrarte cómo hacer la línea del mundo más simple siguiente robot. Más simple en términos de número de piezas y la complejidad del circuito.La mayoría de la línea después de robots en internet utilizan complejos circu
EZ Robot Controlled Lost in Space B9 Robot

EZ Robot Controlled Lost in Space B9 Robot

Esta es mi réplica exacta de tamaño completo de perdidos de la década de 1960 programa en Robot B9 de espacio. Yo he estado construyendo durante unos 2 años. La animación es controlado por 3 tableros de control EZ Robot (EZB) y sus archivos de voz fu
Construir un robot control remoto

Construir un robot control remoto

En este post voy a describir cómo diseño, hacer, probar y mejorar un controlador remoto RC modificado para requisitos particulares.El objetivo de este proyecto es crear un mando que puede ser alternativo a un transmisor de RC o controladores comercia