Todo lector que se ocupa de los microcontroladores sabe la importancia de mantener una rica biblioteca con los más variados esquemas y programas para su uso. Con esto en mente, hemos desarrollado tres circuitos prácticos con el microcontrolador PIC16F628A para que el lector pueda aumentar su biblioteca y también aprender a usar algunos aparatos importantes con el microcontrolador sugerido, que incluyen: teclado matricial, display de cristal líquido y motor paso a paso.
EL MICROCONTROLADOR PIC16F628A
Este microcontrolador no es nada nuevo para la mayoría de los lectores. Pero para aquellos que no lo conocen, a continuación, describiremos sus principales características:
- Memoria de programa com 2 kbytes de FLASH
- 224 bytes de RAM - 128 de EEPROM
- 15 pinos de I/O con drenaje de corriente del orden de 20 mA
- Dos comparadores analógicos
- Dos "timers" de 8 bits y uno de 16 bits
- Um canal CCP (Capture, Compare y PWM)
- Un canal USART para comunicación RS-232 o SPI
- Varias opciones para oscilador incluyendo 4 MHz interno
- Watch Dog Timer (perro de guardia) interno
- Controle de "Power-on Reset" y "Power-up Timer"
- Protección de código contra copia
- Código de instrucción reducido (35 instrucciones)
- Paquete DIP con 18 pinos.
Para aquellos que quieren más información sobre este microcontrolador, recomendamos “downloads” del "data book" del sitio web del fabricante, www.microchip.com.
CONTROL DE TECLADO MATRICIAL
En algunos circuitos de microcontroladores es necesario recopilar datos del "usuario". La mejor forma de hacerlo es, sin duda, utilizando un teclado matricial.
Estos teclados se componen básicamente de botones de tipo "normalmente abiertos" intercalados entre columnas y filas (figura 1). Para saber exactamente qué tecla se presionó, es necesario analizar línea y columna, a través de una operación muy conocida en el mundo de los microcontroladores como escaneo. note la figura 2.
El lector notará que forzamos un valor fijo en las "líneas". Este valor generalmente equivale a la lógica "1" (5V). Esto se hace a través de resistores "pull-up". Entonces el microcontrolador ejecuta un"enlace" insertando un "0" lógico (GND) en la columna que debe leerse y un "1" lógico en las columnas que no desea leer. Así, cuando se presiona una tecla en la columna donde existe el "0" lógico, la línea que hace referencia a la tecla también asume inmediatamente el valor "0". Al leer los bits de puerto responsables de las líneas, es posible saber cuál de ellos cambió su valor inicial. Cómo sabemos qué columna estaba en "0" en ese momento, podemos determinar a través de una tabla qué tecla se presionó.
El lector debe estar preguntándose: Pero, ¿cómo podemos garantizar que la tecla presionada era realmente la que queríamos leer? Simple. El escaneo hace eso. El escaneo inserta el valor "O" en las columnas mucho más rápido de lo que una persona presiona una tecla. Este valor "O" se inserta en la primera columna, luego en la segunda y así sucesivamente hasta llegar a la última columna. Si no se presiona ninguna tecla, se iniciará un nuevo escaneo en la búsqueda de una clave y, por lo tanto, el microcontrolador estará en un "enlace" eterno en la búsqueda de una clave.
En la figura 3 el lector dispone del esquema eléctrico para las pruebas con el escáner de teclado que puede construir el lector, utilizando teclas tipo "pulsadores" normalmente abiertas o desde aparatos en desuso. Es importante tener en cuenta que la disposición de filas y columnas durante el montaje del circuito puede cambiar la decodificación de las claves.
Los altavoces del teclado están conectados al PIC en el puerto B, en la parte menos significativa (RBO a RB3). Los diodos D y D4 brindan protección contra cortocircuitos entre columnas y filas. Las líneas también estaban conectadas al PIC del puerto B, en la parte más significativa (RB4 a RB7).
Los LEDs D5 a D5 son del tipo común y sirven para "mostrar" qué tecla se presionó (valor de 0 a 15 en binario; solo se muestra la parte menos significativa del byte). La decodificación se realiza a través de una tabla en el programa. Si la decodificación aparece invertida o fuera de orden, verifique la posición de las filas y columnas o cambie el programa (tabla) para que sea exhibiendo el valor deseado.
El programa "PIC_TEC_F628. ASM" se puede obtener de forma gratuita desde el sitio de la revista www.electronicatotal.com,br en la sección "downloads". Su funcionamiento es sumamente sencillo. Cuando se presiona una tecla, mostrará su valor en los LEDs en representación "binaria", como se detalla en el texto. Le recomendamos que lo estudie para comprender mejor cómo funciona el circuito. Para ello comentamos todo el programa, para facilitar su comprensión.
CONTROL DE DISPLAY DE CRISTAL LÍQUIDO (LCD)
Un display de cristal líquido, a pesar de parecer complejo, es muy sencillo de operar. La mayoría de los displays que se encuentran en el mercado tienen características integradas para que sea más fácil para los usuarios max-o controlarlas, proporcionando una interfaz con cualquier microcontrolador. Así que no tenemos que preocuparnos por el funcionamiento interno de un display, sino únicamente con los comandos necesarios para escribir un carácter, borrar una línea, encender el cursor, y muchos otros comandos posibles (según cada modelo).
En la figura 4, tenemos algunos ejemplos y tipos de "LCDs" (Liquid Crystal Displays) que se encuentran fácilmente en el mercado especializado (tiendas de componentes electrónicos). Estos LCDs son del tipo “character”, es decir, no son gráficos. Los displays gráficos tienen su control más complejo y se realizan de manera diferente y no se discutirán en este artículo. Por ahora, solo nos ocuparemos del tipo "personaje".
Los LCDs de caracteres tienen algunas subdivisiones importantes que vale la pena conocer. Se refieren principalmente a la cantidad de caracteres que cada uno puede mostrar. Esta cantidad generalmente se expresa en "filas x columnas". En la tabla 1 el lector podrá ver algunos patrones utilizados con sus divisiones en relación a filas y columnas.
Siempre recordando que el número total de caracteres se refiere al número total de elementos que se puede demostrar de una vez, incluyendo espacios en blanco. También es importante señalar que existen muchas otras normas referentes al número total de caracteres, siendo recomendable una consulta con fabricantes Siempre que sea posible, el lector debe consultar los "databooks" proporcionados por el fabricante.
Los displays disponen de comandos específicos para cada operación deseada: lectura, escritura, configuración, etc. Estos comandos se pasan a través de una línea de datos (pinos DO a D7) de 8 bits (1 byte) y una línea de control compuesta por tres pinos más: EN (ENABLER), RDNVR (lectura/escritura) y RS (entrada de datos o instrucciones). En la figura 5 el lector puede observar un display y su respectivo pinaje.
Algunos displays tienen más de 14 pinos para las conexiones. Los pinos sobrantes se suelen utilizar en el control "Backlight". El "Backlight" no es más que un conjunto de "leds" colocados en la parte posterior del display. Cuando están "encendidos" permiten la visualización de los datos incluso en la oscuridad. Cada teléfono celular tiene "Backlight" en su display.
Es importante que el lector sepa que la mayoría de los "backlight" disponibles en los displays tienen un alto consumo de corriente y no deben conectarse directamente a los pinos 1/0 de un microcontrolador. Esto quemaría el puerto de I/O e incluso el propio microcontrolador. Si es necesario utilizar el circuito de "back light", utilice un circuito de "drive" como se muestra en la figura 6.
Los displays con cuatro o más líneas deben tratarse como una "unión" de dos o más displays de dos líneas. Por lo general, tienen dos pinos de habilitación (EN) para seleccionar qué conjunto de líneas se utilizará. En este caso, el pino 15 habilita las dos líneas superiores y el pino 16 las dos líneas inferiores. El pino "6" no está conectado. Sin embargo, ya es posible encontrar displays con cuatro líneas y sólo un pino de habilitación. En esta situación, el cambio de línea se realiza mediante un comando específico. Si el lector tiene un display de este tipo, consulte el manual del fabricante para saber cuáles son estos comandos.
A estas alturas, el lector debe haber notado que un "LCD" tiene un pequeño microcontrolador dedicado internamente, que interpretará los "datos" recibidos y los transformará en "comandos" internos en el display (no entraremos en más detalles sobre esto, ya que está más allá del propósito de este artículo).
En la tabla 2 el lector tiene un conjunto de instrucciones compatibles con la mayoría de los displays disponibles en el mercado. Esta tabla también muestra los datos que se le enviarán y el estado de sus pinos de control.
Hay otros comandos, pero los más importantes y más usados se dan en esta tabla. Para el lector que esté interesado en saber más sobre todos los comandos posibles de un display determinado, siempre es recomendable consultar "Databook" del mismo fabricante.
Observando la tabla 2, el lector nota que para enviar un determinado comando al display, el pino RS se lleva al estado lógico "O", y cada vez que queremos enviar un carácter para escribir, el mismo pino se lleva al estado lógico "1". El pino "EN" habilita el display y debe establecerse en "1" para habilitar y en "O" para deshabilitar. El pino RD/WR debe establecerse en "O" para escribir datos en el display y en "1" para leer datos de ella.
En la figura 7 el lector dispone del esquema eléctrico para las pruebas con un LCD tipo 16x2. Este display se encuentra fácilmente en el mercado especializado e incluso en "chatarra" fuera de uso. El circuito también tiene un 'trimpot' para regular el contraste del display.
El programa "PIC_DISP_F628.ASM" se puede obtener de forma gratuita en la web de la revista www.electronicatotal.com.br en la sección "downloads". Escriba una oración y una secuencia de caracteres. Una vez más, recomendamos estudiar el programa para comprender mejor el funcionamiento del circuito, aprovechando los comentarios insertados en el programa.
CONTROL DE MOTORES PASO A PASO
Los motores paso a paso están muy extendidos en el mundo de la electrónica/mecatrónica/microrobótica. Su precisión, aliada a su fuerza (torque), hacen de este motor un excelente "posicionador". Están presentes en impresoras, pequeños CNCs, mesas "XY", etc.
Para operar un motor paso a paso, tenemos que "encender" y "apagar" sus bobinas en una secuencia correcta. La frecuencia con que estas las bobinas están "conectadas" (on/off) determinarán la velocidad de rotación del motor. Para hacerlo girar en la dirección opuesta, debemos invertir la secuencia de conmutación. Vea la tabla 3, en él describimos la secuencia para operar un motor paso a paso "unipolar" de seis hilos (dos bobinas independientes).
Los valores iguales a "1" equivale a bobina encendida y los valores iguales a "0" equivale a bobina apagada. El análisis de la tabla se realiza desde el "paso 1" hasta el "paso 4". A partir de ese momento, la operación se repite para mantener el motor en marcha.
Los motores paso a paso están inclinados en grados. Por ejemplo, un motor de 7,52 por paso necesita 48 pasos para completar una revolución completa.
Número de pasos = 3609/número de grados por paso
Para hacer que el motor gire en sentido contrario, debemos hacer el análisis inverso en la tabla. El primer paso pasa a ser el número "4" y el último de número 1". Esta operación es repetida hasta obtener el número deseado de vueltas.
Desafortunadamente, no existe una estandarización entre los fabricantes de motores paso a paso que nos permita (a través de un código de colores) identificar internamente las conexiones de sus bobinas. Para ello, el lector puede elegir entre dos soluciones:
- Consultar el "data book" del fabricante
- Con un multímetro en posición de lectura de resistencia, hacer un análisis de su motor. En la figura 8 demuestra cómo se hace esto.
En la figura 9 el lector dispone del esquema eléctrico para pruebas con motor paso a paso unipolar de 6 hilos. Las teclas "S", "S2",``S3' son del tipo "push-button" normalmente abierto mini. Los transistores "Q"1", "Q2", "Q3" y "Q4: son transistores tipo "Darlington" NPN con corriente de trabajo del orden de 2 A continua y 4 A de pico. Es recomendable utilizar radiadores de calor para los transistores.
En la misma figura el lector tiene un esquema de una fuente. El punto de 12V servirá para alimentar el motor paso a paso y el punto de 5v alimentar el PIC. El LM7805 también debe tener un radiador de calor para evitar el sobrecalentamiento.
El programa "PIC_STEP_F628.ASM" se puede obtener de forma gratuita en la web de la revistawww.electronicatotal.com.br en la sección "downloads". Permite controlar el motor en ambos sentidos a través de las teclas "S1" y "S2" y también detenerlo a través de "S3". Estudie el programa para una mejor comprensión de cómo funciona el circuito.
El lector habrá notado que en este artículo no proporcionamos ningún "layout" para hacer placas de circuito impreso. Eso es porque ninguno de ellos es necesariamente un proyecto específico. Como se dijo al principio del artículo, su uso debe hacerse mediante estudios con el microcontrolador PIC16F628A y también en otros circuitos lectores. Para probar los circuitos y programas, utilice una matriz de contacto para los montajes.
CONCLUSIÓN
En este artículo, el lector aprendió lo importante que es mantener una biblioteca de información sobre un microcontrolador dado. Esta puede ser la clave del éxito para un proyecto comercial que, como muchos otros, tiene un plazo algo corto. Estudiar y cambiar los programas presentados ayudará a fijar el aprendizaje, además de que el lector también podrá mezclar los circuitos y programas para buscar nuevas alternativas. Esperamos haber contribuido a todos aquellos que buscaban soluciones prácticas con microcontroladores y pretendemos traer otros circuitos prácticos en próximos artículos para la biblioteca del lector. ¡Estén atentos y hasta la próxima!