Este proyecto surge de la necesidad de elaborar un control a tavés de variables analógicas y digitales del circuito, para controlar a su vez otras variables del circuito. El microcontrolador usado es un PIC16F876 y está programado con MikroC. El microcontrolador ha sido programado con una filosofía por estados, con lo que adaptarlo a nuestras aplicaciones es muy facil, ya que se trata de reducir los estados, ampliarlos, y para cada estado modifivar sus salidas.
El circuito básico se compone del microcontrolador, un cristal de cuarzo de 10 MHz y 2 condensadores de 20 pF para el reloj, un zubador para las señales acústicas, interruptores para las señales de control digital, un pulsador para el reset del microcontrolador, diodos LED con sus correspondientes resistencias para las señales luminosas (tanto de diagnóstico como para probar las salidas), potenciómetros que simulan variables analógicas (ya pueda ser niveles de batería, sensores,..).
Figura 1: Circuito básico
Para la elaboración del firmware, lo primero que hay que hacer es desarrollar la tabla de estados deseada con sus correspondientes estados, entradas y salidas. Este firmware lleva además señales acústicas, con lo que además vamos a usar un timer del microcontrolador para este fin (se ha programado un beep para ser mas exactos).
A la hora de programar los estados, para que sea mas fácil la programación y mantenimiento de la aplicación como adaptación de la misma para otras finalidades, lo primero que se ha hecho es una clasificación de estados a partir de las variables analógicas (para diferenciar distintos niveles de carga de una batería, marcar rangos de temperatura,..) y posteriormente, en función de cada modo, definimos cada submodo con sus correspondiente salidas.
Este circuito tan simple nos permite una gran versatilidad en los proyectos como diagnóstico de una batería y control combinacional, control a través de variables analógicas (por sensores de temperatura, presión,.. que tengan su salida analógica) y digital (pulsadores, switches,...o algún elemento que nos sirva para conmutar señales). Este mismo circuito podría ser parte de algún robot por ejemplo.