Creato da: DonnyLennon il 05/01/2011
esperienze, appunti e risorse di elettronica e robotica

Area personale

 

Contatta l'autore

Nickname: DonnyLennon
Se copi, violi le regole della Community Sesso: M
Età: 34
Prov: CL
 
 

Tag

 
RSS (Really simple syndication) Feed Atom
 

Ultimi commenti

Ultime visite al Blog

cicciociccioviperocelot1Antares1962NonnoRenzo0chernobyl0kappa41chief33francpierorsoyoghi63martano1979gianpaolomartyPeppe_DelPretefrak70xxiceJesGia
 

 

 
« Come riutilizzare un vec...

Allarme! Chiudere la porta!

Post n°5 pubblicato il 05 Luglio 2012 da DonnyLennon
 

Se vivi in campagna, soprattutto in estate, devi convivere con gli insetti. A partire dalle zanzare, le più fastidiose, continuando con moscerini, o scarafaggi, ragni. Per le finestre esistono le zanzariere, ma per le porte e i portoni può capitare di dimenticare la porta aperta, per qualche minuto, ma anche tutta la notte, risvegliandosi la mattina dopo con punture di insetti veramente spiacevoli.

Partendo da questo problema, per esercitarmi sull'utilizzo dei famosi microcontrollori PIC, ho sviluppato questo progetto:

Si tratta di un allarme, basato sul PIC 12F675. Lo schema è il seguente:

 

allarme_schema

Descrizione schema e funzionamento generale:

SW2 è un interruttore a pulsante che andrà installato sulla porta. Bisogna far si che quando la porta è chiusa, SW2 è premuto e i contatti sono aperti, ed a causa della resistenza interna di pull-up (da abilitare con i registri Option_reg e WPU) sul pin GP5 si legge lo stato logico 1. Quando invece la porta è aperta, SW2 è rilasciato e i contatti si chiudono portando il pin GP5 a massa (valore logico = 0).

Il pic all'accensione legge lo stato della porta GP5 e si comporta di conseguenza.

1 - Se GP5 = 1 (porta chiusa) Manda il pic in modalità Sleep. Cioè spegne i circuiti interni, per consumare poca energia, e sta in attensa di un interrupt che lo "svegli" da questa condizione

2 - Se Gp5 = 0 (porta aperta) Il pic dapprima fa un conteggio, tramite il registro TMR0, di circa 8 secondi, se dopo questi otto secondi la porta è ancora aperta allora inizia a far suonare l'allarme, mandando in uscita un onda quadra a circa 1000 Hz, con intervalli di 1 secondo di silenzio.

L'integrato 7805 serve a portare i 9 volt della batteria a 5 Volt per il PIC.

SW1 serve a scollegare l'alimentazione e quindi spegnere completamente il dispositivo.

 

Il codice che fa tutto ciò è il seguente:

unsigned short int contatore = 0;

void main () {

//inizializzazione
TRISIO = 0b00100000;
OPTION_REG = 0b00000110;
WPU = 0b00100000;
INTCON= 0b10101000;
IOC =   0b00100000;
GPIO = 0;
TMR0 = 0;

while (1) {

if (GPIO.GP5 == 0)
   { if (contatore == 255)
     {TMR0 = 0;
      contatore = 0;
      while (GPIO.GP5 == 0) {GPIO.GP0 = 0;
                             Delay_us (500);
                             GPIO.GP0 = 1;
                             Delay_us (500);
                             if (contatore == 30) {Delay_ms (1000); contatore = 0;} }}}

if (GPIO.GP5 == 1) {asm {sleep} ;}

}
}

void interrupt () {
if (INTCON.GPIF == 1) {GPIO.GP0 = 0; INTCON.GPIF = 0; contatore = 0; TMR0 = 0;}
if (INTCON.T0IF == 1) {INTCON.T0IF = 0; contatore ++;}
}

Per programmare il pic ho utilizzato il PICKIT2, e il software MicroC.

Ciò che mi piace di questo progetto è l'utilizzo di pochissimi componenti, di nessun resistore o condensatore, di nessun oscillatore esterno, poichè il PIC12f675 possiede un oscillatore interno a 4MHz.

 

 

 

Note importanti:

La CONFIGURATION WORD che ho utilizzato è: 0x0194

 

Per SW2 ho utilizzato un sensore di contatto, come quelli che si utilizzano per i robot: link. Essi hanno tre pin, in maniera tale da poter avere un apertura dei contatti quando viene premuto. Se non si dispone di un pulsante del genere, ma di quello classico, bisognerà modificare leggermente il codice.

Lo speaker è un piccolo altoparlante di 8 Ohm recuperato da un giocattolo.

GP3 si può settare o come Input o come reset (MCRL), agendo su la configuration word. In questo caso è un Input, quindi è buono portarlo a massa per evitare problemi dovuti al floating.

Questo è il circuito alloggiato in un case di plastica:

 

Per info TREVIS89@HOTMAIL.IT

BYE!

 

 

 
Condividi e segnala Condividi e segnala - permalink - Segnala abuso
 
 
Vai alla Home Page del blog

© Italiaonline S.p.A. 2024Direzione e coordinamento di Libero Acquisition S.á r.l.P. IVA 03970540963