John Lim

El micromouse es un robot que utiliza un algoritmo de resolución de laberintos para resolver de forma autónoma un problema de laberinto. En este post, compartiré cómo mi equipo y yo logramos hacerlo con la muy necesaria guía de algunas personas muy útiles.

Durante mi semestre de otoño en UC Berkeley, tomé una clase dirigida por estudiantes para crear un robot que resuelve de forma autónoma un problema de laberinto. Mis pensamientos son que si estás en UC Berkeley, interesado en proyectos de electrónica y buscas un programa altamente guiado con instructores increíbles, ¡este es un gran lugar para estar! Para mí, este curso es especial porque es donde comencé mi viaje hacia la robótica, el retoque y la fabricación, y es uno que disfruté profundamente. Este curso me dio grandes fundamentos, y aprendí más a lo largo del camino a medida que comencé a asumir nuevos proyectos.

Yo, mi equipo y nuestro ratón
Nuestro ratón en el laberinto
Yo, mi compañero de equipo y mis instructores del curso

Aquí hay un conjunto aproximado de instrucciones sobre cómo comenzar su proyecto Micromouse como principiante:

  1. Lista de piezas
  2. Juntar las piezas de hardware
    1. Configurar el Microcontrolador Teensy & Arduino IDE
    2. Introducción de Pinout Teensy
    3. Usar sensores
    4. Regulación de voltaje
    5. Motor de puente H Controlador para controlar el motor
    6. Utilizando el Codificador Rotativo de efecto Hall
    7. Uniéndolo todo
  3. Codificación
    1. Cómo controlar su hardware con código
    2. Detección
    3. Control PID
    4. Algoritmo de resolución de laberintos
    5. Ajuste fino
  4. Cómo solucionar problemas

Lista de piezas

  • Piezas mecánicas
    • Chasis
    • Ruedas
    • Un montón de cinta adhesiva, a menos que tenga la intención de imprimir piezas personalizadas en 3D o gastar dinero para comprar soportes personalizados
  • Piezas eléctricas
    • Tabla de cortar el pan, cables
    • Dos mini Motores de CC de 5 voltios
    • Una batería pequeña de 7 a 9 voltios
    • Regulador de voltaje 7805
    • Codificador rotorario de sensor de pasillo
    • Puente H
    • microcontrolador. Arduino también funciona!)
    • Dos sensores de distancia (Utilicé un sensor infrarrojo)

Ensamblar el hardware

2.1 Configuración del Microcontrolador Teensy & Arduino IDE

Teensy es un microcontrolador que funciona como un Arduino. Una gran ventaja es su tamaño. Como su nombre indica, el Teenst es pequeño y compacto, ¡lo cual es genial!

comenzamos colocando el Teensy en la parte superior de algunos pines, y, a continuación, la soldadura de los pines en el Teensy, y, a continuación, montar firmemente en nuestro tablero.

Colocar los pines en el extremo del tablero de pan
Coloque el Teensy en los pines
la Soldadura de los pines en el Teensy
Conectarse a su ordenador a través de un Cable MicroUSB

Si aún no lo ha hecho, instale Arduino IDE en su ordenador. https://www.arduino.cc/en/Main/Software

MUY IMPORTANTE: Si está utilizando Teensy 3.1, asegúrese de instalar la versión de Arduino que sea compatible con Teensy. Aquí está el enlace para instalar Teensyduino, para que tu Teensy pueda trabajar con el IDE de Arduino: https://www.pjrc.com/teensy/td_download.html

2.2 El circuito

2.21) Fuente de alimentación de batería: la fuente de alimentación debe ser de 7.2 V y superior. Por convención de circuito, podemos llamar a esto Vcc2.

2.22) Fuente de alimentación regulada de 5V: Los componentes de chip electrónico a menudo necesitan un voltaje de fuente de alimentación estable para funcionar correctamente. El problema es que con dispositivos como motores que pueden extraer grandes cantidades variables de corriente, esto hace que la tensión de alimentación descienda. Es por eso que necesitamos un regulador de voltaje para suministrar ese 5V estable a sus otros componentes electrónicos.

 VoltageReg

2.23) Microcontrolador: Este es el cerebro de cualquier robot que parezca tener un semblante de pensamiento inteligente. Un microcontrolador puede parecer complicado al principio, pero para empezar, en realidad no es tan difícil. Aquí están los conceptos básicos: Simple, pero muy importante.

 Microcontroladores

