arduino uno e sensore pir SE-10

SAlve, premetto doverosamente che sono veramente negato in questo campo, ma ho tanta voglia di iniziare a capirci qualcosa.

Ho comprato arduino uno, ho già utilizzato qualche sensore con successo, ma adesso ho dei problemi con un sensore SE-10 pir.

In pratica ho collegato al sensore seguendo questa immagine: http://bildr.org/blog/wp-content/uploads/2011/06/PIR-Arduino_hookup.png L'unica differenza è che non avendo una resistenza da 10k ho dovuto unirne 2 da 4.5k e altre due da 345 circa.Cmq ho raggiunto i 10kohm, verificando con il tester.

Appena compilo e faccio l'upload sulla scheda, attento a non far scattare il sensore...funziona, ovvero passo davanti al sensore e rilevo il movimento, subito dopo inizia un calvario di valori random, inizia a verificare movimenti che non esistono. Se stacco la corrente e l'alimento nuovamente continua a non funzionare, sempre falsi positivi random. L'unico modo per ripristinare la funzionalità del sensore è quello di staccare la corrente, rifare l'upload del codice e riaprire il terminale, a quel punto funziona nuovamente, sempre prima di averlo fatto scattare la prima volta, poi riinizia d'accapo.

Quando ho montato il sensore la prima volta, non ho seguito il datasheet ed ho attaccato il gnd della scheda al pin alarm del sensore, avrei potuto danneggiarlo ? Magari è per questo che non funziona...

il codice che uso è questo, sempre preso dal sito dove è presente l'immagine: int pirPin = 2; //digital 2

void setup(){ Serial.begin(9600); pinMode(pirPin, INPUT); }

void loop(){ int pirVal = digitalRead(pirPin);

if(pirVal == LOW){ //was motion detected Serial.println("Motion Detected"); delay(2000); }

}

premetto che già la prima cosa strana è che a me funziona al contrario, quando rileva il movimento lo stato del pin è HIGH.

Approfitto del post per chiedervi un'ulteriore cosa, come mai se sul codice faccio un semplice loop() i++ print i quando chiudo e riapro la seriale I viene azzerata ? O_o mi pongo il problema che venga riavviato il codice.

Spero di non aver sparato troppe cavolate e spero tanto in un vostro riscontro.

Cordiali Saluti.

Se fai così tante domande diventa difficile darti risposta adeguata, potresti accontentarti di risolvere un problema per volta. Il PIR potresti averlo danneggiato con il primo collegamento sbagliato, visto che quando lo hai attivato il pin "alarm" è andato in corto a massa. La cosa che trovo stravagante sono i valori che stai dichiarano di aver usato, dove li hai presi? in vita mia (e di anni ne ho tanti!) non credo di aver mai visto valori del genere; sei sicuro di ciò che hai scritto? Penso di sì visto che dici di aver controllato col tester, ma mi pare lo stesso strano.

Il tuo sensore si comporta al contrario di ciò che si aspetta il software, quindi metti HIGH al posto di LOW e rifai le prove.

Quando chiudi e riapri la seriale in effetti resetti il micro e il codice riparte, quindi è normale che le variabili si azzerino.

Ciao e ti ringrazio per la risposta. con il tester ho verificato gli ohm settando la misurazione specifica, puntando i due puntali alle estremità delle resistenze.

Avevo letto che era necessaria una resistenza da 10k. io a casa avevo questo:

2 resistenze 330 ohm 1/4 di watt. 2 resistenze da 4,7 kohm 1/4 di watt.

Le ho unite e pressapoco ero sui 10k. Ho utilizzato più resistenze legate tra loro anzichhè una resistenza da 10k. Pensando quale possa essere il problema mi sono chiesto se questo potesse essere un problema..quindi è probabile che quel corto mi abbia danneggiato in qualche modo il sensore ? Perchè lo ripeto, effettivamente funziona, ma quando scatta la prima volta, è finita.

330 e 4,7K sono valori normalissimi, allora i conti mi tornano XD Prova il sensore col tester scollegato da Arduino: metti il tester su Volt, il puntale + dopo la R che hai costruito (lasciala così non sovraccarichi il sensore) ed il puntale - a massa (negativo dell'alimentazione). In tal modo ogni volta che attivi il sensore devi leggere una tensione positiva: se così NON è il sensore è rotto, se è così allora stai sbagliando qualcosa sui collegamenti o sul software, hai fatto la prova a mettere HIGH invece di LOW???

allora, ho fatto una foto dei collegamenti per verificare che il tutto è collegato bene.

Il sensore continua a spararmi valori randomici, un secondo rileva movimento l’altro no e viceversa.

Ecco l’immagine: http://s9.postimage.org/lwl5ebygv/PICT1192.jpg

Ragazzi per favore, aiutatemi, perchè rischio di impazzire!!!

No, rischia di impazzire chi vuole aiutarti, se ti si chiede di fare delle prove e tu vai avanti per la tua strada. E' impossibile sbagliare quei collegamenti, anche se il filo nero non fa capire se la R finisce realmente su +5V o meno, al di là di questo bisogna levarci il dubbio se il sensore funziona o se l'hai rotto, quindi fai la prova che ti ho detto. Ciao.

Scusami, allora facendo come tu hai detto ho verificato che la corrente varia tra 0.2 circa a 5V passando per tutti i valori intermedi arbitrariamente.

Non sembra segua un filo logico con i miei movimenti, è completamente per i fatti suoi.

Tornando ai collegamenti io ho in pratica collegato il GND alla massa del sensore, ho collegato il positivo del sensore ai 5v dell'arduino ed il pin alarm è collegato ad una resistenza che è inserita tra i 5v dell' arduino ed il pin alarm del sensore.

Allora, ho appena verificato che utilizzando un alimentatore da 12v, lasciando sempre una resistenza da 10k, ho tra il pin e la massa dell'alimentazione un valore fisso di 12v quando non c'è movimento ed un valore molto più basso quando c'è movimento. quindi con un alimentatore da 12v sembra funzionare.

Strano, perchè leggendo su internet nessuno usa i 12v con il mio stesso sensore..cmq nel datasheet c'è scritto 12v.

A questo punto non posso collegare il pin in una porta digitale con arduino se mi escono 12v, giusto ?

Che cosa mi consigliate ?

Allora, ho appena verificato che utilizzando un alimentatore da 12v, lasciando sempre una resistenza da 10k, ho tra il pin e la massa dell'alimentazione un valore fisso di 12v quando non c'è movimento ed un valore molto più basso quando c'è movimento. quindi con un alimentatore da 12v sembra funzionare.

Strano, perchè leggendo su internet nessuno usa i 12v con il mio stesso sensore..cmq nel datasheet c'è scritto 12v.

A questo punto non posso collegare il pin in una porta digitale con arduino se mi escono 12v, giusto ?

Che cosa mi consigliate ?

Spero te non stia alimentando il PIR con 12V se è così ed hai la massa comune ad arduino.. quando il sensore dà il segnale lo da a 12V e non a 5V che corrispondono ai massimi accettati in ingresso dal microprocessore!!!

dai un occhio a questa pagina prima di far malanni và :) http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1285343809/all

Sì lo puoi usare, basta che metti un partitore per ridurre i 12V dell'uscita del sensore ai 5V compatibili con Arduino. Ciò che non capisco è perché usi una pull-up per gestire un segnale positivo. Fai una cosa: il capo della R 10K spostalo da 5V a GND e vedi cosa succede, ma continua a lavorare con 5V, dopo ti spiego come calcolare il partitore se proprio sono necessari i 12V

menniti: Sì lo puoi usare, basta che metti un partitore per ridurre i 12V dell'uscita del sensore ai 5V compatibili con Arduino. Ciò che non capisco è perché usi una pull-up per gestire un segnale positivo. Fai una cosa: il capo della R 10K spostalo da 5V a GND e vedi cosa succede, ma continua a lavorare con 5V, dopo ti spiego come calcolare il partitore se proprio sono necessari i 12V

Se metto la resitenza da 10k tra la massa ed il pin, non mi arriva tensione sul pin, misurando sempre il pin e la massa con il tester.. Sono l'unico a cui questo sensore non funziona con 5v.... Come procedo ?

ratto93: Spero te non stia alimentando il PIR con 12V se è così ed hai la massa comune ad arduino.. quando il sensore dà il segnale lo da a 12V e non a 5V che corrispondono ai massimi accettati in ingresso dal microprocessore!!!

dai un occhio a questa pagina prima di far malanni và :) http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1285343809/all

Avevo letto quel post, non ho ricavato le informazioni che mi servivano, a loro possibilemente a 5v funziona.. Cmq uso sempre la massa dell'alimentatore.

feof84:

menniti: Sì lo puoi usare, basta che metti un partitore per ridurre i 12V dell'uscita del sensore ai 5V compatibili con Arduino. Ciò che non capisco è perché usi una pull-up per gestire un segnale positivo. Fai una cosa: il capo della R 10K spostalo da 5V a GND e vedi cosa succede, ma continua a lavorare con 5V, dopo ti spiego come calcolare il partitore se proprio sono necessari i 12V

Se metto la resitenza da 10k tra la massa ed il pin, non mi arriva tensione sul pin, misurando sempre il pin e la massa con il tester.. Sono l'unico a cui questo sensore non funziona con 5v.... Come procedo ?

No, proprio non torna questa cosa: un sensore che genera tensioni positive NON può avere una pull-up che dovrebbe mantenere, IN ASSENZA DI SEGNALE, una valore tipico di 5V sul pin; infatti tu a sensore attivo hai 5V ed a sensore disattivo hai 0V circa; quindi la R va tra il pin di Arduino e GND. Se mettendola così non rilevi più alcuna variazione è palese che il sensore è guasto, visto che basta un "carico" di soli 10K per azzerarne il segnale.

ricapitolando. il sensore senza resistenza è a 0v, appena uso la resistenza da 10k (tra pin e positivo) il valore è di 12v circa fissi, quando c’è movimento ha una fluttuazione tra 0 e 12v per circa due secondi, poi si ristabilizza sui 12v, senza movimento.

Il prob è che a 5v questo non succede, non ho un valore fisso sui 5v ma un range da 0 a 5v come se rilevasse continuamente movimento, con 12v si stabilizza tra 11.70 e 12.30v.

A questo punto, d(scusami ti do del tu per facilità) dicendomi di misurare i v tra pin e massa, utilizzando tra pin e massa una resistenza da 10k, vedo 0, e quindi mi dici che non funziona…Perchè mi dici di mettere la resistenza tra il pin ed il gnd ? io tra tutti gli esempi che ho visto lo collegavano proprio come lo collego io, non capisco.

Tu stesso hai detto all'inizio del Topic che il tuo sensore si comporta all'inverso rispetto a quanto ti aspettavi, infatti se guardi lo sketch che hai postato il LOW viene interpretato come sensore attivo, mentre tu stesso affermi che quando è attivo va in high, ovvio che o stai sbagliando datasheet o stai sbagliando i collegamenti o il sensore è guasto; se elimini con certezza i primi due, hai poco da sperare, serve un nuovo sensore. Vediamo la questione della R: quando colleghi una fonte di segnale ad un pin di Arduino, usi una pull-up o una pull-down per evitare sbagli o segnali accindentali. Se il segnale generato attivamente è LOW allora usi una pull-up (cioè colleghi un capo al pin di Arduino a cui colleghi il segnale e l'altro capo a 5V); se invece il segnale generato attivamente è HIGH allora usi una pull-down (cioè colleghi un capo al pin di Arduino a cui colleghi il segnale e l'altro capo a GND). Quindi NON puoi usare una pull-up con un positivo, è un controsenso, chiaro che qualcosa non va, se ti funziona apparentemente.

