Reparando un temporizador con PIC12F675

Hace poco llegó a nuestro taller un sencillo equipo temporizador construido con un microcontrolador PIC12F675. La idea básicamente era reprogramar el micro para cambiar los tiempos de encendido y apagado de la carga (un motor).

Al desarmar el equipo nos encontramos con problemas en el circuito impreso debido a un error de diseño del PCB, por lo que fue necesario hacer un refuerzo en algunas pistas con estaño para permitir la normal circulación de corriente hacia la carga.

Después de «levantar» el circuito y volver a escribir el código que el micro debe ejecutar nos encontramos con que el valor de calibración del oscilador interno se encontraba alterado. Gracias al programador PICkit2 y al software de Microchip fue posible recalibrar el micro para su normal funcionamiento.

Después del salto publicamos el sencillo código fuente en BASIC para entender un poco de que trata.


'**********************************************************************************
'** Temporizador con PIC12F675                                                   **
'** Automatismo para el control de un soplador                                   **
'** El equipo comanda un motor que se utiliza para mezclar fertilizante en       **
'** unos tachos con agua.                                                        **
'** Lucas Martin - 05 de marzo de 2012                                           **
'** Version 1.0 - Utilizando oscilador interno a 4MHz                            **
'**********************************************************************************

'************************ Inicialización de registros generales y de E/S **********
VRCON = 0x00  'apago el comparador de tensión
ANSEL = 0x00  'apago ADC
TRISIO = 0x00  'configuro los pines no utilizados como salidas
GPIO = 0x00  'limpio el puerto
CMCON = 0x07  'apago el comparador
WaitMs 300  'pausa de 300 milisegundos

'************* Rutina del programa ************************************************
main:
	GPIO.2 = 1
	WaitMs 30000  'demora de 30 segundos
	GPIO.2 = 0
	WaitMs 60000  'demora de 60 segundos
Goto main
End