2.23 a) Pines de entrada digitales: Capaces de leer y escribir señales binarias. Diferentes microcontroladores tienen diferentes niveles lógicos, pero la mayoría de los microcontroladores tienen un nivel lógico de 3.3 V o 5V. Por ejemplo, el Arduino es un microcontrolador con un nivel lógico de 5V. Al leer, un voltaje en algún lugar cerca de 5V se registra como ALTO, mientras que un voltaje en algún lugar cerca de 0V se registra como BAJO.

2.23 b) Pines modulados de ancho de pulso (PWM): Estos son pines de entrada digitales con una capacidad especial para emitir una señal modulada de ancho de pulso. Es una señal digital que es alta para un cierto porcentaje de tiempo y baja para otro porcentaje de tiempo. Esto se conoce como el ciclo de trabajo. Una señal PWM con un ciclo de trabajo del 60% es de nivel LÓGICO ALTO el 60% del tiempo, mientras que de nivel lógico BAJO el 40% del tiempo. Obtenga más información sobre PWM aquí.

2.23 c) Pines analógicos: Estos pines son capaces de leer un voltaje analógico en cualquier lugar de 0 a dicha cantidad de voltios. En el caso del Arduino, su 0-5V. Pueden leerlo con diferentes grados de resolución, dependiendo de cuántos bits se use el Convertidor Analógico a Digital. Un convertidor analógico a digital de 8 bits puede leer una resolución de 2^8 = 256. Para un nivel lógico de 5V, puede leer con una precisión de 5V / 256 = 19,5 mV.

2,23 d) Interrupciones digitales: Algunos pines digitales en microcontroladores se pueden configurar como señales de interrupción. Una interrupción es genial. Cuando un pin está configurado como pin de interrupción, detecta (1) un borde de señal ascendente (2) Un borde de señal descendente o (3) Un cambio en el nivel lógico. Cualquiera de estos activará lo que llamamos una rutina de servicio de interrupción (ISR). El ISR es una función corta en el código que se activa cada vez que se detecta una interrupción.

2.26) Motores: Los motores son dispositivos que giran cuando se les da una tensión. En este caso, estamos utilizando el motor de CC cepillado. Se llama así porque hay un cepillo de CC conmutador dentro de él que lo ayuda a girar correctamente cuando se le da un voltaje. Los motores generalmente consumen una gran corriente y todos los motores tienen una cierta potencia nominal de voltaje. Cuando los motores giran, producen un campo electromagnético de retroceso. Esto puede sonar contra intuitivo, pero un motor que gira a su velocidad máxima en realidad consume la menor cantidad de corriente debido al emf trasero. Por el contrario, un motor que está estancado (es decir, que quiere moverse pero no puede debido a fuerzas externas) consume la mayor cantidad de corriente.

Motor

2.25) Controlador de motor: Esto es necesario para controlar la velocidad/dirección de su motor utilizando un microcontrolador. Esto se debe a que su microcontrolador no puede suministrar suficiente voltaje o corriente para accionar un motor. Además, cuando los motores giran, el campo electromagnético generado podría dañar fácilmente su microcontrolador. Se necesita una interfaz entre los dos para controlar la velocidad y la dirección de su motor. El controlador de motor utilizado fue un controlador Cuádruple de Media H SN754410. Lo que hace un controlador de motor es que toma la señal proveniente de su microcontrolador (generalmente una Señal Modulada de Ancho de Pulso) y luego activa un ‘interruptor digital’ de su batería al motor. Lo que hace es que enciende un interruptor digital de la batería al motor de forma extremadamente rápida. Si este interruptor digital está encendido el 100% del tiempo (o el 100% del ciclo de trabajo), el motor está funcionando a plena potencia. Si el interruptor digital está encendido solo el 50% del tiempo, el motor funciona a una potencia del 50%.

motordriver

2.26) Codificadores: Los codificadores son dispositivos inteligentes que detectan el movimiento. Como por ejemplo, algunos codificadores detectan cuántas veces ha girado una rueda, otros son aún más precisos para decirle exactamente qué ángulo ha girado un brazo de robot, etc. Para el Micromouse, estamos utilizando codificadores que detectan cuántas veces ha girado una rueda. Hay codificadores de efecto hall o codificadores ópticos. Dos tipos de codificadores, pero básicamente hacen lo mismo. ¡Activan un pulso digital cada vez que una rueda ha girado! Cómo funciona un codificador de efecto hall es que hay un pequeño imán permanente dentro de algo que está unido al eje del motor. Cuando el motor gira, el imán también gira. Hay sensores que detectan cuando el imán ha pasado. Cuando lo hace, envía un pulso que puede ser leído por un microcontrolador. Normalmente enviamos esa señal a un pin configurado como pin de interrupción digital.Codificador

