Robot Movil Controlado por Telecomandos
Descripción General
Este robot realiza varias tareas por medio de instrucciones específicas enviadas por comunicación serial, el usuario será quien elegirá que tarea realizara el robot. Para el envió de instrucciones se realizara atreves de un pc con el programa Coolterm, este programa nos permitirá poder interactuar con el sistema de control del robot así que podremos enviar comandos y ver los datos entregados por el robot. El robot posee un par de ruedas operadas por motores nema 17 que serán los que generaran el movimiento del robot, el robot también cuenta con un buzzer o dispositivo de salida de audio el cual generara una señal dependiendo el comando entregado por el usuario esta señal tendrá una nota asignada y un tiempo de acción entonces dependiendo del comando ingresado se podrá escuchar una nota por el tiempo programado. Parte fundamental del robot es el sensor de color el cual estará activo siempre, a su vez el sensor de color entregara una señal a la pantalla TFT, la cual nos mostrara el valor obtenido por el sensor de color. Para el correcto funcionamiento del robot se deben de garantizar varios aspectos como lo son la alimentación eléctrica del robot y la conexión con un computador con el software necesario, para la conexión del robot con un computador se necesita de un cable USB de tipo a-b y el programa coolterm, teniendo el cable solo se deberá realizar la conexión virtual de la tarjeta a el computador, para la alimentación del robot se necesitara una fuente que cumpla con los siguientes rangos: Entre 5 a 12 V DC Y 3 A 5 A. En caso de usar una fuente que no esté entre estos rangos de trabajo podría presentarse inconvenientes tales como que el robot no funcione o poder dañar los componentes del mismo.
- TARJETA DE CONTROL
La tarjeta STM32F411RE Es la unidad de procesamiento y control que gobierna el robot. En donde recibiremos todas las señales provenientes de los distintos sensores que componen el robot. https://www.st.com/content/ccc/resource/technical/document/user_manual/98/2e/fa/4b/e0/82/43/b7/DM00105823.pdf/files/DM00105823.pdf/jcr:content/translations/en.DM00105823.pdf
2. SENSORES
2.1 SENSOR DE COLOR
EL sensor que utilizáremos para nuestro proyecto será el TCS3200 con el cual detectaremos cuatro colores (amarillo, rojo, azul y verde) .Los TCS3200 son sensores que convierten en frecuencia la intensidad de luz medida por una matriz de fotodiodos. La frecuencia entregada por el sensor TCS3200 es mayor cuanta mayor luminosidad se detecte. La matriz de fotodiodos permite promediar el valor medido para compensar diferencias de color en la superficie muestreada así como disponer de filtros de color (en el modelo de color RGB) que, al ir alternando su estado, sirven para distinguir cada componente. https://polaridad.es/sensor-color-tcs3200-frecuencia-arduino/
2.2 Modulo Joystick.
Un joystick suele estar formado por dos potenciómetros a 90º que transforman el movimiento en X e Y del mando en una señal eléctrica proporcional a su posición y que además suele incluir un botón. Así pues, suelen tener 5 pines: X, Y, botón y 3.3V y GND. Para el robot se ha utilizado un módulo joystick desde el cual se podrá manipular el desplazamiento robot, este movimiento se va a restringir a 4 ejes que serán el eje X y el eje Y mediante los cuales podremos hacer movimientos básicos tales como ir adelante o atrás o girar, el control de este se manejara por medio de la stm que dependiendo el voltaje que le entregue el joystick enviara una señal acorde a los motores permitiendo el movimiento, para esta parte se limitan los movimientos en sentido diagonal del robot debido a la inestabilidad del movimiento.
3. ACTUADORES
3.1 BUZZER
El actuador que utilizaremos será el SMD BUZZER el cual trabaja a un voltaje de 5 vdc. Por medio de una señal de salida PWM generada por nuestra tarjeta de control y enviada a este buzzer reproduciremos sonidos de diferentes tonalidades en donde cada tono sera asignada a la identificación de un color.es decir se escuchara un tono específico para cada color.
3.2 MOTORES
Para el sistema de traccion de este vehiculo se usaran los motores nema 17, estos motores trabajan a 1.68A por bobina y un de Voltaje 2.7 V y dando 200 Pasos por revolución. Para poder realizar el control de los motores es necesario el uso de los drivers en este caso se utilizan los DRV8825 El dispositivo tiene dos controladores de puente H y un indexador de micropasos, y está destinado a impulsar un motor paso a paso bipolar. El bloque del controlador de salida consta de MOSFET de potencia de canal N configurados como puentes en H completos para impulsar los devanados del motor. El DRV8825 es capaz de conducir hasta 2.5 A de corriente desde cada salida (con un disipador de calor adecuado, a 24 V y 25 ° C).
3.3 PANTALLA TFT
El display LCD TFT 2.4" es una pantalla a colores táctil con una resolución de 240x320 píxeles, controlador gráfico ILI9341, controlador táctil XPT2046, comunicación SPI y puede mostrar hasta 262144 colores RGB distintos. Agregar este display a nuestros proyectos con Arduino es muy sencillo, a nivel de hardware solo necesita de 5 pines de datos (SPI), en cuanto a la programación con Arduino se recomienda utilizar la librería: Adafruit_ILI9341. El display incluye además un socket para memorias SD, útil para almacenar imágenes en formato mapa de bits (bmp). El adaptador de tarjetas se conecta por un puerto SPI al Arduino. El display y la memoria SD pueden compartir el bus de comunicación SPI (SCK, MISO, MOSI) pero deben utilizar pines de CS (chip select) separados.
Funcionamiento General.
Sensor de Color / TFT
Una vez conectado el robot al computador se iniciara la tarjeta de control y de inmediato empezara a trabar el sensor de color, este sensor emitirá una luz proyectada por medio de 4 leds ubicados en la parte frontal del sensor estos leds ayudaran al sensor para facilitar la identificación de los colores, este sensor siempre estará activo así que solo basta con poner uno de los colores (Rojo, Azul, Verde, Amarillo) en frente del sensor y por medio de la pantalla TFT se podrá visualizar el resultado de la lectura del sensor, para que el sensor trabaje adecuadamente se deben garantizar que no la tonalidad manejada para los colores sea la correcta ya que la variación en los tonos podría presentar interferencias con el filtrado de los datos del color, también se debe de tener en cuenta la luz ya que demasiada luz podría interferir con el funcionamiento para esto el sensor cuenta con una caja de protección que además cuenta con un grado de inclinación previamente definido para que el sensor trabaje de mejor manera. Para la calibración de este sensor se realizaron una serie de pruebas de estabilidad esto con el fin de encontrar el punto de funcionamiento óptimo del sensor, luego se realizaron una serie de pruebas en las que se hacía lectura de 20 datos tomados por el sensor en aproximadamente 10 segundos, una vez tomados estos datos lo que se hiso fue verificar y buscar una estabilidad en los resultados de cada color. Luego de obtener y fltrar estos datos lo que se hace es relacionar estos datos unos con otros y con eso buscar un rango de trabajo para cada uno de esta manera el rango de error del sensor se reduce en gran medida.
PANTALLA TFT.
Para la configuración de esta pantalla será necesario el uso de bibliotecas especiales que nos brinda el fabricante con fin de facilitar el uso y programación de la misma, también se debe de configurar inicialmente los colores a los cuales se desea que trabaje la pantalla tanto el color del fondo asi como si se desea que aparezca un texto también se debe de configurar el color de la letra, otro punto a tener en cuenta es la orientación en la que se trabajara la pantalla este debido a que la pantalla tiene la capacidad de trabajar en cualquier orientación.
Una vez que el sensor de color a tomado la lectura y enviara los datos tomados a la STM esta realizara el filtrado de los datos obteniendo un resultado, luego de tener el resultado del sensor de color la STM enviara los datos del color a la pantalla y esta mostrara la lectura del sensor, la pantalla esta configurada para que al mostrar el mensaje sea con un fondo del color obtenido y un breve mensaje indicando cual es el color.
Buzzer.
Para el funcionamiento del buzzer se deberá de realizar la conexión con el pc desde coolterm una vez conectados solo se deberá de elegir cual será la nota que se desea escuchar y el tiempo por el que desea este activo el buzzer, para el envio de este comando se tendra que enviar el comando FF (Telecomando) seguido de la nota que se representar con números previamente asignados (01, 02, 03, 04), seguido se deberá de asignar el tiempo de duración del tono que es decisión del usuario. Una vez elegido el comando a enviar se podrá ver el funcionamiento del buzzer.
Desplazamiento.
Para poder mover el robot se debe de realizar la conexión con el computador y tener la alimentación del robot, para el sistema de movimiento del robot se podrá elegir como desea que este trabaje si de manera automática con movimientos simples o si desea tener el control de los movimientos del robot.
• Automático: Si se desea que el robot se desplace automáticamente se deben de entregar una serie de comandos a la tarjeta de control, al igual que el sensor de color ya cuenta con unos valores asignados para cada acción. Para empezar se deberá de enviar desde coolterm el comando FF (Telecomando) seguido del movimiento a realizar (05: Adelante, 06: Atrás, 07: Giro de 90 grados a la derecha, 08: Giro de 90 grados a la izquierda), para los comandos 05 y 06 se deberá de asignar también el número de vueltas que será asignado por el usuario, para los movimientos 07 y 08 el robot solo realizara el giro y se detendrá. En este modo también se podrá ajustar la velocidad del carro para esto se deberá de enviar desde Coolterm el comando FF(Telecomando) seguido del comando 09 luego se deberá de elegir la velocidad deseada (01:Lento, 02: Media, 03: Alta), luego de elegir la velocidad se podrá observar desde el siguiente tele comando que al ejecutar los movimientos el robot variara la velocidad de los motores.
• Manual: Para el modo manual lo primero será enviar el comando correspondiente para que el robot inicie el programa para esto se debe enviar por Coolterm el comando FF(Telecomando) 0A, de esta manera el robot entrara a trabajar en modo manual, para manipular el robot se deberá de hacer por medio del joystick, este gobierna el movimiento del robot en 4 ejes entonces permitirá realizar desplazamientos adelante, atrás, y giros a izquierda o derecha.
PLATAFORMA DE COMUNICACIÓN
Lo primero para iniciar sera realizar la conexion de la tarjeta al coolterm, para realizar la conexion sera necesario conectar la STM al computador y abrir el programa de coolterm, lo siguiente sera ir a la pestaña de opciones de inmediato abrira una pestaña emergente en la que nos devera de reconocer el puerto del computador al que esta conectado nuestra STM, en caso de que no aparesca se debe re-escanear los puertos si el problema persiste desconecte la STM y vuelva a intentarlo.
Cuando este conectada la STM lo siguiente sera abrir la pestaña para el envio de datos para esto se pulsara la pestaña de connection y se seleccionara la opcion de send string, cuando se abra esta pestaña lo primero sera seleccionar el lenguaje en el cual deseamos enviar los datos en este caso se debe elegir la opción de Hex, luego solo se deberá de enviar el comando el cual se desea que realizara el robot.
Descripcion General del programa.
En esta parte se realizara una pequeña explicacion del metodo de programacion comandos usados y su implementacion.
Descripción de la Programación.
Para empezar se debe de incluir las librerías que necesitaremos para la programación.
- include "mbed.h"
- include "Motor.h"
- include "scolor_TCS3200.h" Luego de haber incluido las bibliotecas necesarias se deberá de realizar las definiciones de las variables necesarias. Tales como: Puerto serial, PWM outs, Temporizadores y Sensor de color, luego se deberá de realizar declaración de constantes y declaración de variación globales y su tipo de datos, ademas de devera de relacionar los pines usados en la STM para la conexion de los demas dispositivos tales como los drivers o el sensorde color. En esta parte tambien se debera de realizar la configuracion de coolterm que sera nuestra interfaz para la recepcion y entrega de datos.
De igual manera se deberán de realizar estos procedimientos con los demas componentes teniendo en cuenta las variaciones y valores que cada uno debe de manejar, ya que para el buzzer se maneja una frecuencia, para los motores de trabaja con un voltaje y un amperaje y los drivers se encargaran de dar sentido de giro y cantidad de pasos al motor mediante su pines que entregaran señales en un sistema de flancos de altas y bajas siendo básicamente el flanco de subida un 1 y el de bajada un 0, de esta manera para la configuración de sentido de los motores se manejara bajo esta condición.
Luego se debe de realizar el ajuste inicial de los valores de entrada de ciertas variables para poder iniciar el programa, así que en esta parte solo se iniciaran las variables con varios valores determinados.
Luego se procede a la ejecución de uno de los telecomandos que es el del joystick, el funcionamiento del joy stick sera en cruz asi que no tomaremos los valores entregados en movimientos diagonales por lo que solo utilizaremos los vectores X,Y. El joystick entrega una señal de voltaje que variara dependiendo de la posición en que se encuentre con respecto al voltaje de origen o cuando el joystick esta en reposo, cuando se manipula el joystick este genera un aumento o disminución de voltaje en su señal de salida, para hacer que este se una a los motores solo se deberá de realizar una parametrizacion que sera básicamente una relación entre posición y voltajes. luego de tener los datos de voltajes y posiciones se relacionaran los movimientos del joystick al de los motores. llamando los mismos casos que para los tele comandos.
Luego de esto ingresamos al main principal de nuestro programa desde acá se ejecutaran todas las acciones del programa, como primer medida se inicializa el buzzer en 0 esto para que este apagado hasta que se envié una señal, luego se realizara la habilitación de la interrupción en el puerto de recepción de datos. Luego entraremos a un condicional while para la recepción de los datos, en primer lugar se espera hasta que se ingrese el comando FF que es iniciar tele comando en caso de que no fuera FF si no otro comando el recibido el programa no iniciara, luego de que se ingrese el tele comando FF se deberá de elegir el tele comando que se desea ejecutar(Lectura de color, buzzer, motores). luego de ingresado el segundo valor procederá al siguiente if si lo requiere. Aca se solicitara el ultimo dato que nos dara el tiempo de duración de la tarea de realizar que seria el tiempo que durara encendido los motores oel buzzer. Luego de que todos los comandos recibidos esten bien pasara todos los while y ejecutara nuestro switch case.
Estructura de switch: Esta estructura nos permitirá decisiones para más de dos posibilidades en el programa donde tendremos en cada caso diferentes “sentencias” donde tendremos un switch formando parte de la secuencia de anteriores condiciones el cual me permitirá ejecutar el swithc. Para el primer switch, tenemos una condición donde entrará a ejecutarse cuando recibamos el comando, en este caso el color que vallamos a poner; vamos a tener el primer case, donde se estará ejecutando la función leer-color. Dando al siguiente case el cual almacenaremos en la función duración_tono que este va a hacer igual al parámetro el cual tendremos asignado, para así tener como finalidad el tono que en este caso estará dado por el color que se este censando para tener la nota DO. Para este case damos la asignación del tiempo de duración en segundos, que será en este caso de 5 segundos de duración del buzzer, con su respectiva nota. Al pasar al case de Motores Nemas 17, tenemos la asignación por case de ir hacia adelante, atrás, izquierda y derecha, donde los dos primeros casos estarán asignados por un parámetro, y los casos de giro estarán dados por la función y su determinación de giro de 180 grados, determinando en movimiento dando un rue y false, dependiendo el giro. Para el case de velocidad, estará determinada por tres funciones el cual recibirá dando la ejecutarían 01, 02, 03, para su variedad de velocidad, alta, media y baja, esta estaría dada la función velocidad. Debemos tener en cuenta que para entrar a switch, antes se deberá ejecutar la telemetría FF después de 01 a 0A y finalizando con el parámetro que seria 01,02,03. Para el buzzer tenemos que el ciclo útil del buzzer estaba en 0, por lo cual no sonara, por tal motivo se pone al 50% del periodo, dando una espera en el tiempo ingresado en segundos de 0.5. Si tenemos que no cumple con ningún case de los valores anteriores e, entonces cooltrem.prinf inicia nuevamente, dando a ingresar un nuevo tele-comando, para empezar a leer un nuevo case. Vamos a tener el almacenamiento en la variable tipo_tono el cual el buzzer estará dado por la duración del tono y el tiempo asignado en segundo.
Para la realización de la programación de nuestros motores creamos una clase esto quiere decir que es como otro programa el cual llamamos desde nuestro programa principal pero el cual nos dará más organización en nuestro código En nuestro programa utilizamos tres tipo de velocidades alta (300), media (200) y baja (100) para nuestros motores, se configuro para que se moviera adelante, atrás e izquierda y derecha de la siguiente forma.
· Forward :Da un sentido de giro al motor
· Back: Genera un sentido de giro contrario al de Forward
· Left: Configura el sentido de giro de ambos motores de manera contraria para girar hacia la izquierda
· Right:Configura el sentido de giro de ambos motores de manera contraria e inverso al de Left() para girar hacia la derecha
· Stop: Detiene el motor dejando el movimiento libre. Pin Enable = 0
· StopT: Detiene el motor truncando o enclavando el movimiento (Lo mantiene quieto).
· StepFreq (long n): maximo350,Configura la Velocidad en Número(n) de pasos por segundos. Es decir la Frecuencia de paso.
· RunStep: Se mueve el motor la cantidad de pasos ingresada
· Run: Gira el motor durante el tiempo ingresado, si es 0 indefinidamente hasta llamada a Stop.
· Run: Girar n vueltas
· Gir: Para llamar esta función PRIMERO se debe definir la frecuencia de paso Gira el móvil la cantidad de grados indicados en sentido indicado ,en función del radio de las llantas y el radio del eje que une las llantas
Ya indicando la parte de la clase de nuestros motores en el código principal la telemetría por la cual la vamos a llamar del coolterm es de la siguiente forma Adelante 0x05 , Atrás 0x06 Izquierda 0x07 y Derecha 0x08.
RESULTADOS.
Please log in to post comments.