Ripristino spruzzatore profumi cinese

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).

sprayIl risultato finale è questo:

spraypcb

Una volta inserito:

spray montato

e poi richiuso:

spray chiuso

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)

spray batteria

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.