• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Czujnik ruchu PIR HC-SR501 - sygnał zmienia się niezależnie od ruchu
#11
Generalnie wiem jak działa czujnik, ale coś sprawia, że gdy ruch zaniknie, a czujnik przechodzi w stan niski, pojawia się 5-10 sekund przerwy w wykrywaniu ruchu. Po tym czasie ponownie zaczyna monitorować i gdy pojawia się ruch, podbija sygnał do wysokiego i trzyma tak długo jak trwa ruch (co jednocześnie wyklucza błąd źle ustawionej zworki).

Niestety po wgraniu twojego skryptu, nadal jest tak samo

Może coś mi się poprzestawiało w ustawieniach programu od Arduino i źle ładuje sketch? Jaki powinien być programator?
 
Odpowiedź
#12
digitalRead(sensor) == LOW
spróbuj tak
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#13
A spróbuj po prostu coś takiego:

Kod:
int pir=7;
int led=8;

void setup(){
pinMode(7, INPUT);
pinMode(8,OUTPUT);
}

void loop() {
if (digitalRead(pir) == HIGH) {
digitalWrite(led, HIGH);
}
if (digitalRead(pir) == LOW) {
digitalWrite(led, LOW);
}
}
W moim kodzie, dla jasności, umieściłem czujnik na pinie 7, led - na 8, choć może łatwiej byłoby led na 13, nie musiałbyś wtedy niczego podłączać na wyjściu.
 
Odpowiedź
#14
(16-11-2016, 20:20)krn78 napisał(a): A spróbuj po prostu coś takiego:

Kod:
int pir=7;
int led=8;

void setup(){
pinMode(7, INPUT);
pinMode(8,OUTPUT);
}

void loop() {
if (digitalRead(pir) == HIGH) {
digitalWrite(led, HIGH);
}
if (digitalRead(pir) == LOW) {
digitalWrite(led, LOW);
}
}
W moim kodzie, dla jasności, umieściłem czujnik na pinie 7, led - na 8, choć może łatwiej byłoby led na 13, nie musiałbyś wtedy niczego podłączać na wyjściu.

ale ja mu ten sam kod podałem i nie działa mu co mnie dziwi bo u mnie śmiga tylko jak mam low
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#15
(16-11-2016, 22:46)adix napisał(a): ale ja mu ten sam kod podałem i nie działa mu co mnie dziwi bo u mnie śmiga tylko jak mam low

Mad_Maxs napisał, ze po pojawieniu się ruchu czujnik zwraca mu stan wysoki, dlatego tak napisałem.


Mad_Maxs, możesz sprawdzić sam czujnik bez podłączenia do Arduino? Zasil go z byle czego (choćby z Arduino), ale sygnał czytaj za pomocą miernika (albo diody LED z rezystorem w szeregu).
 
Odpowiedź
#16
Kod:
int sensor = 2;              // the pin that the sensor is atteched to

            // variable to store the sensor status (value)

void setup() {
pinMode(sensor, INPUT_PULLUP);    // initialize sensor as an input
Serial.begin(9600);        // initialize serial
}

void loop(){

   if ( !digitalRead(sensor) == LOW) {           // wykryty ruch
     Serial.println(" Motion detect"); //wyswietl napis w konsoli
     delay(200);                // delay 100 milliseconds
     }else{
       Serial.println(" Motion stopped!");
       delay(200);
       }

       }
spróbuj tak.
[Obrazek: banerelektronika.jpg]



Jeśli pomogłem podziękuj punktem reputacji Wink
 
Odpowiedź
#17
(17-11-2016, 13:57)krn78 napisał(a): Mad_Maxs, możesz sprawdzić sam czujnik bez podłączenia do Arduino? Zasil go z byle czego (choćby z Arduino), ale sygnał czytaj za pomocą miernika (albo diody LED z rezystorem w szeregu).
I tu jest pies pogrzebany... Arduino od początku działa poprawnie, tylko czujnik robi sobie przerwę. Zapiąłem się z diodą 3V bezpośrednio do czujnika i jej zapalanie pokrywa się z tym co widzi Arduino. 

Tu rodzi się pytanie, dlaczego 3 czujniki zachowują się tak samo? Ostatni, był świeżo wyjęty z woreczka antystatycznego i zachowywał się dokładnie tak, jak dwa kupione wcześniej. Przypominam, że przy pierwszym kontakcie z tym urządzeniem, zbudowałem skutecznie działające oświetlenie zapalające się zawsze po wykryciu ruchu i nie było mowy o jakiś przerwach kilkusekundowych.
 
Odpowiedź
#18
Mam identyczny problem, po wgraniu przykładowego programu czujnik na zmianę po około 8 sekund pokazuje wykryto, a potem przez kolejne 8 sekund nie wykryto. Czy to jest wina czujnika?
 
Odpowiedź
#19
(19-11-2016, 01:43)wiruq napisał(a): Mam identyczny problem, po wgraniu przykładowego programu czujnik na zmianę po około 8 sekund pokazuje wykryto, a potem przez kolejne 8 sekund nie wykryto. Czy to jest wina czujnika?

Pokazuje Ci tak bez względu na to czy jest ruch czy go nie ma? spróbuj go doregulować potencjometrami (chyba środkowy odpowiada za czułość). Też mi się tak robiło, po skręceniu czułości na lekko ponad minimum, osiągnąłem to co teraz, czyli widzi ruch normalnie, tylko robi sobie przerwę po zakończeniu detekcji.

Odnośnie tego, ma ktoś jakiś pomysł, skąd takie zachowanie w 3 różnych czujkach?

EDIT//
Na tą chwilę problem ominąłem (niestety brak rozwiązań mnie do tego zmusza). Napisałem prosty sketch, który liczył czas przez jaki sygnał jest HIGH, dostroiłem potencjometrem ten czas tak, aby wyeliminować wygaśnięcie z uwagi na chwilę przerwy. Temat i forum na pewno będę śledzić, więc jeżeli ktoś znajdzie rozwiązanie przerw w pracy czujnika, to chętnie przerzucę sterowanie czasem świecenia na Arduino Smile
 
Odpowiedź
#20
A czy to musi być akurat PIR? Może da się zrealizować układ z barierą świetlną... wtedy fotorezystor będzie jak znalazł.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości