Llevo unas semanas bastante liado en el trabajo, sin ganas de hacer nada al llegar a casa, pero me ha dado tiempo a ir pensando en los requisitos que tendrá Mirage.

Concretamente tengo en mente las siguientes características / requisitos:

  • Control motores (3 señales para control unidireccional y freno).
  • 2-3 microswitches (selección de distintas configuraciones).
  • Señales Tx y Rx de USART (telemetría y ajustes de configuración).
  • Señales programación ICSP (In Circuit Serial Programming).
  • 6-8 entradas (sensores infrarrojos): irán 6 en la barra delantera y quizá 2 más en la parte trasera del robot.
  • Interruptor corriente.
  • Pulsador salida.

Con estos requisitos necesito unos 16 puertos de entrada/salida con dos señales PWM (Modulación por Ancho de Pulso) independientes para controlar la velocidad de cada uno de los motores (será un robot diferencial).

El microcontrolador elegido para adecuarse a los requisitos es el PIC16F876A de Microchip. Éste permite un máximo de 22 E/S, dos PWM por hardware, USART y una velocidad de reloj de hasta 20 Mhz que será más que suficiente para las necesidades.

Aparte de este controlador habrá que integrar algunos componentes más:

  • Driver de motores: el PIC es incapaz de suministrar más que unos pocos mA por sus puertos de E/S, así que hay que recurrir a uno de estos dispositivos para alimentar los motores. Aprovechando un pedido de baterías a Sparkfun he comprado éste porque me parece económico, relativamente potente (1.2 A por canal) y, añadiéndole unos pines, reutilizable para otros proyectos.
  • Regulador DC-DC variable: para obtener una tensión constante y superior a los 3.7v de la batería para alimentar los motores (a unos 6v) he recurrido a un regulador de Pololu.
  • Módulo USART Bluetooth: he comprado este módulo en Sure Electronics con la finalidad de poder comunicarme con el microcontrolador directamente desde el PC sin cables. La gracia de esto es poder realizar distintos ajustes (por ejemplo la velocidad máxima al tomar las curvas) sin tener que detener el robot y reprogramar el micro.
  • Barra de sensores infrarrojos: para detectar la línea construiré una plaquita que incorpore 6 sensores CNY70 junto a las resistencias apropiadas. La lectura de los sensores se transmite como una señal analógica, pero yo en el robot prefiero tomarla como digital, así que recurriré a un inversor (también incorporado en la barra de sensores) que convierta los valores analógicos a digitales.Todas estas funcionalidades planeo hacerlas de forma modular, en PCBs diferenciadas, conectadas entre sí mediante pines o cables. De esta forma me resultará mucho más sencillo cambiarlas en un futuro por otras más adecuadas o reutilizarlas en otros proyectos.El pedido de Sparkfun (unas baterías de 900 y 2000 mAh además del mencionado driver) me llegó a principios de semana, pero los otros dos (el módulo bluetooth y un cargador para las baterías) parece que todavía van a tardar lo suyo (vienen de China), así que mi intención es ir diseñando y construyendo los PCBs necesarios, alimentar de momento el robot con 3 pilas recargables (para obtener una tensión aproximada a la batería) y ya integrar el bluetooth más adelante.