Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
infrakrasnyj_datchik_dvizhenija_hcsr501 [2015/06/24 20:00]
ansealk [Инфракрасный датчик движения HCSR501]
infrakrasnyj_datchik_dvizhenija_hcsr501 [2015/06/24 20:01] (текущий)
ansealk [Код]
Строка 1: Строка 1:
 +====== Инфракрасный датчик движения HCSR501 ======
 +
 +Пассивный инфракрасный датчик (PIR) движения построен на базе микросхемы BISS0001. PIR-сенсоры основаны на методике измерения инфракрасного излучения от обьектов.
 +
 +===== Технические характеристики =====
 +
 +  ***Напряжение питания:​** 3.6 ~ 20V
 +  ***Сила тока:** <50uA
 +  ***Напряжение на выходе:​** High 3.3 V / Low 0V
 +  ***Количество сканирований:​** 0.5-200 раз в сек.
 +  ***Время блокировки после срабатывания:​** 2.5 сек.
 +  ***Размеры:​** 32x24 мм
 +  ***Угол сканирования:​**100 градусов +5-10%
 +  ***Рабочая температура:​** -15 - +70 degrees
 +  ***Диаметр индукционной линзы:​** 23 мм.
 +
 +===== Схема тестового стенда =====
 +{{:​arduino_and_raspberrypi:​hcsr501:​hcsr501_bb.png?​600|}}
 +
 +===== Код =====
 +После 30 секунд калибровки датчик переключается в режим наблюдения. При попадании движущегося объекта в область слежения зажигается светодиод и в отладочную консоль выдается сообщение о начале слежения с указанием количества секунд,​ прошедших с момента запуска. При изчезновении движущегося объекта - диод гаснет,​ а в консоль выдается информация о окончании движения с указанием времени.
 +<code cpp hcsr501.cpp>​
 +//​Время калибровки датчика (10-60 сек. по даташиту)
 +int calibrationTime = 30;        ​
 + 
 +//the time when the sensor outputs a low impulse
 +long unsigned int lowIn; ​        
 + 
 +//the amount of milliseconds the sensor has to be low 
 +//before we assume all motion has stopped
 +long unsigned int pause = 5000;  ​
 + 
 +boolean lockLow = true;
 +boolean takeLowTime;  ​
 + 
 +int pirPin = 7;    //​вывод подключения PIR сенсора
 +int ledPin = 6;
 + 
 + 
 +/////////////////////////////​
 +//SETUP
 +void setup(){
 +  Serial.begin(9600);​
 +  pinMode(pirPin,​ INPUT);
 +  pinMode(ledPin,​ OUTPUT);
 +  digitalWrite(pirPin,​ LOW);
 + 
 +  //​дадим датчику время на калибровку
 +  Serial.print("​calibrating sensor ");
 +    for(int i = 0; i < calibrationTime;​ i++){
 +      Serial.print("​."​);​
 +      delay(1000);​
 +      }
 +    Serial.println("​ done"​);​
 +    Serial.println("​SENSOR ACTIVE"​);​
 +    delay(50);
 +  }
 + 
 +////////////////////////////​
 +//LOOP
 +void loop(){
 + 
 +     ​if(digitalRead(pirPin) == HIGH){
 +       ​digitalWrite(ledPin,​ HIGH); ​  //the led visualizes the sensors output pin state
 +       ​if(lockLow){  ​
 +         //​makes sure we wait for a transition to LOW before any further output is made:
 +         ​lockLow = false; ​           ​
 +         ​Serial.println("​---"​);​
 +         ​Serial.print("​motion detected at ");
 +         ​Serial.print(millis()/​1000);​
 +         ​Serial.println("​ sec"​); ​
 +         ​delay(50);​
 +         ​} ​        
 +         ​takeLowTime = true;
 +       }
 + 
 +     ​if(digitalRead(pirPin) == LOW){       
 +       ​digitalWrite(ledPin,​ LOW);  //the led visualizes the sensors output pin state
 + 
 +       ​if(takeLowTime){
 +        lowIn = millis(); ​         //save the time of the transition from high to LOW
 +        takeLowTime = false; ​      //​make sure this is only done at the start of a LOW phase
 +        }
 +       //if the sensor is low for more than the given pause, ​
 +       //we assume that no more motion is going to happen
 +       ​if(!lockLow && millis() - lowIn > pause){  ​
 +           //​makes sure this block of code is only executed again after 
 +           //a new motion sequence has been detected
 +           ​lockLow = true;                        ​
 +           ​Serial.print("​motion ended at "​); ​     //output
 +           ​Serial.print((millis() - pause)/​1000);​
 +           ​Serial.println("​ sec");
 +           ​delay(50);​
 +           }
 +       }
 +  }
 +</​code>​
  
infrakrasnyj_datchik_dvizhenija_hcsr501.txt · Последние изменения: 2015/06/24 20:01 — ansealk
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика