Utilizzo del sensore pir su arduino

salve a tutti e scusate il disturbo, avrei bisogno di un aiuto:
Ho acquistato un sensore pir per rilevare la presenza di calore, ma quando lo collego risulta che da input ad intermittenza senza motivo. Allora ho provato a calibrarlo con i vari sketch presenti nel forum anche nella sezione inglese, ma nella calibrazione non entra in loop, e mi dice che è attivo SEMPRE 30 secondi. Inoltre quando modificando la pausa sono riuscito a far partire il loop mandava interventi regolari di interruzione e movimento senza motivo, come avevo già rilevato in precedenza.

tanto per rendere più facile la domanda posto anche gli sketch provati:

byte pirPin =2;
byte ledPin= 13;

void setup() {
  pinMode(pirPin, INPUT);
  pinMode(ledPin, OUTPUT);
  
 }
 
void loop(){
  if (digitalRead(pirPin)==LOW) {
    digitalWrite (ledPin, HIGH); 
  }else (digitalWrite(ledPin, LOW));
    
 }


questo è il secondo

int calibrationTime= 30;

long unsigned int lowIn;

long unsigned int pause = 5000;

boolean lockLow = true;
boolean takeLowTime;

int pirPin = 3;
int ledPin= 13;

void setup() {
  Serial.begin(9600);
  pinMode(pirPin, INPUT);
  pinMode(ledPin, LOW);
  
  Serial.print("calibrazione sensore");
   for (int i=0; i< calibrationTime; i++) {
     Serial.print(".");
     delay(1000);
     }
     Serial.println ("fatto");
     Serial.println ("sensore attivo");
     delay(50);
    }
void loop(){
  if (digitalRead(pirPin) == HIGH) {
    digitalWrite(ledPin, HIGH);
    if (lockLow) {
      lockLow = false;
      Serial.println("---");
      Serial.print("movimento rilevato a ");
      Serial.print(millis()/1000);
      Serial.print(" secondi");
      delay (50);
      }
      takeLowTime = true;
      }
  if(digitalRead(pirPin) == LOW) {
    digitalWrite(ledPin, LOW);
    
    if(takeLowTime) {
      lowIn = millis();
      takeLowTime = false;
     }
    if(!lockLow && millis()- lowIn > pause) {
      lockLow = true;
      Serial.print ("movimento terminato a ");
      Serial.print (millis() - pause/1000);
      Serial.print (" secondi");
      delay(50);
      }
      }
      }

e questo è il terzo

const int ledPin = 13;
const int inputPin = 3;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(inputPin, INPUT);
  
  }

void loop() {
  int val = digitalRead(inputPin);
  if (val == HIGH)
  {
    digitalWrite(ledPin, HIGH);
    delay(500);
    digitalWrite(ledPin, LOW);
    }
   }

nessuno di questi ha funzionato a dovere…

ringrazio in anticipo

ciao ma: 1- il programma postato cosi mandera in furia gli amministratori (ce un apposito pulsantino per inserirli bene) 2- sarebbe bello sapere che tipo di sensore hai, magari il suo datascheet 3- interessante pure sapere come è collegato tutto..leggi schema elettrico

:)

Come ti è stato detto, in conformità al punto 7. del regolamento (... che dovresti aver letto), edita il tuo post e racchiudi il codice tra i tag "CODE", dopo di che dacci il link al PIR che stai usando ed infine, come ti ha chiesto Martinix, metti lo schema esatto dei collegamenti che hai fatto.

Guglielmo

Martinix: ciao ma: 1- il programma postato cosi mandera in furia gli amministratori (ce un apposito pulsantino per inserirli bene) 2- sarebbe bello sapere che tipo di sensore hai, magari il suo datascheet 3- interessante pure sapere come è collegato tutto..leggi schema elettrico

:)

grazie innanzi tutto del consiglio per postare gli sketch, ho letto il regolamento ma non avevo notato la sezione per postarli.

allora il sensore è :

Model: HC-SR501

Operating voltage: 4.5 - 20V

Level Output detected: High (3.3V)

Level Output undetected Low (0 V)

Trigger: H / repeated trigger (default)

Detection distance: 3-7 metres (Adjustable)

Delay time : 5-200s (Adjustable)

Blockade time 2.5 s (default)

Board size: 3.2x2.4x2.5 cm

il collegamento è stato, nel caso del led connesso in maniera classica alla breadboard, in cui davo i 5 volt al sensore con una resistenza da 10kohm il ground al suo GND e dal pin 2 (0 3 in base allo sketch) ho mandato il controllo, mentre il led lo controllavo dal 12(o 13) con una resistenza da 220ohm ed il GND

grazie

perchè dai i 5V al sensora tramite resistenza? lui lavora da4.5v a 20V se hai scritto bene!

in ogni modo avere lo schema elettrico esatto dei collegamenti, è molto meglio per noi per capire il problema... non da margini ad interpretazioni!

in più l'usita alta è a 3.3V arduino potrebbe interpretarla male (se ricordo bene!!)

Hai già visto QUESTO esempio ? C'è lo schema di collegamento e un piccolo programma demo già pronti ... :roll_eyes:

Guglielmo

Martinix:
perchè dai i 5V al sensora tramite resistenza? lui lavora da4.5v a 20V se hai scritto bene!

all’inizio non l’avevo messa, ma cercando tra le varie schematiche ho notato che tutti la inserivano e da non esperto mi sono fatto due domande…in ogni caso il sensore funzionava risultava funzionante…

gpb01: Hai già visto QUESTO esempio ? C'è lo schema di collegamento e un piccolo programma demo già pronti ... :roll_eyes:

Guglielmo

si lì l'ho provato senza resistenza e mi dava funzionamento continuo o ad intermittenza...mai come nel video...

ma se tu limiti la corrente e il sensore lavora da 4.5V (e tu ne dai 5V) potresti avere malfunzionamenti dovutiad errate polarizzazioni del dispositivo... forse dove haio visto te il sensore funzionava a tensioni differenti (o davano tensioni differenti)

gpb01 io avevo visto questo (ps. non ricordo mai i valori di commutazione :( ) http://www.mauroalfieri.it/elettronica/sensore-pir-primo-progetto-e-test.html

Martinix: ma se tu limiti la corrente e il sensore lavora da 4.5V (e tu ne dai 5V) potresti avere malfunzionamenti dovutiad errate polarizzazioni del dispositivo... forse dove haio visto te il sensore funzionava a tensioni differenti (o davano tensioni differenti)

gpb01 io avevo visto questo http://www.mauroalfieri.it/elettronica/sensore-pir-primo-progetto-e-test.html

quindi per prima cosa dici di alimentarlo a batterie magari senza usare arduino, come nel link mandato da Guglielmo?

(PS quello tra parentesi già lo avevo visto ;))

si potrebbe essere un ottima idea per capire come funziona, misurare tensioni ecc ecc senza avere la "complicazione" del microcontrollore...

come dire prima guidare l'auto, impariamo a camminare ;)

Martinix: si potrebbe essere un ottima idea per capire come funziona, misurare tensioni ecc ecc senza avere la "complicazione" del microcontrollore...

come dire prima guidare l'auto, impariamo a camminare ;)

mmm ok, spero sia solo un problema di alimentazione allora

@ Martinix : Un progetto vale l'altro ... è un oggetto talmente banale (... praticamente un interruttore) ... :roll_eyes:

@ giacomoM : Ovvio che prima devi essere sicuro che il PIR funzioni correttamente e poi ti puoi mettere ad integrarlo con Arduino. Se neanche sai come si comporta o se funziona ... come fai a scrivere il SW ??? :astonished:

Guglielmo

gpb01: @ Martinix : Un progetto vale l'altro ... è un oggetto talmente banale (... praticamente un interruttore) ... :roll_eyes:

@ giacomoM : Ovvio che prima devi essere sicuro che il PIR funzioni correttamente e poi ti puoi mettere ad integrarlo con Arduino. Se neanche sai come si comporta o se funziona ... come fai a scrivere il SW ??? :astonished:

Guglielmo

è quello che cercavo di capire, il perché non funzionava in maniera corretta, certo se è solo un problema d alimentazione e quegli sketch sono corretti a me va più che bene...

gpb01: @ Martinix : Un progetto vale l'altro ... è un oggetto talmente banale (... praticamente un interruttore) ... :roll_eyes:

ineffetti, si hai ragione.... :blush:

@OT gia che ci sono ricordi queli sono le solglie di commutazione di arduino (non lo ricordo mai) grazie

per collegare il pir con le batterie attaccato su arduino, poi non collegherò più i 5 volt....ma il microcontrollore potendo ricevere solo un voltaggio limitato in risposta, per evitare che si bruci il pin di GND, dovrò mettere una resistenza? oppure abbasserebbe di nuovo il voltaggio del sistema?

per fare la prova suggerita da Gugliemo, per ora "dimenticati di arduino" colleghi il pir alla batteria (da specifica funge da 4.5 a 20V quindi 9V è nel range, e misuri l'usita con un voltmetro, o ci attacchi un led (pressuppongo ce la faccia in corrente, ovviamente il led con la sua brava resistenza)

Martinix:
per fare la prova suggerita da Gugliemo, per ora “dimenticati di arduino” colleghi il pir alla batteria (da specifica funge da 4.5 a 20V quindi 9V è nel range, e misuri l’usita con un voltmetro, o ci attacchi un led (pressuppongo ce la faccia in corrente, ovviamente il led con la sua brava resistenza)

questo va benissimo, ma per non disturbarvi di nuovo ero avanzato un po’ con la domanda…

ok hai visto il link di gugliemo? immagino di si.. fallo ugale uguale.....

se vedi bene in quello schema ce una sola resistenza e va sul led!!

Martinix: ok hai visto il link di gugliemo? immagino di si.. fallo ugale uguale.....

se vedi bene in quello schema ce una sola resistenza e va sul led!!

si ma se noti non collega mai la batteria insieme ad arduino, magari il suo sensore necessita di un voltaggio differente