Programación de microcontroladores PIC en lenguaje C mikroC Pro for PIC

Nota: La informacion presentada en esta página es sólo un resumen de algunos temas del libro de Programación de Microcontroladores PIC en lenguaje C. Para tener la información completa con todos los ejemplos te recomendamos comprar aquí el ebook en español en formato PDF.

Este es un tutorial donde encontrarás conceptos básicos, medios y avanzados acerca de la programación de microcontroladores PIC en lenguaje C, empleando el compilador mikroC Pro for PIC de la empresa mikroelektronika. Esta publicacion esta dirigida a todos aquellos que se han preguntado alguna vez qué es un microcontrolador, para qué sirve y cómo puede ser utilizado en la vida real. Con los conceptos aquí presentados estarás en capacidad de convertirte en un gran programador y podrás diseñar tus propios proyectos con microcontroladores PIC. Comencemos!

Por qué iniciar nuestro aprendizaje con los PICs 16F88, 16F628A y 16F877A? Estos PICs pertenecen a la gama media y pueden ser aplicados en circuitos electrónicos de propósito general. Actualmente son utilizados como modelos en la enseñanza de programación de microcontroladores en las Universidades de todo el mundo. Como ventajas relevantes se pueden destacar las siguientes: bajo precio, gran capacidad de memoria de programa y datos, gran disponibilidad de pines E/S (entrada/salida), oscilador interno (16F88 y 16F628A), convertidor A/D (16F88 y 16F877A), módulos de comunicación serie y tres temporizadores. Todas estas características los hacen completamente superiores al popular PIC16F84A, y por estas razones fueron seleccionados como modelos para el presente texto. Estos microcontroladores constituyen un grupo de PICs muy completo, con características novedosas que los convierten en dispositivos apropiados para multitud de proyectos desde los más simples hasta los de mediana y alta complejidad. Cuando se emplea el oscilador interno el usuario tiene a su disposición dos pines más para utilizarlos como entrada/salida de propósito general. El oscilador interno significa un gran ahorro de recursos y puede ser configurado por el usuario de acuerdo a su conveniencia. La memoria de programa se puede grabar y borrar unas 100.000 veces, la memoria de datos EEPROM 1.000.000 de veces y sus datos permanecen almacenados por más de 40 años. Otras características son la Programación en Serie en el Circuito (ICSP) que requiere un total de 5 pines, acceso del procesador a la memoria de programa, programación en bajo voltaje, depuración en el circuito por medio de 2 pines, perro guardián (WDT) y un rango amplio de voltaje de operación. En la siguiente tabla tenemos un resumen de las principales caracteristicas de estos microcontroladores:

características-de-los-microcontroladores-pic

El lenguaje C es universalmente conocido debido a su gran versatilidad para el desarrollo de aplicaciones y se lo enseña como lenguaje básico de programación en muchas universidades e institutos educativos. En la actualidad es casi un estándar de facto a la hora de enseñar a programar computadoras. Es un lenguaje de alto nivel, lo que lo hace sumamente potente con respecto al popular (y difícil) lenguaje ensamblador. Además, el ambiente de desarrollo mikroC   tiene todas las herramientas (en librerías de funciones) y facilidades necesarias para una rápida y efectiva programación de los microcontroladores PIC.

Qué es un programador (grabador o quemador) de PICs? En el contexto del hardware, es una tarjeta electrónica en la cual se inserta el chip (PIC). Esta tarjeta se conecta a un puerto (LPT1, USB, etc.) del computador y por medio del software de control se realiza la transferencia (programación) del código ejecutable *.hex de una determinada aplicación hacia el PIC. Programador también es el nombre que se le da a la persona encargada de escribir un programa en un lenguaje de programación con el fin de dar solución a un determinado problema. El resultado del proceso de programación es una aplicación.

Cuánto tiempo me tomará aprender a programar los PICs? Por supuesto no hay una respuesta exacta, lo que sí se puede afirmar es que mientras más perseverancia y dedicación se pongan de parte del lector, el tiempo necesario para el aprendizaje se reducirá.  Si se dedican unas 2 horas al día el avance será vertiginoso y en unas 4 semanas ya tendrá un dominio aceptable de la programación de PICs en lenguaje C.