Si ma adesso con l'alimentazione da 12v è corretto perchè il movimento lo vede azzerando la tensione da 12 scende a 0, quindi LOW, ed il codice che avevo preso dal quel blog funzionerebbe. Però è un controsenso visto che in quel blog l'alimentazione è cmq a 5v O_o , cmq ho comprato un altro se-10. VEdiamo che succede senza sbagliare collegamento e vedrò se effettivamente il sensore era rotto.

Ci aggiorniamo tra qualche giorno ;-)

grazie per la pazienza.

Figurati, comunque se alla fine decidi di usare i 12V per collegare l’uscita del sensore al pin di Arduino devi mettere un partitore, per ridurre i 12V a 5V, è IMPORTANTISSIMO altrimenti bruci tutto!
Visto che la R da 10K ce l’hai già (si fa per dire…) usa questa formuletta:
12V:4,7K=5V:x quindi x=56,4/5=11,28, da questo valore detrai la pull-up: 11,28-4,7=6,58.
In pratica metti una R da 4,7K fissa tra il pin di Arduino e GND e poi costruisci (ma meglio se ne compri una a valore fisso da 6,8K) l’altra da circa 6,58 (p.es. 4,7K + 1,2K + 2x330) montandola tra l’uscita del sensore ed il pin di Arduino.
In tal modo i 12V dovrebbero diventare circa 5V e dovrebbe funzionare tutto.

EDIT: ho corretto i valori ricordando le R che hai in casa ed ho scritto come le devi collegare.

Sicuramente le persone qui dentro sono molto esperte e ti daranno una mano a risolvere i tuoi problemi.

Personalmente con l'SE-10 non mi sono trovato benissimo e da quanto leggevo anche altri hanno avuto qualche casino.

Ho acquistato questo in sua sostituzione e mi trovo benissimo: http://arduino-direct.com/sunshop/index.php?l=product_detail&p=43

Ha anche un potenziometro per regolare il delay di passaggio dallo stato HIGH allo stato LOW etc. Funziona perfettamente.

menniti: Figurati, comunque se alla fine decidi di usare i 12V per collegare l'uscita del sensore al pin di Arduino devi mettere un partitore, per ridurre i 12V a 5V, è IMPORTANTISSIMO altrimenti bruci tutto!

Ciao menniti, sono arrivati gli altri due sensori nuovi che avevo acquistato. Stavolta non ho sbagliato a collegarlo, quindi non c'era più il dubbio di averlo bruciato.

Ho collegato 12v come indica il datasheet ed ho fissi 12V senza movimento, appena mi muovo scende drasticamente a 0-1 V. Direi che funziona abbastanza bene.

Devo ovviamente ridurre la tensione a 5v, seguirò il tuo consiglio.

Avevo l'ultimo dubbio riguardo quello che mi dicevi, la resistenza l'ho messa tra il pin e il positivo, ed il valore di default è HIGH, con movimento LOW.Come indicava quell' esempio che ti avevo postato. ovviamente la misuro con il tester tra il pin ed il negativo dell'alimentatore.

Questo è lo schema di collegamento: http://bildr.org/blog/wp-content/uploads/2011/06/PIR-Arduino_hookup-400x258.png.

Sembrerebbe essere tutto corretto. La mia domanda è: la resistenza che uso ora è un pull-up, il pull-down è quando la resistenza è tra il pin e il GND, è corretto ? Per il futuro come capisco se applicare l'uno o l'altra ?

Ancora non ho ben capito l'uso di queste resistenze..da ciò che inizio a capire servono per impostare dei valori fissi quando non il sensore non è in "movimento", il pull-up il valore è al massimo, il pull-down il valore è al minimo.

Ad esempio nel datasheet del pir non ci sono informazioni sulla resistenza da utilizzare, mi indica solo che il ping alarm è opencollector.

Sto dicendo cavolate ?

Ciao e sempre grazie!