lunes, noviembre 01, 2010

Práctica 8: Análisis de sistema tecnológico II "Bomba de agua"

En esta práctica implementaremos el control de una bomba de agua por medio de un microcontrolador PIC16F877A.

Los módulos en los que pondremos mayor atención esta vez, serán en el modulo de conversión A/D y las interrupciones periféricas y globales.
El objetivo del programa es controlar el encendido y apagado de una bomba de agua que llena un tanque. Para el funcionamiento del sistema el usuario debe configurar el sistema gracias a los botones de selección, lo que le permite seleccionar entre 3 modos de funcionamiento diferentes:
  1. Modo semi-manual: Permite encender o apagar la bomba de forma manual, sin embargo, el sistema tiene una protección contra el derrame de líquido por la que cuando el nivel superior esté detectado, apaga la bomba y no permite que se vuelva a encender.
  2. Modo discreto: Este modo automático permite encender la bomba cuando el  nivel esté al mínimo, y apagar la bomba cuando se detecte el nivel superior (funcionamiento de histéresis).
  3. Modo escalonado: Este modo de funcionamiento permite seleccionar al usuario el nivel al que desea conservar el tanque. Existen 4 niveles diferentes (mínimo, 1/3, 2/3 y máximo)

Entradas del sistema

El sistema recibe entradas por el puerto B y el puerto A:
PORTBitNombreDescripción
PORTA RA0 A0 Entrada analógica - Sensor de nivel
PORTB RB2 +/enc Botón de selección "+" o encender la bomba
RB3 -/apa Botón de selección "-" o apagar la bomba
RB4 conf Botón de configuración
RB5 inf Detector de nivel inferior
RB6 sup Detector de nivel superior


Salidas del sistema

El sistema envía las siguientes señales como salida:
PORTBitNombreDescripción
PORTBRB0bombaÉnvía la señal de activación del relevador que enciende la bomba
PORTCRC7estadoMuestra el estado del sistema.
Si estado=1 ; el sistema está en funcionamiento
Si estado=0 ; el sistema está en modo de configuración
RC6manualPermite visualizar el programa seleccionado.
Si manual=1 ; el programa seleccionado es el programa manual
Si discreto=1 ; el programa seleccionado es el programa discreto
Si escalon=1 ; el programa seleccionado es el programa escalon
RC5discreto
RC4escalon
RC3niv3Permite visualizar el nivel de agua actual:
niv3 representa el nivel máximo
niv0 representa el nivel mínimo
niv1 y niv2 pueden ser configurados como niveles intermedios en el modo de funcionamiento escalonado
RC2niv2
RC1niv1
RC0niv0

Recursos del microcontrolador.
Se utilizará la conversión A/D para conocer el nivel actual de agua en el modo escalonado. Configuraremos la conversión A/D para activar la interrupción (ADIE).
También utilizaremos la interrupción por cambio en el PORTB (RBIE), razón por la cual hemos seleccionado como entradas el puerto B en esos bits específicos (pues esta interrupción solo se ejecuta cuando cambian los bits de la nible más significativa)

Observaciones para la implementación

  • Habrá que tener cuidado con las interrupciones, pues al utilizar dos interrupciones diferentes, tendremos que saberlas identificar (pues la interrupción ejecuta siempre la misma subrutina, no importando qué interrupción se haya lanzado).
  • Recordar que la rutina de interrupción puede suceder en cualquier momento, y que los registros no necesariamente conservarán su valor tras el retorno de interrupción, por lo que si se utilizan registros importantes, será necesario guardarlos y respaldarlos al inicio y al final de la rutina de interrupción (ver página 130 del manual PIC16F87X y página 154 del manual PIC16F87XA)
  • Existe una característica particular en los modelos PIC16F876/877. Las primeras 16 casillas de memoria RAM (0x20 a 0x2F) son comunes en todos los bancos. Esta característica puede ser de utilidad si es que en la rutina de interrupción y en el programa principal se utilizan diversos bancos, ya que esto evita tener que conocer el banco en el que se encuentra uno (y es de vital importancia al guardar el contexto en una interrupción)
Comentarios finales.
Recuerden que la implementación de una solución tecnológica no está limitada por un solo método. Todos los métodos son correctos mientras resuelvan la solicitud del cliente (quien encargó la solución) por lo tanto, mientras se ejecuten los programas como dice la descripción, todas las soluciones son correctas.
La única diferencia entre soluciones puede ser la optimización, la velocidad, la seguridad y la protección contra errores del sistema.

Archivos para descargar:
Simulación en Proteus

No hay comentarios: