Usare un sensore da 5V con i GPIO


24 posts
by blue_tech » Thu Jan 03, 2013 3:50 pm
Salve, dunque leggevo che non è possibile collegare al pin da 5V un sensore che assorbe 5V (al che mi chiedo a che serve il suddetto pin?).

Ora io ho un sensore con 3 connettori: +5V, GND, signal

Come lo alimento usando i gpio del RPi?
Grazie!
Posts: 29
Joined: Sat May 19, 2012 2:01 pm
by 3-4-Fun » Thu Jan 03, 2013 6:14 pm
I gpio sono I/O digitali.
Se il tuo sensore è un analogico (ad esempio 0..20mA), non lo puoi connettere direttamente, in quanto il GPIO non saprebbe leggerlo.
Per interfacciare sensori analogici (temperatura, pressione, umidità, ecc) devi avere dei sensori con interfaccia I2C o SPI.
Detto questo, in generale puoi collegare il +5V e GND del RPI ad un circuito esterno per alimentarlo, a patto che la corrente assorbita non superi i 120mA (se non ricordo male).

saluti
Posts: 50
Joined: Sun Dec 23, 2012 3:25 pm
by blue_tech » Thu Jan 03, 2013 7:03 pm
Il sensore è questo -> http://www.robot-italy.com/it/pir-motion-sensor.html
(C'è scritto che va a 12V ma ho letto che lo si può alimentare anche a 5V e 7V [ho visto progettini dove lo implementano su arduino senza nessuna alimentazione strana, lo attaccano al 5V e via...] )

Mi pare che l'uscita del segnale sia digitale visto che dice "va a livello logico basso"... no?

Per quanto riguarda l'alimentazione mi spiace ma non ho capito; non sono molto bravo in elettronica, mi puoi spiegare bene cosa dovrei fare? Diciamo che ho a disposizione una breadboard e un pò di materiali come resistenze, ecc... Se manca qualcosa me lo procuro ma voglio capire le problematiche e cosa è necessario per far funzionare il tutto. :?

(Se volessi dargli 12V cosa dovrei fare?)

Grazie!
Posts: 29
Joined: Sat May 19, 2012 2:01 pm
by 3-4-Fun » Thu Jan 03, 2013 10:23 pm
Ho visto il link, effettivamente è un sensore digitale.
La cosa è abbastanza semplice.
- Il filo di massa lo devi collegare al filo di massa del rpi.
- L'alimentazione del sensore è 7-12V, per cui non puoi usare i 5V dell'RPI, per cui ti dovrai procurare un alimentatore 9-12V, ne puoi trovare abbastanza facilmente di recupero, molte apparecchiature funzionano a 12V (es. vecchi mangianastri, rasoi elettrici, radio) , il positivo lo attacchi al pin di alimentazione del sensore, mentre il negativo lo puoi attaccare insieme con le due masse.
- Collega il filo dei 5V del rpi ad un terminale di una resistenza da 10K Ohm, mentre il secondo terminale va al pin "segnale" del sensore.
- Collega quindi il pin "segnale" del sensore ad un pin GPIO di tua scelta.

Quando il sensore non rileva alcun movimento, tra il pin "segnale" e GND dovresti misurare una tensione vicina ai 5V, mentre quando rileva movimento lo stesso pin dovrebbe avere una tensione vicina a 0V. Il pin GPIO che avrai collegato dovrebbe riportare lo stato del segnale.

Spero di essere stato chiaro.

Ciao
Posts: 50
Joined: Sun Dec 23, 2012 3:25 pm
by blue_tech » Sat Jan 05, 2013 1:05 pm
Ok! Mi pare di aver capito!

Appena riesco faccio un pò di prove ;)

Un'ultima cosa, dato che non sono particolarmente esperto di elettronica, mi dici come stabilire che tipo di resistenza è necessaria?
Posts: 29
Joined: Sat May 19, 2012 2:01 pm
by 3-4-Fun » Sat Jan 05, 2013 1:34 pm
Sono passati 35 anni da quando avevo studiato il codice dei colori, vedi

http://www.electronicprestige.it/codicea.htm

In pratica dovrebbe essere marrone (1), nero (0), arancio(x1000), argento/oro (+/-10-5%), coiè 10x1000 Ohm con 5/10% di tolleranza.
Per la potenza, basta 1/4W.

Ciao
Posts: 50
Joined: Sun Dec 23, 2012 3:25 pm
by blue_tech » Sat Jan 05, 2013 1:55 pm
No, scusa, intendevo come decidi il valore della resistenza da usare; cioè come decidi che devi usare una resistenza da 10KOhm piuttosto che una da 1KOhm?. Il codice colori lo conoscevo già :P
Posts: 29
Joined: Sat May 19, 2012 2:01 pm
by 3-4-Fun » Sat Jan 05, 2013 6:19 pm
blue_tech wrote:No, scusa, intendevo come decidi il valore della resistenza da usare; cioè come decidi che devi usare una resistenza da 10KOhm piuttosto che una da 1KOhm?. Il codice colori lo conoscevo già :P

Sta scritto nel link che mi avevi postato sul sensore da collegare...

http://www.robot-italy.com/it/pir-motion-sensor.html

Ciao
Posts: 50
Joined: Sun Dec 23, 2012 3:25 pm
by ldellaquila » Sun Jan 06, 2013 11:35 am
scusate se mi intrometto, ma ho letto una cosa che non mi convince fino in fondo...

- Collega quindi il pin "segnale" del sensore ad un pin GPIO di tua scelta.

Quando il sensore non rileva alcun movimento, tra il pin "segnale" e GND dovresti misurare una tensione vicina ai 5V, mentre quando rileva movimento lo stesso pin dovrebbe avere una tensione vicina a 0V. Il pin GPIO che avrai collegato dovrebbe riportare lo stato del segnale.