Cuáles son los pasos a seguir para realizar una aplicación real con un PIC?

  1. Construir o comprar un programador de PICs compatible con los dispositivos a programar y con el sistema operativo disponible.
  2. Descargar el software de control (software de programación) del programador e instalarlo: PICkit2 v2.61, etc.
  3. Descargar e instalar el ambiente de desarrollo de programación de PICs en lenguaje C (mikroC).
  4. Seguir las indicaciones del libro para crear un nuevo proyecto, configurarlo, escribir el código fuente en lenguaje C y compilarlo para obtener el ejecutable *.hex (aplicación).
  5. Descargar el fichero ejecutable al PIC por medio del software de programación y del programador conectado a la computadora personal.
  6. Retirar el PIC del programador y colocarlo en el circuito de aplicación y, ¡a disfrutar con los maravillosos resultados!. La siguiente figura muestra la secuencia de programación:


secuencia-de-programacion-con-mikroc

Microchip® (empresa fabricante de los microcontroladores PIC) ofrece una gran variedad de microcontroladores de 8, 16 y 32 bits, de bajo costo, con una arquitectura potente, varias tecnologías de memoria, herramientas de desarrollo fáciles de usar, documentación técnica completa y una red de ventas y distribución global. Estas son las principales ventajas del uso de microcontroladores PIC:

  • Fácil migración y actualizacion de diseños
  • Amplio rango de velocidad de operación para satisfacer las múltiples necesidades de las aplicaciones
  • Dispositivos con memoria de programa desde 384B a 512 KB para cumplir los requerimientos de código
  • Arquitecturas compatibles para preservar la inversión económica en el desarrollo de códigos
  • Compatibilidad Pin a Pin en múltiples encapsulados, facilitando así el remplazo
  • Menor coste total del sistema con Perifericos Integrados
  • Comunicaciones: SPI, I2C ™, UART, CAN, USB, Ethernet, IrDA®, LIN
  • Control: captura / comparación, contadores, reloj en tiempo real y PWM
  • Módulos Analógicos: Convertidores A / D, comparadores, amplificadores operacionales, Convertidores D / A

Microcontroladores PIC

mikroC PRO para PIC es un compilador con todas las funciones ANSI C para dispositivos PIC de Microchip®. Es la mejor solución para el desarrollo de código para dispositivos PIC. Cuenta con IDE intuitivo, potente compilador con optimizaciones avanzadas, muchas bibliotecas de hardware y software, y herramientas adicionales que le ayudarán en su trabajo. Este Compilador viene con archivos de ayuda integrada y un montón de ejemplos listos para usar, diseñados para que pueda empezar en cualquier momento, sus principales caracteristicas son las siguientes:

  • Compilador inteligente y eficiente
  • Cuenta con cuatro niveles de optimizacion que pueden reducir el tamaño de su código hasta en un 20%
  • Uno de los mejores IDE (Entorno de Desarrollo Integrado) disponibles en la actualidad: intuitivo, rápido y rico en características. Te sentirás muy cómodo durante el trabajo.
  • Más de 500 funciones de librerias lo que se traduce en un enorme ahorro de esfuerzo y tiempo

Requisitos

Para aprender con rapidez y facilidad los conceptos de la programacion de microcontroladores PIC se requieren conocimientos basicos de:

  • Electronica digital
  • Computacion basica

Si usted carece de los requisitos nombrados no es aconsejable que siga adelante en la lectura de este documento pues se le dificultara notablemente entender los conceptos explicados.

El software necesario para ejecutar todas las tareas de programación es el siguiente:

  • mikroC PRO para PIC: ambiente de desarrollo de programación de microcontroladores PIC en lenguaje C. En este link puedes descargar la version demo 4.1 (te servirá para escribir los ejemplos durante la fase de aprendizaje).
  • Proteus-ISIS (opcional): simulador de aplicaciones con microcontroladores PIC
  • PICkit2 v2.61: lo puedes descargar desde esta pagina.

Para los primeros pasos en el estudio de la programación de microcontroladores se necesita el siguiente hardware básico:

  • Computador con puerto USB y sistema operativo Windows (recomendamos desde Windows XP hasta Windows 8.1)
  • Fuente de corriente directa de 5V
  • Microcontrolador PIC
  • Programador PICkit2 u otro programador compatible con el PIC que va a ser utilizado
  • Elementos electronicos varios que dependen del circuito de aplicacion del microcontrolador PIC

Conceptos básicos

A continuación presentamos una introducción a los principales temas acerca de la programación de microcontroladores PIC en lenguaje C, con el compilador mikroC PRO; los ejemplos propuestos se pueden desarrollar con microcontroladores PIC y dispositivos electrónicos de propósito general disponibles actualmente y de fácil acceso. Los temas que se describen cubren múltiples áreas de aplicación y están organizados de menor a mayor complejidad. Se utiliza el lenguaje C (sintaxis de mikroC PRO for PIC) para la programación y se han añadido los ejemplos necesarios que permitirán al lector comprender rápidamente el uso de los diferentes módulos internos y externos de los microcontroladores PIC. Con los conceptos aquí expuestos, el lector estará en capacidad de emprender el diseño y construcción de sus propios proyectos en diversos campos de aplicación.

Un microcontrolador (abreviado μC, UC o MCU) es un circuito integrado fabricado de Silicio que puede programarse para realizar tareas (ejecutar instrucciones) de forma automática al conectarlo a una fuente de energia. Las instrucciones se almacenan en un espacio de memoria especificamente destinada a ese propósito. En la siguiente imagen se aprecia el patillaje o pinout del popular PIC16F628A:

Un microcontrolador está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica; un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora:

  • Unidad central de procesamiento (CPU): se encarga de ejecutar las instrucciones y realizar las operaciones con los datos.
  • Memorias: FLASH para las instrucciones del programa, EEPROM (de almacenamiento permanente)  para datos y RAM (de almacenamiento temporal) para datos.
  • Periféricos de entrada/salida: permiten la comunicación del microcontrolador con su entorno físico recibiendo y entregando datos en forma de señales electricas. La conexion a los perifericos se realiza por medio de las patillas (alfileres o pines) del circuito integrado que conforma el microcontrolador.

Adicionalmente existe otra terminología que conviene conocer y entender ya que se emplea con mucha frecuencia en el mundo de la programación de microcontroladores: 

  • Compilador:Software que se encarga de convertir el codigo escrito en lenguaje C (lenguaje humano) a codigo de maquina (lenguaje de maquina). El codigo en lenguaje C se conoce como codigo fuente mientras que el codigo de maquina se conoce como codigo ejecutable.
  • IDE (Integrated Development Environment) Ambiente de desarrollo Integrado: software de computador que sirve para el desarrollo de programas para microcontroladores PIC. mikroC PRO for PIC es un IDE. Basicamente un IDE está conformado por dos partes: a) Un editor de texto para escribir el codigo fuente y b) Un compilador.
  • Programador: es un dispositivo de hardware electronico diseñado para transferir el codigo ejecutable (codigo de maquina) desde el computador hacia la memoria de programa del microcontrolador PIC. La conexion entre el computador y el programador se realiza por medio del puerto USB; el proceso se conoce como programacion, grabación o quemado (por esta razon el programador tambien se suele llamar grabador o quemador). También recibe el nombre de programador la persona que se encarga de escribir programas para microcontroladores.
  • Pin: cada una de las patillas o alfileres del microcontrolador. Por ejemplo el PIC16F628A tiene 18 pines (encapsulado DIP18).
  • Sintaxis: Conjunto de reglas definidas para escribir correctamente un lenguaje de programacion. mikroC PRO para PIC tiene su propia sintaxis que es muy similar a la sintaxis del lenguaje C de computadoras (ANSI C). 
  • Programa: Es una secuencia de instrucciones, escritas en un determinado lenguaje de programacion para realizar una tarea específica en un microcontrolador. En este curso se escribiran los programas de acuerdo a la sintaxis propia de mikroC PRO for PIC.

Primer proyecto

Este es el primer ejemplo de como crear un proyecto practico y funcional desde el principio. El proposito es hacer un contador de pulsos desde 0 hasta 9. Se utillizará el popular PIC16F628A, un boton pulsador normalmente abierto para generar los pulsos manualmente y un display de 7 segmentos para mostrar el conteo. Los pasos indicados son los que se deben seguir normalmente para crear otros nuevos proyectos:

  1. Iniciar el programa mikroC PRO for PIC (utilizamos la version 4.1 que puedes descargar más arriba en esta misma pagina) y crear un nuevo proyecto: Project > New Project. Clic en Next
  2. Seleccionar el PIC16F628A en el campo Device Name. Clic en Next
  3. Establecer la frecuencia de trabajo del microcontrolador en Device Clock. Se suele trabajar con una frecuencia de 4MHz y ese es el valor que  usaremos. Clic en Next
  4. Crear una carpeta (folder) para el nuevo proyecto; para ello hacer clic en el simbolo al final del campo Project File Name, esto abrirá la ventana New Project Location. Crear una carpeta en una determinada ubicación de su elección haciendo clic en New Folder, la carpeta deberá tener un nombre relacionado con la aplicación que vamos a crear; la llamaremos Contador. Luego de crear la carpeta Contador hacemos doble clic en ella para ubicarnos dentro de la misma y en el campo File Name creamos un nuevo archivo de proyecto, lo llamaremos tambien Contador (la extension propia del archivo de proyecto es .mcppi en mikroC PRO para PIC, no hace falta escribirla porque el sistema la añade automaticamente). Clic en Save y luego en Next.
  5. En el siguiente paso solo hacemos clic en Next
  6. Aunque en este ejemplo no vamos a emplear ninguna de las librerias de funciones de mikroC PRO, dejamos seleccionada la opcion Include All (por defecto). Clic en Next
  7. Un paso absolutamente necesario e imprescindible es establecer los bits de configuracion del microcontrolador PIC. Por lo tanto en este paso seleccionamos el checkbox Open Edit Project Window to set Configuration Bits. Clic en Finish.
  8. En la ventana Edit Project establecemos los bits de configuracion de la siguiente manera y hacemos clic en OK:
    Oscillator:    INTOSC: I/O on RA6/OSC2, I/O on RA7/OSC1
    Watchdog Timer: Off
    Power Up Timer: Enabled
    Master Clear Enable: Disabled
    Brown Out Detect: Enabled
    Low Voltage Program: Disabled
    Data EE Read Protect: Disabled
    Code Protect: Off
    Uno de los puntos mas importantes a tener en cuenta es la configuracion del oscilador que es un subsistema encargado de generar la base de tiempo (reloj) para la ejecucion de las instrucciones; con una frecuencia de 4MHz la base de tiempo (llamada ciclo de instruccion) es de 1us. Algunas instrucciones se ejecutan en un ciclo de instruccion, es decir que el microcontrolador se demora  1us en realizar la instruccion; por tanto, la ejecucion de las instrucciones se realiza a alta velocidad. El PIC16F628A incluye un oscilador interno de 4MHz que es utilizado al seleccionar INTOSC: I/O on RA6/OSC2, I/O on RA7/OSC1 para el bit Oscillator; el uso del oscilador interno es recomendable ya que facilita armar el circuito electrico y libera dos pines del microcontrolador, de lo contrario seria necesario agregar un cristal oscilador externo con sus elementos asociados.
    El significado y funcion de los demas bits se irá aclarando a medida que profundice en su estudio de la programacion de microcontroladores PIC.
  9. Aparece la ventana del editor de texto, donde escribiremos el codigo fuente de nuestro proyecto:
    //Contador.c
    //Macros (simbolos equivalentes)
    #define BOTON RA4_bit  //BOTON es equivalente a RA4_bit
    #define PRESIONADO 0   //PRESIONADO es equivalente a 0
    
    //Función para convertir de Binario a 7 segmentos
    char Bin2_7seg(char digit){
    	switch (digit){ 
    	case 0: return 0x3F;   //0x3F es el código 7-segmentos del 0.
    	case 1: return 0x06;   //0x06 es el código 7-segmentos del 1.
    	case 2: return 0x5B;
    	case 3: return 0x4F;
    	case 4: return 0x66;
    	case 5: return 0x6D;
    	case 6: return 0x7D;
    	case 7: return 0x07;
    	case 8: return 0x7F;
    	case 9: return 0x67;
    	}
    }
    
    //Declaracion de variables
    char contador=0;  //La variable contador es de tipo char y tiene valor inicial de 0.
    
    //Función principal
    void main(){
    PORTB=0x00;  //Estado inicial del puerto B.
    CMCON=0x07;  //Pines RA<3:0> como E/S digital.
    TRISB=0x00;  //Puerto B como salida.
    while (1){
    	if (BOTON==PRESIONADO){          //Si se pulsa,
    		Delay_ms(10);                   //esperar 10ms,
    		if (BOTON==PRESIONADO){         //revisar si el boton sigue pulsado,
    			while (BOTON==PRESIONADO);     //y esperar mientras siga presionado.
    			contador++;                    //Al soltar incrementar el contador,
    			if (contador>9) contador=0; //y reiniciarlo a 0 si supera el valor de 9.
    		}
    	}
    	PORTB=Bin2_7seg(contador);  //Convertir y enviar al puerto B el valor
    	//presente en la variable contador.
    }
    }//Fin de la función principal
    
  10. Una vez terminada la escritura procedemos con la compilación (la traducción del codigo anterior a codigo de máquina). Este proceso es transparente para nosotros (lo único que observaremos serán unos mensajes durante esta fase en la parte inferior del IDE). Para compilar debemos seleccionar el comando Build > Build. El codigo de máquina o codigo ejecutable (se identifica como Contador.hex) se guarda automaticamente en un archivo en la carpeta Contador que creamos en el paso 4. 

    El codigo anterior es un ejemplo que se puede tomar como plantilla para la escritura de otros proyectos. El microcontrolador PIC ejecuta las instrucciones que se encuentran dentro de la función principal void main(){//Instrucciones...}, las partes restantes sirven como codigo complementario para la ejecución correcta de dichas instrucciones. Los Macros tienen el proposito de facilitar el mantenimiento y comprension del codigo; por ejemplo si se quiere emplear el pin RA7 en lugar del pin RA4 simplemente se tiene que escribir #define BOTON RA7_bit; también es mucho más comprensible BOTON==PRESIONADO que RA4_bit==0.

    Una funcion es una agrupacion de instrucciones que luego se tratan como una nueva instruccion dentro de la funcion principal; así Bin2_7seg(contador); es considerada como una instruccion más y ejecutada de acuerdo a su definicion.

    En mikroC PRO for PIC (así como en otros lenguajes de programación) es obligatorio declarar las variables que se usan en la funcion principal, indicando su tipo y de forma opcional su valor inicial; así char contador=0; es la declaracion de la variable contador como una variable de tipo caracter (puede tomar valores entre 0 y 255) y tiene en este caso un valor inicial de 0.

  11. El codigo de maquina Contador.hex tiene que ser grabado en la memoria de programa del microcontrolador PIC de tal forma que al encenderlo ejecute las instrucciones indicadas en dicho codigo, de no ser asi el microcontrolador PIC seria un dispositivo que no serviria para nada ya que su memoria de programa se encuentra en blanco cuando sale de fabrica. El proceso de grabado se realiza por medio de un programador tal como el PICkit2 (todos los detalles los puede encontrar en el articulo Pickit2 Clone: Guia de Usuario).
  12. El último paso es armar el circuito electrico del contador, teniendo en cuenta que la fuente de alimentacion debe ser de 5V (este voltaje se puede obtener fácilmente a partir de un regulador 7805).

  13. Como recomendacion importante se sugiere agregar un condensador ceramico de 0.1uF entre los pines de alimentacion del PIC, lo cual ayudara a eliminar posibles problemas ocasionados por las fluctuaciones rapidas de la fuente de alimentacion. Además, notese que la conexion al display es directa (sin resistencias de por medio), lo que es posible debido a que los microcontroladores PIC están diseñados para suministrar una corriente máxima de 25mA en cada uno de sus pines. Al encender el circuito se observará que el display muestra el numero 0 ya que asi fue programado el PIC. Si se presiona (y se libera) el pulsador el conteo se incrementará en una unidad hasta una cuenta máxima de 9, en la siguiente pulsacion el conteo regresa a 0.

Para profundizar en el aprendizaje de la programación de microcontroladores PIC le recomendamos leer nuestra serie de articulos a continuación, donde se explican los conceptos basicos acompañados con ejemplos practicos y faciles de probar. También puede adquirir el ebook que contiene el fundamento teorico mas detallado y muchos ejemplos reales minuciosamente explicados, asi como las simulaciones en Proteus-ISIS para que pueda verificar su funcionamiento de forma rapida y efectiva.

Los bits de configuración

Los bits de configuración (Device Configuration Bits) tienen importancia capital en la operación de un proyecto. Sin la configuración adecuada el diseño jamás funcionará. Muchos diseñadores se esmeran por escribir un código fuente con las mejores características técnicas y estéticas, dedican largas horas al diseño del esquema eléctrico, del circuito impreso y multitud de detalles, pero suelen pasar por alto uno de los puntos de mayor significado: la selección de los bits de configuración. La omisión de este detalle les acarrea muchos dolores de cabeza, intentando hallar alguna falla en el lugar equivocado; es por eso que recomendamos que como paso previo a la escritura del código fuente, primero se configuren los bits del dispositivo para establecer el modo correcto de funcionamiento.

Lenguaje C (mikroC PRO for PIC)

El lenguaje C de mikroC PRO para programación de microcontroladores PIC está basaso en el lenguaje C estándar empleado en la programación de computadoras, por lo tanto se encontrará que hay sólo unas pequeñas diferencias propias de la aplicación en el campo de los microcontroladores. Para aprender lenguaje C lo más recomendable es conocer los elementos básicos de la programación, los cuales se emplean en la solución de la gran mayoría de problemas de programación.

Simulador Proteus ISIS

ISIS es uno de los componentes del sistema PROTEUS de la empresa Labcenter Electronics. ISIS permite crear esquemas electrónicos empleando una amplia variedad de dispositivos de todos los fabricantes de renombre mundial. Los circuitos electrónicos con microcontroladores pueden ser simulados por medio del simulador incorporado PROTEUS VSM. También existe la posibilidad de diseñar circuitos impresos con el el programa ARES que es otro de los componentes del sistema PROTEUS.

PICkit2: Programador

El PICkit2 Clone es un programador de microcontroladores PIC, memorias EEPROM y otros dispositivos de Microchip (conocido también como grabador o quemador) que se basa en el original PICkit2 y trabaja con el software PICkit2 v2.61 de Microchip. Este programador está diseñado para el puerto USB que se encuentra actualmente en la gran mayoría de computadoras personales. Puede operar correctamente desde Windows XP hasta Windows 10.

Solución de problemas

Las condiciones de funcionamiento en un ambiente real (no simulado) suelen ocasionar problemas inesperados, fundamentalmente debido al ruido eléctrico y algunos errores en el uso de los microcontroladores PIC; estas dificultades pueden convertirse en autenticos quebraderos de cabeza ocasionando pérdidas de recursos y valioso tiempo.

Ejemplos con temas avanzados

LCD 16x2 (LCD 2x16)

La pantalla LCD 16x2 (LCD 2x16) se ha popularizado mucho en los últimos años, debido a su gran versatilidad para presentar mensajes de texto (fijos y en movimiento), valores numéricos y símbolos especiales, su precio reducido, su bajo consumo de potencia, el requerimiento de solo 6 pines del PIC para su conexión y su facilidad de programación en lenguajes de alto nivel (por ejemplo, lenguaje C).

Memoria EEPROM de datos

La memoria EEPROM interna tiene la capacidad para ser programada y reprogramada por la CPU del PIC, para asegurar que en caso de una falla o desconexión de la energía los valores o variables críticas se puedan mantener en una memoria no volátil.

Timer 0: Temporizador y contador

El Timer 0 del microcontrolador PIC se utiliza cuando el sistema necesita un control estricto del tiempo. Normalmente esto se suele realizar empleando código que genera retardos de tiempo, pero la manera más óptima y precisa de hacerlo es por medio de la programación del Timer 0 del PIC.

Watchdog timer WDT

Los dispositivos de Microchip disponen de una amplia variedad de recursos incorporados para que el desarrollo de aplicaciones y proyectos sea más sencillo y eficiente para el Ingeniero o Diseñador. Estos recursos contribuyen a mejorar la confiabilidad, reducir los costos en componentes electrónicos, el tamaño de los circuitos electrónicos y el consumo de energía. Los recursos más sobresalientes son: Varias clases o tipos de reset (reset maestro, reset al encendido POR, reset por desvanecimiento BOR, etc), watchdog timer WDT (perro guardián), encendido de doble velocidad, oscilador de seguridad y modo de bajo consumo (sleep).

Interrupciones en mikroC PRO

Las interrupciones son eventos que ocasionan que el microcontrolador deje de realizar la tarea actual y pase a efectuar otra actividad. Al finalizar la segunda actividad retorna a la primera y continúa a partir del punto donde se produjo la interrupción. Las interrupciones permiten que un solo microcontrolador ejecute varias tareas (no exactamente al mismo tiempo) dependiendo del evento que desencadene la interrupción. Estos dispositivos tienen desde 10 hasta 15 fuentes de interrupción dependiendo del tipo específico de PIC. El manejo de las interrupciones se programa por medio de registros especiales que controlan el comportamiento del microcontrolador bajo determinadas circunstancias.

Teclado matricial (teclado 4x4)

El teclado matricial (teclado 4x4) es muy empleado en el desarrollo de proyectos y encuentra aplicación en el ingreso de datos alfanuméricos de manera manual, en aquellos casos en que el uso de pulsadores simples (botones) no es lo más apropiado, ya sea por la presentación final del producto o por la restricción del número de líneas de entrada del microcontrolador. Recibe el nombre debido a que tiene 16 teclas formando una matriz que normalmente representan las cifras del sistema de numeración hexadecimal.

Periféricos: PWM

Son módulos que trabajan en coordinación con la CPU del microcontrolador y que le añaden gran poder y versatilidad. Los periféricos se encuentran incorporados dentro del propio microcontrolador y contribuyen a simplificar enormemente el proceso de diseño, tanto en hardware como en software, de una determinada aplicación. Entre los periféricos más importantes se encuentran los módulos PWM (Modulación de Ancho de Pulso) , los convertidores analógico/digital (Convertidor A/D), los módulos de comunicación serial SSP y AUSART (SCI) y los comparadores.

USART (UART): Comunicación con el computador

Una rasgo de gran importancia que poseen los microcontroladores PIC es la capacidad de comunicarse con el computador a través de un módulo incorporado que tiene las características apropiadas para el intercambio de información. Este módulo se llama USART (Universal Synchronous Asynchronous Receiver Transmitter) y opera de acuerdo al estándar RS232 que también es muy utilizado en las computadoras personales u ordenadores. Como interfaz entre los niveles TTL del PIC y RS232 del computador se suele utilizar el circuito integrado MAX232.

Bus I2C

El bus I2C (Inter-Integrated Circuit) o Interconexión de Circuitos Integrados es una tecnología para comunicación serie por medio de dos conductores en una configuración maestro-esclavo (master-slave) con velocidades de transmisión que van desde los 100kbps (modo Estándar) hasta los 400kbps (modo Rápido). Los dispositivos con modo Estándar o Rápido pueden operar en el mismo bus, siempre y cuando el bus trabaje a la velocidad del dispositivo más lento. Se ha desarrollado un protocolo para el bus I2C para asegurar que la transferencia de datos sea confiable (libre de errores).

Motores DC y motores paso a paso PAP con el driver L293D-B

Los motores eléctricos se emplean ampliamente en el área de la automatización, desde los juguetes hasta la robótica industrial, pasando por la medicina, las aplicaciones militares, la investigación espacial y submarina, los electrodomésticos, las computadoras, los dispositivos de entretenimiento, los simuladores, las máquinas herramientas, los automóviles, etc. Los más utilizados son los motores DC y los motores PAP (paso a paso) en los cuales se puede controlar el sentido de giro, la velocidad y la posición angular.

Qué es un servomotor y cómo se utiliza?

Los servomotores (también conocidos como servos) se controlan por medio de un pulso de ancho variable y frecuencia constante (PWM). El terminal de control se utiliza para el ingreso de este pulso. De acuerdo a las restricciones de rotación del servo motor, la posición neutral se define como aquella en la que el servomotor dispone del mismo ángulo de giro hacia la izquierda y hacia la derecha, es decir es una posición central a partir de la cual el eje puede girar el mismo ángulo en ambos sentidos.

Radiofrecuencia: sistema TX/RX a 433MHz

Este sistema TX/RX (Transmisor/Receptor) permite la implementación de enlaces de datos de radiofrecuencia, de forma muy simple, alcanzando distancias de hasta 80 metros dentro de edificaciones o 350 metros en campo abierto cuando opera con la fuente de 12V. Opera en el rango de los 433MHz (UHF) con modulación por desplazamiento de amplitud (ASK).

Comunicación PIC a PIC

La comunicacion alámbrica entre microcontroladores PIC es de suma importancia pues permite tener sistemas con multiples microcontroladores ejecutando distintas tareas en forma coordinada. La transmision de datos se puede lograr de forma bidireccional usando el modulo USART incorporado o funciones propias del compilador mikroC PRO.

LCD grafico GLCD 128x64

El GLCD 128x64 brinda mucha flexibilidad para el desarrollo de aplicaciones en las que sea necesario presentar texto o imágenes. Se compone de una matriz de pixeles dispuestos en filas y columnas. Cada pixel puede manejarse individualmente y permite mostrar texto, gráficos o una combinación de ambos.Se emplea en aquellos casos en los que es necesario tener un control total del área de la pantalla. Actualmente se han popularizado los módulos GLCD 128x64 que incorporan un controlador especial para este propósito (el circuito integrado T6963C de Toshiba es uno de los más utilizados actualmente).

Pantalla táctil 128x64 (GLCD 128x64 táctil)

La pantalla táctil es una combinación de una pantalla gráfica estándar GLCD 128x64 y un panel táctil (touch panel TP). La tecnología táctil es lo más moderno que existe actualmente para la interacción entre el usuario y un dispositivo electrónico y se usa ampliamente en teléfonos celulares, tablets, computadoras personales y otros artefactos electrónicos. Normalmente para convertir una pantalla gráfica (GLCD 128x64) a la tecnología táctil se coloca sobre aquélla un panel táctil (se lo puede comprar por separado o incorporado al GLCD). El control del panel táctil se logra actuando sobre sus cuatro terminales de conexión a través de un pequeño circuito transistorizado y un microcontrolador. La pantalla táctil se conecta de la manera convencional al microcontrolador, y debido al número relativamente alto de conexiones necesarias se debe utilizar un microcontrolador con la cantidad suficiente de pines disponibles, por ejemplo puede ser el 16F877A o el 16F887.

Ejemplos adicionales

Circuito de un reloj digital con PIC16F877A

Circuito de un reloj digital con PIC16F877A y display de 7 segmentos. La hora se muestra en formato de 24 horas; por ejemplo 14:35 (dos de la tarde y 35 minutos). Dispone de botones para ajuste de horas y minutos. Un botón adicional permite activar la presentación (encender el display) por un lapso de 1 segundo para ver la hora actual; esta funcion apaga el display de forma automatica con el proposito de reducir el consumo y ahorrar energia, muy util si la alimentacion se obtiene de una bateria.

Motor paso a paso unipolar de 12V

Este motor PAP unipolar cuenta con un conector de cinco terminales, cuatro de los cuales corresponden a las bobinas y el quinto se utiliza para la conexión de la fuente de alimentación. Incorpora un mecanismo reductor de velocidad (esto incrementa enormemente su fuerza), lo que hace necesario ejecutar una cantidad bastante grande de pasos para obtener un movimiento apreciable del eje externo (ver ejemplo de programación). Es un motor de bajo costo y puede ser utilizado en múltiples proyectos tanto básicos como avanzados.

Tacómetro digital con microcontrolador PIC

El tacómetro digital con PIC consta de un PIC16F88, una pantalla LCD 2x16 , un sensor tipo herradura GP3S62 de Sharp, y un regulador de 5V/100mA. El Timer0 del PIC trabaja como contador de las transiciones alto-bajo en el pin RA4/T0CKI durante 1 segundo.

Decodificador DTMF MT8870 con PIC16F628A

El decodificador DTMF MT8870 consta de un PIC16F628A operando a partir de su oscilador interno de 4MHz. Se genera una interrupción debida al Timer0 cada 50 ms (0,050 segundos) que se toma como base de tiempo para contabilizar los diferentes intervalos necesarios para el funcionamiento del circuito.

Motor paso a paso con driver L298N y PIC16F628A

El driver L298N es un driver de alta potencia para el control de motores de pasos (motores PAP) de hasta 2A. Este driver puede soportar hasta 46V con una salida total de corriente de hasta 4A. El siguiente circuito tiene el propósito de ser utilizado para la prueba de cualquier motor pap unipolar o bipolar de manera rápida, para constatar su funcionamiento.

Semáforo básico con PIC16F88

Este es sólo un ejemplo muy básico de un semáforo con PIC. El propósito es presentar al lector las líneas iniciales de la programación de microcontroladores en lenguaje C. El lector debe tener en cuenta que a partir de este ejemplo, y una vez que comprenda los fundamentos, podrá ir creando sus propios diseños.

Discador telefónico DTMF con el PIC16F628A

El ejemplo mostrado intenta describir únicamente el proceso básico de generación de llamadas con el microcontrolador PIC16F628A y el IC W91314A.

Display POV

El display POV (Persistense Of Vision) opera en base a la persistencia de la visión humana cuando un objeto se mueve rapidamente; la rotación de una columna de LEDs que se encienden en determinada secuencia hace que se forme en la mente del observador una imagen que depende codigo programado en un microcontrolador PIC.

Información complementaria