Tablero Xpress: robot que evita obstáculos con código XC8

Todos los proyectos que hice hasta ahora usando la placa de demostración Microchip Xpress eran proyectos estacionarios. Esos fueron proyectos en los que la placa Xpress se conectó a la PC mediante un cable USB, con una placa de clic MikroElektronika realizando varias funciones. Pero no tiene por qué ser así. Se puede utilizar la placa de evaluación Xpress de formas más creativas …

Hoy te mostraré cómo usar la placa Xpress para hacer un robot que evite obstáculos, usando una placa como chasis del robot y componentes que están disponibles en todo el mundo. Como tal, debería ser fácil para cualquiera replicar este proyecto.

El hardware

Este robot utiliza un enfoque más exótico: una placa de pruebas WB-104-3 se utiliza como chasis, con motores, bola de arrastre, baterías y un enchufe de placa de clic que se fija directamente en la base de la placa de pruebas. El tablero en sí es de 220 x 120 x 31 mm, con una base de placa de aluminio de 1,2 mm y pesa alrededor de 0,4 kg. El área de la placa de pruebas comprende una regleta de distribución con 100 orificios de distribución y dos regletas de terminales, con un total de 1280 orificios de terminales.

Como la placa de pruebas es bastante pesada, necesitaba algunos motores que pudieran desarrollar suficiente par para poner todo en movimiento. Mi elección fue para los micro-motores Pololu, por su tamaño reducido y la facilidad de fijarlos a la placa de pruebas. Tener una bola de arrastre coincidente en mi inventario de piezas también contribuyó a esta elección.

Micromotores Pololu

Pololu fabrica una amplia gama de micromotores, todos con el mismo tamaño de 10 × 12 x 26 mm. El eje de la rueda añade 9 mm adicionales a la longitud de 26 mm. También hay una versión con un eje más largo de 14 mm, que permite el uso de un codificador.

Hay varios motores disponibles:

Debe evitarse el bloqueo de los motores, ya que esto puede dañar tanto el motor como la caja de cambios. La recomendación general de Pololu para el funcionamiento del motor de CC con escobillas es del 25% o menos de la corriente de bloqueo.

Cada uno de los motores anteriores se puede combinar con una de las once cajas de cambios, con relaciones de cambio que van desde 1: 5 a 1: 1000. Una relación de transmisión baja significa mayor velocidad, pero menor par. Las relaciones de transmisión más altas sacrifican la velocidad para obtener valores de par más altos.

La placa de pruebas que utilicé en este proyecto es bastante pesada, y también tuve que considerar el peso de los componentes, baterías y demás elementos agregados. Como tal, he elegido un motor de 6V HP con una caja de cambios 1: 250. El número de artículo de Pololu es. La corriente máxima de bloqueo de este motor es de 1600 mA, la velocidad sin carga es de 120 RPM y el par de bloqueo es de aproximadamente 0,4 Nm.

Los motores se fijaron al protoboard mediante un par de Soportes de Motorreductor Metálicos Micro Pololu en color negro, con el artículo Pololu # 989. Las ruedas también son de Pololu, tienen un tamaño de 32 × 7 mm, con para la versión negra. Para pasar los cables, hice dos agujeros de 5 mm, en los que puse ojales de goma FIX-GR-15.


Teniendo en cuenta las RPM máximas y el tamaño de la rueda, podemos calcular la velocidad máxima en cm / s:

Esto corresponde a una velocidad sin carga teórica de unos 20 cm / s. En la práctica, debido al robot de peso, se moverá mucho más lento, creo que en algún lugar menos de la mitad de esto. También noté que debido a la alta relación de transmisión, es poco probable que el motor se detenga. En la mayoría de las superficies, las ruedas perderán tracción y comenzarán a girar libremente en lugar de que los motores se detengan.

Controladores de motor

Ahora que tenemos los motores, tenemos que elegir el controlador del motor. El controlador del motor debe cumplir una serie de restricciones:

Mi controlador preferido es el DVR8835 de Texas Instruments, un controlador de motor que contiene dos puentes completos, con una corriente pico máxima de 1.5A. También incorpora muchos circuitos de protección, por lo que es extremadamente difícil de dañar. En cuanto al voltaje, puede funcionar entre 2 y 11V, más que suficiente para la implementación de mi robot. Este controlador de motor en particular tiene dos modos de trabajo seleccionables por el usuario, uno de los modos de trabajo requiere una línea PWM y un pin de dirección por puente, por lo que coincide con las capacidades del PIC16F18855. Para encajar en la placa de prueba utilicé un portador de controlador de motor dual Pololu 2135, que es una placa de conexión compatible con placa de prueba para el DRV8835.

