Thursday, November 24, 2011

Proyecto con un microcontrolador Pic: un reloj de ajedrez


Los microcontroladores no son otra cosa que computadoras en miniatura. A diferencia de los microprocesadores, que requieren de todo un complejo sistema de electrónica para funcionar, el microcontrolador contiene todo lo que una moderna computadora necesita: puertos de entrada y salida, memoria interna, convertidores analógico-digitales, etc. Estos microcircuitos son parte de hornos de microondas, lavadoras, refrigeradores, reproductores de mp3, algunas cafeteras, etc. Son en cierta medida computadoras en miniatura para usos muy específicos. Ya he hablado de ello antes. Si buscan "microcontrolador" en este blog, podrán ver algunos artículos míos pasados al respecto).

Como los microcontroladores son computadoras en miniatura, éstas deben poderse programar. Para ello, se necesitan algunos elementos:

  • Una tarjeta (un circuito impreso que contenga al microcontrolador, botones, leds, pantalla de cristal líquido LCD, en la cual podemos ver  el funcionamiento del programa que estamos escribiendo.
  • Un editor de código con su correspondiente compilador (hay C, basic, e incluso Forth).
  • Una interfaz (que es una caja negra), que vía el USB conecta la tarjeta de desarrollo con la PC y los programas compilados se pueden pasar a la memoria del microcontrolador. Eso es lo que se llama un "programador de microcontroladores".

En mi caso, trabajé con una tarjeta con un microcontrolador Pic y usamos el Pic Basic Pro (PBP) como lenguaje de desarrollo. Cabe decir que algunos compiladores tienen costo. No todos son gratuitos, aunque existen interesantes alternativas en ese sentido.

Usando todos los elementos, es decir, creación del programa, compilado del mismo, uso del programador PicKit2 para copiar el código a la memoria del PIC, traslado del chip a la tarjeta de prácticas, cableado de las patas correspondientes del microcontrolador a los leds y al botón que usaremos para controlar el despliegue (encendido y apagado de LEDs), tenemos un programa que hace exactamente lo que le pedimos, como puede verse en este video, lo cual es un programa que a través de los leds de la tarjeta de prácticas, cuenta en binario encendiendo los foquitos leds al oprimir el botón.

Las capacidades de los microcontroladores lo hacen el candidato justo para una serie de proyectos de electrónica, en donde precisamente la parte del hardware puede obviarse. Por ejemplo, se me ocurrió que sería interesante hacer un reloj de ajedrez electrónico. Los relojes de ajedrez son dos cronómetros que llevan el control de tiempo para pensar las jugadas por cada jugador. Actualmente estos relojes electrónicos ya existen pero quizás su costo es elevado (unos 1000 pesos más o menos). Así, me di a la tarea de diseñar mi propio prototipo.

Le pedí a un ingeniero en electrónica que me hiciese el circuito impreso con los elementos que necesitaba: una serie de botones y una pantalla de cristal líquido. En el caso del prototipo, el “display” es de cuatro líneas. Si el proyecto tiene éxito y se sigue a una fase de comercialización, se tendría que poner en una pantalla más adecuada para la naturaleza del ajedrez (números más grandes, por ejemplo). Pero por el momento un prototipo no necesita de más cosas.

He escrito parte del software ya, pero hay muchos detalles que pulir. Lo importante aquí es que el proyecto se puede desarrollar de manera fácil y simple, porque finalmente es como programar una computadora -pero de uso específico- con limitaciones en capacidad de memoria, despliegue, etc. Se parece en ese sentido a programar un teléfono con iOS o Android, por ejemplo. Seguiremos informando de los avances de este proyecto.

4 comments:

The Zeruz said...

Recuerdo hace tiempo, unos 6 años más o menos, hicímos un proyecto similar en la escuela. En el caso de mi compañero y yo decidimos hacer un contador que controlaba las luces de un cuarto de revelado de fotografías.

No sé qué sentido tenía controlar las luces ya que no soy fotógrafo y ni a aficionado llego, pero el control manejaba una serie de contadores que podían pausarse en cualquier momento. Hasta ahora que vi esta entrada se me ocurrió que pudimos hacer un contador cómo el que propone.

Me gustaba jugar con los microcontroladores. Las limitantes las ponía el problema a resolver y la misma capacidad de los microcontroladores. Es una pena que no haya seguido con la práctica.

Ya cómo último comentario, y aprovechando que se tocó el tema de los dispositivos móviles, me preguntó qué tan complicado sería programar un reloj de ajedrez que corra en dos iPods vía inalámbrica. Creo sería cuestión de ponerme a leer nuevamente.

Saludos y gracias por ponerme a pensar en microcontroladores de nuevo.

Piero Moretto said...

Si la persona tiene algo de experiencia programando en cualquier lenguaje yo recomendaría aprender a programar PIC en C. Es mas fácil que el ensamblador pero muy poderoso.

Saludos
http://c-pic.blogspot.com/
@C_PIC1

Morsa said...

El problema es que no tengo el compilador de C para Pic. Me gustaría incluso tener el de Pascal. No tengo ninguno de esos (me refiero a las versiones completas)

saludos
Manuel

Piero Moretto said...

Entiendo, yo uso el compilador CCS instalado en la universidad. CCS ofrece un demo por 45 dias, puedes intentar con ese. Hay una iniciativa para desarrollar un compilador libre llamado SDCC también.

Saludos
http://c-pic.blogspot.com/
@C_PIC1