2.27) Sensores de distancia infrarrojos: Detecta la distancia utilizando Infrarrojos. Lo que hace es disparar una señal infrarroja y esperar a que esa señal rebote para determinar qué tan lejos está el objeto de ella. Puede experimentar, pero si desvía la señal de una superficie inclinada, es posible que no obtenga una lectura de su sensor de INFRARROJOS. Esto hace que no sea tan ideal. Este sensor IR también tiene un alcance limitado que puede detectar distancias. El cable rojo es para alimentación de 5V, cable negro para TIERRA, cable amarillo para señal. Para este sensor de INFRARROJOS en particular, dependiendo de la medida en que el sensor de INFRARROJOS detecte el objeto, emite un voltaje analógico diferente. Lo que puedes hacer es leer ese voltaje analógico usando un microcontrolador. Lea la hoja de datos aquí para obtener más información sobre el sensor IR.

 IRsensor

2.3 Diagramas de circuito & Cableado

Aquí hay un diagrama de circuito aproximado. Nota: yo no especifica exactamente qué pines para conectar los cables. Esto se debe a que los números de pin varían dependiendo del microcontrolador que esté utilizando, pero aquí, les doy los principios generales:

wiringdiagram

Las señales del codificador deben estar cableadas a un Pin de interrupción digital. De esta manera, cada vez que se envía una señal, el microcontrolador puede saber que la rueda ha dado 1 vuelta.

Las señales del sensor Infrarrojo deben estar conectadas a un Pin de entrada analógica.

Las señales que se introducen en el controlador del motor deben salir de un pin PWM.

* Insertar diagrama de circuito

Código 3.0 & Controles:

No publicaré código, pero aquí hay algunos conceptos generales:

3.1 Cómo hacer que el mouse se mueva recto o gire:

Este mouse se controla de manera diferente. Hay dos ruedas, con dos motores en cada rueda. Si ambas ruedas giran a la misma velocidad, el ratón va recto. Si la rueda izquierda se acelera mientras que la derecha se ralentiza, el ratón gira a la derecha. Esto se conoce como control diferencial.

3.2 Controles & corrección de errores

Pero hay que pensar en cómo controlar el ratón. ¿Cómo conseguimos que se mueva dentro del laberinto sin chocar contra una pared? Podríamos pensar que estamos enviando dos señales iguales a los motores izquierdo y derecho para decirle al ratón que siga recto. Así que el ratón debe ir recto a la derecha? Mal! Varias razones pueden hacer que los motores no respondan de la manera en que se lo decimos. Fundamentalmente, cada motor está construido casi igual, pero no exactamente igual. El hardware nunca se construye a la perfección y siempre hay algún error finito.

¿Cómo nos aseguramos de que el ratón se mueva realmente en la dirección que le decimos? Necesitamos lo que se llama control de circuito cerrado. Lo que significa que conectamos sensores para medir la salida y luego volvemos a introducir el resultado en la entrada para realizar la corrección de errores. Más sobre eso más adelante. Necesitamos lo que llamamos un controlador PID (Derivado Integral Proporcional).

En este caso, es posible que deseemos que el ratón mantenga una distancia estricta de la pared. Digamos, a 5 cm de la pared a su derecha. A esto lo llamamos el punto de ajuste. Cualquier desviación del punto de ajuste es lo que llamamos error. Cuando se detecta un error, queremos que el ratón se corrija solo. Cuando el error es grande, queremos una acción de corrección grande. Cuando el error es pequeño, queremos una pequeña acción de corrección.

Los sensores situados en el lateral del ratón determinan la distancia a la que se encuentra el ratón de una pared. Digamos que el ratón está demasiado lejos de la pared a su derecha. Queremos que la rueda izquierda gire más rápido, mientras que la rueda derecha gira más despacio para que el ratón pueda moverse hacia la derecha para corregir el error. Si el ratón está muy lejos del punto de ajuste de 5 cm, como a 10 cm de la pared, queremos que la rueda izquierda gire muy rápido, mientras que la rueda derecha disminuya la velocidad. Si el ratón está a solo 6 cm de distancia de la pared, queremos que la rueda izquierda aumente de velocidad y la rueda derecha disminuya su velocidad, pero solo muy ligeramente.

Leave a Reply

Deja una respuesta

Tu dirección de correo electrónico no será publicada.