El pin Vcc debe estar conectado al voltaje lógico, en nuestro caso este es 3.3V proporcionado por el regulador a bordo de la placa DM164140 Xpress. Vin está conectado al voltaje de la batería. Para hacer funcionar este motor con solo dos líneas PWM, el pin MODE debe mantenerse alto, conectado a Vcc.

El motor izquierdo está conectado al canal A (pines O2 y O1). Para impulsar este motor, se debe aplicar PWM al pin (A) IN2-EN, la dirección se establece mediante el pin (A) IN1-PH.

El motor derecho está conectado al canal B (pines O2 y O1). Para impulsar este motor, se debe aplicar PWM al pin (B) IN2-EN, la dirección se establece mediante el pin (B) IN1-PH.

Rueda de seguimiento

El robot funciona en una configuración de rueda de arrastre, con motores fijos en aproximadamente 1/3 de la longitud total y una rueda giratoria en la parte trasera. El lanzador de bolas es Pololu item # 953.

Este es un compromiso decente entre maniobrabilidad y la cantidad de piezas utilizadas en el tren de conducción. Obviamente, se pueden usar diferentes configuraciones de motor y es divertido observar cómo la ubicación del motor afecta el rendimiento general.

Conector de clic frontal

Como planeo usar el mismo clic de distancia IR que aparece en el proyecto de evitación de obstáculos Buggy, necesito un conector de clic frontal. Para esto, hice un adaptador de clic con un Proto clic, que fijé en la base de la placa de pruebas con un par de acopladores de montaje PMB-1. He instalado conectores de encabezado en ambos lados del clic Proto, por lo que actúa como un adaptador. Lo único a considerar es que el clic de Proto está hacia abajo, así que tenga cuidado al cablear su proyecto.

Baterías

Usé un soporte de batería para 4 baterías AAA, montado debajo de la placa con cinta adhesiva de doble cara. Tal como está, permite suficiente distancia al suelo para que este robot funcione bien en superficies planas.

Tablero Xpress

Para instalar la placa Xpress en la placa de pruebas, primero soldé los pines del cabezal debajo de la placa Xpress. Para facilitar el acceso a los pines, también instalé algunos cables de puente, como en las imágenes a continuación:


También se instaló un terminal de tornillo en el cabezal de alimentación de la placa Xpress, por lo que puedo alimentarlo desde la placa. La placa Xpress tiene solo un regulador de potencia para el voltaje 3.3. Si se alimenta de esta manera, la energía de la batería también estará presente en el pin de 5 V en el conector de clic, así que no use tableros de clic que requieran 5V.

Cableado del robot

Llegamos aquí a la etapa final, cableando el robot. Primero conectamos los controladores del motor y la energía para la placa Xpress, como se muestra a continuación. El canal A usa el pin RC2 para PWM y RC7 para la dirección, mientras que el canal B usa el pin RC4 para PWM y RC5 para la dirección.

Luego conectamos el clic de distancia IR. Para esto solo necesitamos tres cables: Vcc, GND y la salida analógica AN está conectada al pin RB0, igual que si estuviera instalado directamente en la placa Xpress.

Con esto, el lado del hardware está completo y podemos comenzar a escribir el código.






Código XC8 para el robot que evita obstáculos

El código para el robot se escribe utilizando el compilador MPLAB Xpress IDE y XC8, y el PIC16F18855 se configura mediante Microchip Code Configurator. Luego, el código principal se basa en funciones generadas por MCC.

Este artículo tiene más de dos años y puede contener información obsoleta; todavía se conserva aquí con fines informativos.

Los siguientes ajustes de configuración se realizaron utilizando Microchip Code Configurator:

A continuación, se muestran algunas capturas de pantalla de MCC:





Tenga en cuenta que la resolución de PWM es de 9 bits, por lo que las configuraciones válidas para el ciclo de trabajo están entre 0x00 y 0x01FF.

El código

Nota: si el robot se mueve primero hacia atrás, solo tiene que invertir los pines de salida en el DRV8835.

Publicado originalmente en https://electronza.com el 14 de julio de 2016. Trasladado a Medio el 23 de abril de 2020.