Lo spruzzatore automatico cinese che avevo preso tempo fa ha sempre dato segni di instabilità fino a quando è definitivamente defunto pochi giorni fa. Vincendo la pigrizia mi sono imbarcato nell’operazione di ripristino del circuito. Una volta aperto notavo la presenza di un uC e pochi altri componenti. Verificato che il motore funzionasse, così come il suo driver non è rimasto altro che pensare alla sostituzione del uC. Ma con cosa? La sigla raschiata (anche se dalle disposizioni delle alimentazioni sembrava un PIC Microchip) non ne permetteva l’identificazione poi era nel case SOIC. Sta di fatto che ho decine di PIC a 8 pin ma tutti DIP. Soluzione? Per un attimo ho pensato di utilizzare un Arduino Mini PRO poi mi sono detto: ma con tutti i PIC che ho sprechiamo un Arduino? Detto fatto. Riprogrammo a mio modo uno di questi PIC e poi lo monto incollandolo al PCB. La scelta è caduta su un PIC12F635, non serve nè RAM nè EEPROM vista la banalità del sorgente (un semplice timer da 9/18/36 minuti). Un po’ di programmazione in Pic Micro Pascal, qualche filo sul vecchio PCB (dopo aver tolto il uC che si era guastato) ed in men che non si dica lo spruzzatore ha ripreso vita con poca spesa e qualche soddisfazione (per quel che costava avrei potuto comprarne un altro ma vuoi mettere la differenza?).
Mi trovavo sul PCB i componenti visualizzati a destra della schema mentre a sinistra, attorniati dal rettangolo tratteggiato, la parte aggiunta (un PIC e due resistenze).
Una volta inserito:
e poi richiuso:
Già col precedente uC avevo poi aggiunto una batteria esterna ricaricabile (estrapolata da un vecchio smartphone) per risparmiare sulle batterie previste (che erano due stilo da 1,5V)
Infine non poteva mancare il listato che permette al circuito di funzionare in questo modo:
All’accensione si accende il led power e rimane acceso per 10 secondi, dopodichè avviene il primo spruzzo che conferma che tutto va bene. Successivamente si ha il lampeggio del led power ogni 10 secondi (lampeggio che dura 100mS) e l’attivazione dello spray ogni 9..18..36 minuti a seconda della posizione del commutatore. Il motore viene alimentato per 1,5 secondi durante lo spruzzo e poi viene staccato. Il meccanismo di ruote dentate torna al punto di partenza grazie alla forza di ritorno che imprime il beccuccio della bomboletta di spray quando il motore non preme.
Program spray; // 12f635 4Mhz Var LedOp: boolean @GPIO.1; LedOn: boolean @GPIO.0; In1: boolean @GPIO.2; In2: boolean @GPIO.3; Motor: boolean @GPIO.4; Procedure Delay10s; begin delay_MS(9900); LedOn:=false; delay_MS(100); LedOn:=true; end; procedure Delay1min(Minutes: byte); var Byter: byte; begin for Byter:=1 to Minutes * 6 do begin Delay10s; end; end; procedure SprayIt; begin Motor:=true; LedOp:=true; delay_MS(100); LedOp:=false; delay_MS(1500); Motor:=false; end; begin TRIS (GPIO,0b00101100); //OPTION (0b11011111); // Disabilita il comparatore CMCON0:=7; VRCON:=0; LedOn:=false; LedOp:=false; Motor:=False; delay10s; SprayIt; repeat If (In1 and In2) then Delay1Min(9) else If (In1) then Delay1Min(36) else If (In2) then Delay1Min(18); SprayIt; until false; end.