Problemi con sensore PIR

Ciao a tutti, dunque sto facendo qualche prova con questo sensore PIR -> https://www.sparkfun.com/datasheets/Sensors/Proximity/SE-10.pdf

Usando l'arduino UNO sono riuscito a farlo funzionare piuttosto bene, ho scoperto che bisogna dargli almeno 30s di tempo all'avvio per calibrarsi dopo di che si può iniziare a controllare lo stato. Per iniziare sono partito da questo esempio:
http://bildr.org/2011/06/pir_arduino/

Con due modifiche principali:

  1. invece di collegare il + del sensore ai 5V come il signal, ho collegato il + al Vin, così alimentando l'arduino con un alimentatore da 7-12V, fornisco al sensore l'alimentazione suggerita mantendendo i 5V sul signal.
  2. prima di iniziare il loop attendo 30s per farlo calibrare all'accensione (come dicevo sopra)

Quindi, con l'UNO funziona bene (se l'alimentazione arriva da usb è un pò meno reattivo ma non da falsi positivi o altro)

Ora con lo YUN i problemi sono i seguenti:

  • se replico il tutto, non funziona bene come con l'UNO, nello specifico rilevo dei falsi positivi
  • se collego il + del sensore al Vin dello YUN il sensore non funziona proprio per niente (è come se non fosse alimentato) e quindi devo collegarlo al 5V
  • alimentandolo esternamente non ho risolto ma forse sbaglio qualcosa nelle connessioni...

Lo sketch è molto semplice e praticamente è identico a quello dell'esempio linkato sopra; aggiungo solo un ciclo nel setup() che attende 30s

Secondo voi quali potrebbero essere i problemi? =(

Il sensore che tipo di uscita ha ? ... se e' un'open collector, attacca una resistenza di pull-up sull'ingresso (o attiva quello interno), se non e' open-collector, occhio che non ti dia in uscita 12V, che friggerebbero il pin di ingresso di Arduino ...

Etemenanki:
Il sensore che tipo di uscita ha ? ... se e' un'open collector, attacca una resistenza di pull-up sull'ingresso (o attiva quello interno), se non e' open-collector, occhio che non ti dia in uscita 12V, che friggerebbero il pin di ingresso di Arduino ...

Ho messo il link con il datasheet per essere sicuro di non dire stupidate, cmq dovrebbe essere un segnale digitale da 5V.
Con lo schema che ho linkato sopra, l'allarme scatta quando leggo lo stato LOW.

EDIT:

quello che non capisco è come mai sull'UNO funzioni piuttosto bene, mentre con lo YUN mi dia i falsi positivi :confused:

Lo chiedevo perche' sul "datasheet" linkato non c'e' ... ne output voltage, ne output type ... a meno che l'uscita non sia quella indicata come "effect voltage", ma in quel caso 1,5V di uscita massima che razza di segnale "high" sarebbe ? ...

Comunque il 90% di quei sensori sono open-collector, quindi richiedono una resistenza esterna fra il pin di ingresso ed il +5V dell'arduino per funzionare ... da 10 a 22 K , va bene tutto ...

la resistenza l'ho messa... il dubbio è che lo YUN dia meno corrente e quindi che il sensore funzioni male...

Da dove prendi l' alimentazione del sensore PIR?
Ciao Uwe

Per ora dal pin dei 5V però ho provato a misurare la corrente erogata e sembra inferiore a quella dell'UNO quindi la mia ipotesi è la seguente:

  1. il pir è alimentato con meno corrente quindi non funziona bene...
  2. i 5V sul signal del pir danno meno corrente quindi con la stessa resistenza dell'UNO (10KOhm) sul gpio arriva un segnale non giusto e quindi porta a dei falsi positivi

Ora vi chiedo presumendo che abbia ragione, non esiste uno shield che permetta di prendere i GPIO così come sono fornendo però delle linee da 5V e Vin esterne a cui posso attaccare un alimentatore da 7~12V?

Puoi usare il sistema che io uso sempre per tutti gli ingressi che devono ricevere comandi da altri circuiti "indefiniti" ... fra il pin di ingresso e massa, una resistenza da almeno 47K (di solito 100K), con in parallelo uno zener da 5V ed un condensatore (massimo 100n, se ti serve reazione "veloce", anche solo 10n), e fra il pin ed il dispositivo da leggere, una resistenza da 1K ...

In questo modo hai eliminazione di buona parte dei disturbi esterni (il condensatore), pulldown (la resistenza da 100K), e protezione fino a 12V ed oltre (la resistenza da 1K piu lo zener) ... funziona anche all'opposto, cioe' con dispositivi open collector che chiudono a massa anziche al +V e richiedono un pullup, in quel caso metti la resistenza da 47K verso il positivo, collegata all'ingresso anziche' al pin di arduino, e lascia il resto com'e' ...

Etemenanki:
Puoi usare il sistema che io uso sempre per tutti gli ingressi che devono ricevere comandi da altri circuiti "indefiniti" ... fra il pin di ingresso e massa, una resistenza da almeno 47K (di solito 100K), con in parallelo uno zener da 5V ed un condensatore (massimo 100n, se ti serve reazione "veloce", anche solo 10n), e fra il pin ed il dispositivo da leggere, una resistenza da 1K ...

In questo modo hai eliminazione di buona parte dei disturbi esterni (il condensatore), pulldown (la resistenza da 100K), e protezione fino a 12V ed oltre (la resistenza da 1K piu lo zener) ... funziona anche all'opposto, cioe' con dispositivi open collector che chiudono a massa anziche al +V e richiedono un pullup, in quel caso metti la resistenza da 47K verso il positivo, collegata all'ingresso anziche' al pin di arduino, e lascia il resto com'e' ...

Riusciresti a spiegarmelo in modo più semplice magari con uno schema se ne trovi uno al volo xD
Non sono un esperto di elettronica e quando mi parli di zener per esempio non so di cosa stai parlando :stuck_out_tongue:

Tipo questi :wink:

Il primo schema, anche se e' previsto per usare il +5V interno, accetta comunque anche 12V senza che il micro si danneggi (ovviamente NON usando il +5V interno, e con le masse in comune :wink: )

Grazie appena riesco faccio qualche prova :slight_smile: