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);
}
}
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.
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
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...
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 )
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)
@ Martinix : Un progetto vale l'altro ... è un oggetto talmente banale (... praticamente un interruttore) ...
@ 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 ???
gpb01:
@ Martinix : Un progetto vale l'altro ... è un oggetto talmente banale (... praticamente un interruttore) ...
@ 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 ???
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...
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...