occhio che collegare un segnale da 5V a un pin GPIO IN (che e' fatto per andare a 3.3V) rischia di friggerti la RPi.
In caso mettici un partitore di tensione che ti abbassa la tensione sul pin, es.
segnale sensore -> R1(1KR) -> GPIO -> R2(2.2KR) -> GROUND

se ho scritto una cavolata pero' insultatemi pure ;-)

Luigi
Raspberry Pi Mod.B Rev.1 256Mb Ram
Raspberry Pi Mod.B Rev.2 512Mb Ram
Posts: 34
Joined: Sat Sep 01, 2012 2:20 pm
by blue_tech » Sun Jan 06, 2013 5:21 pm
Ma invece di collegare il segnale a una linea a +5V non faccio prima a collegarlo ad una a +3.3V sempre con la resistenza di mezzo? Eviterei i rischi e non avrei bisogno di aggiungere componenti per ridurre la tensione sul segnale... no? :?

Nel caso la resistenza da 10KOhm andrebbe sempre bene?
Posts: 29
Joined: Sat May 19, 2012 2:01 pm
by ldellaquila » Sun Jan 06, 2013 8:18 pm
bella domanda... a occhio direi di si, ma bisognerebbe capire come e' fatto il sensore internamente
Raspberry Pi Mod.B Rev.1 256Mb Ram
Raspberry Pi Mod.B Rev.2 512Mb Ram
Posts: 34
Joined: Sat Sep 01, 2012 2:20 pm
by 3-4-Fun » Sun Jan 06, 2013 8:58 pm
Scusate, ma mi sembra che la fate + difficile di quello che è.
La resistenza serve solo per limitare la corrente massima a 0.5mA quando il segnale è in bassa impedenza (segnale basso).
Credo che si possa tranquillamente attaccare la resistenza ai 3.3V invece che ai 5V, magari cambiando la resistenza a 6.6KOhm, ma non ne vedo il motivo.
Posts: 50
Joined: Sun Dec 23, 2012 3:25 pm
by blue_tech » Sun Jan 06, 2013 11:32 pm
Quindi ricapitolando, io seguo lo schema di questo disegno:

Image

Solo che il capo della resistenza che va a +5V invece la attacco al +3.3V del RPi; giusto? :?

Così se ho capito bene: finchè il sensore non rileva nulla, sul GPIO del segnale avrò un segnale logico alto (i +3.3V), se rileva qualcosa, invece invierà un segnale logico basso (0V)?

A GND collego solo il pin GND del sensore e nient'altro giusto?
Posts: 29
Joined: Sat May 19, 2012 2:01 pm
by blue_tech » Mon Jan 07, 2013 11:28 am
Tra l'altro come GND uso il GND del RPi o uso direttamente il polo negativo del trasformatore?

Avevo pensato di usare i due poli del trasformatore per +12V e GND e dal RPi usare solo il pin dei +3.3V e il pin GPIO. Dite che è giusto?
Posts: 29
Joined: Sat May 19, 2012 2:01 pm
by ldellaquila » Mon Jan 07, 2013 2:51 pm
3-4-Fun, m'hai convinto :)
mi sembrava abbastanza probabile che fosse cosi', ma volevo evitare di sparare cavolate ;)
Raspberry Pi Mod.B Rev.1 256Mb Ram
Raspberry Pi Mod.B Rev.2 512Mb Ram
Posts: 34
Joined: Sat Sep 01, 2012 2:20 pm
by 3-4-Fun » Mon Jan 07, 2013 7:32 pm
blue_tech wrote:Tra l'altro come GND uso il GND del RPi o uso direttamente il polo negativo del trasformatore?

Avevo pensato di usare i due poli del trasformatore per +12V e GND e dal RPi usare solo il pin dei +3.3V e il pin GPIO. Dite che è giusto?


Io collegherei tutti i GND insieme, in modo da avere lo stesso riferimento sia sul rpi che sull'alimentatore del sensore.

Saluti
Posts: 50
Joined: Sun Dec 23, 2012 3:25 pm
by richard_77 » Mon Jan 07, 2013 8:48 pm
blue_tech wrote:Quindi ricapitolando, io seguo lo schema di questo disegno:

Image

Solo che il capo della resistenza che va a +5V invece la attacco al +3.3V del RPi; giusto? :?

Così se ho capito bene: finchè il sensore non rileva nulla, sul GPIO del segnale avrò un segnale logico alto (i +3.3V), se rileva qualcosa, invece invierà un segnale logico basso (0V)?

A GND collego solo il pin GND del sensore e nient'altro giusto?

Devi fare come consiglia ldellaquila, devi mettere due resistenze, e prendere il segnale da in mezzo le due.
Se colleghi come nello schema postato mandi i 5V al GPIO e lo friggi.
Posts: 4
Joined: Sat Oct 06, 2012 12:52 am
by blue_tech » Mon Jan 07, 2013 9:02 pm
richard_77 wrote:Devi fare come consiglia ldellaquila, devi mettere due resistenze, e prendere il segnale da in mezzo le due.
Se colleghi come nello schema postato mandi i 5V al GPIO e lo friggi.


k allora lui dice
occhio che collegare un segnale da 5V a un pin GPIO IN (che e' fatto per andare a 3.3V) rischia di friggerti la RPi.
In caso mettici un partitore di tensione che ti abbassa la tensione sul pin, es.
segnale sensore -> R1(1KR) -> GPIO -> R2(2.2KR) -> GROUND


nel disegno c'è 5V -> R1(10KOhm) -> signal -> GPIO, io però pensavo di usare invece di 5V il pin da 3.3V da collegare al signal che va al GPIO così in teoria nel peggiore dei casi arriverebbe 3.3V al pin GPIO a cui collego il signal. no? avrei 3.3V -> R1(10KOhm) -> signal -> GPIO... non va bene?
Posts: 29
Joined: Sat May 19, 2012 2:01 pm
by richard_77 » Tue Jan 08, 2013 7:04 pm
blue_tech wrote:nel disegno c'è 5V -> R1(10KOhm) -> signal -> GPIO, io però pensavo di usare invece di 5V il pin da 3.3V da collegare al signal che va al GPIO così in teoria nel peggiore dei casi arriverebbe 3.3V al pin GPIO a cui collego il signal. no? avrei 3.3V -> R1(10KOhm) -> signal -> GPIO... non va bene?


In teoria sì, però tieni conto che quando il PIR vede movimento, il sensore mette in corto il segnale con il GND, la resistenza serve proprio per limitare la corrente.
Se il GPIO è settato correttamente come input nessun problema, però se per caso è settato come output per sbaglio andrebbe in corto, bruciandosi.
Tieni conto se output/input sotto settati via software, per cui basta un attimo per sbagliarsi e far danni.

Per cui sarebbe meglio avere una resistenza che protegga il GPIO.
Così:
3.3V -> R1 -> signal -> R2 -> GPIO

Per i valori, dovrebbero andare bene R1=10kOhm, R2= 1 KOhm (sembra che i GPIO possano fornire fino a 16mA).

Uso il condizionale perché non sono sicurissimo dei valori e non mi prendo responsabilità :evil:
Posts: 4
Joined: Sat Oct 06, 2012 12:52 am
by blue_tech » Wed Jan 09, 2013 10:42 am
richard_77 wrote:
blue_tech wrote:nel disegno c'è 5V -> R1(10KOhm) -> signal -> GPIO, io però pensavo di usare invece di 5V il pin da 3.3V da collegare al signal che va al GPIO così in teoria nel peggiore dei casi arriverebbe 3.3V al pin GPIO a cui collego il signal. no? avrei 3.3V -> R1(10KOhm) -> signal -> GPIO... non va bene?


In teoria sì, però tieni conto che quando il PIR vede movimento, il sensore mette in corto il segnale con il GND, la resistenza serve proprio per limitare la corrente.
Se il GPIO è settato correttamente come input nessun problema, però se per caso è settato come output per sbaglio andrebbe in corto, bruciandosi.
Tieni conto se output/input sotto settati via software, per cui basta un attimo per sbagliarsi e far danni.

Per cui sarebbe meglio avere una resistenza che protegga il GPIO.
Così:
3.3V -> R1 -> signal -> R2 -> GPIO

Per i valori, dovrebbero andare bene R1=10kOhm, R2= 1 KOhm (sembra che i GPIO possano fornire fino a 16mA).

Uso il condizionale perché non sono sicurissimo dei valori e non mi prendo responsabilità :evil:


Ok ho capito, sulla corrente massima per i GPIO non ho ancora capito al 100% se sono 16mA o 50mA :?
Posts: 29
Joined: Sat May 19, 2012 2:01 pm
by blue_tech » Wed Jan 09, 2013 4:30 pm
Dunque ho provato dandogli +5V come alimentazione e il +3.3V per il signal con le resistenze consigliate sopra perchè ho visto qui -> http://bildr.org/2011/06/pir_arduino/ che lo usano anche a +5V

Funzionare più o meno funziona ma ci sono un sacco di falsi positivi. Ora provo a dargli il +12V per vedere se migliora.

Come codice ho usato questo per le prove:

Code: Select all
import RPi.GPIO as GPIO, time

#disabilito i warning
#GPIO.setwarnings(False)
#dice che la numerazione dei pin e' quella fisica sulla scheda
#e non quella logica
GPIO.setmode(GPIO.BOARD)

GPIO.setup(18, GPIO.OUT)
GPIO.setup(11, GPIO.IN)

time.sleep(2)

while 1:
   if GPIO.input(11): #true = HIGH quindi no allarme!
      GPIO.output(18, False)
      #print "no "
   else:
      GPIO.output(18, True)
      print "allarme "
      time.sleep(2)


Sul GPIO 18 ho messo un led di riscontro visivo.
Ho aggiunto uno sleep di 2sec prima del ciclo perchè c'è scritto che all'avvio il sensore ha bisogno di 2 secondi per fare la "fotografia" della stanza e anche nel link mette uno sleep di 2sec dopo ogni rilevazione per lo stesso motivo.

Pur non essendoci nessuno nella stanza, ogni tanto mi manda fuori l'allarme... :?
Posts: 29
Joined: Sat May 19, 2012 2:01 pm
by blue_tech » Wed Jan 09, 2013 4:49 pm
Ho provato anche col 12V non sono convintissimo che il tutto sia perfettamente funzionante ogni tanto ho visto un paio di falsi positivi (o almeno così sembravano). Mi sa che finisce che prendo anche un arduino, uso quello per le rilevazioni (visto che con arduino posso farle real-time) e poi faccio comunicare arduino col rpi per rilevare il movimento...

Leggendo online sembra banale il collegamento e funzionamento, io sto provando e ci sto ragionando da qualche gg e non ho ancora un risultato certo XD

Voi che ne pensate?
Posts: 29
Joined: Sat May 19, 2012 2:01 pm
by stefanet » Sun Feb 03, 2013 10:58 am
Ciao,

anche io sto tentando di far funzionare questo sensore, ma non vedo luce.
Non riesco a capire se possa essere rotto o meno.
Ho messo l'immagine di come ho messo i collegamenti, ma il led associato (non messo nel disegno, a +5v) non segnala nulla.

Dove sbaglio?
Attachments
Pir.jpg
Pir.jpg (43.62 KiB) Viewed 1174 times
Posts: 13
Joined: Tue Jan 22, 2013 1:42 pm
by sert00 » Wed Feb 27, 2013 6:32 am
non e' da spostare il jumper ragazzi?pure io devo accingermi appena arrivano i pir...
http://www.ladyada.net/wiki/tutorials/l ... s/pir.html
mi riferisco al prob dei falsi positivi e funzionamento ballerino.tentar non nuoce agendo sul jumper del retrigger e fare altri test
Posts: 12
Joined: Wed Feb 27, 2013 5:53 am