PIR Motion Sensor Getting Started

PIR Motion Sensor Getting Started

PIR  (Passive infrared )
คือ อุปกรณ์ตรวจจับคลื่นรังสี Infrared จากวัตถุ ผ่านอุปกรณ์รวมแสง มายังตัว Pyro Electric ซึ่งจะเปลี่ยนพลังงานความร้อน จากรังสี Infrared เป็นพลังงานไฟฟ้า แม้จะมีประมาณ Infrared แค่เพียงเล็กน้อย จึงทำให้ PIR สามารถตรวจจับ คลื่นรังสี Infrared และ อุณหภูมิได้

PIR Motion Sensor
คือ อุปกรณ์ Sensor ชนิดหนึ่งที่ใช้ตรวจจับคลื่นรังสี Infrared ที่แพร่จาก มนุษย์ หรือ สัตว์ ที่มีการเคลื่อนไหว ทำให้มีการนำเอา PIR มาประยุคใช้งานกันเป็นอย่างมากใช้เพื่อตรวจจับการเคลื่อนไหวของสิ่งมีชีวิต หรือ ตรวจจับการบุกรุกในงานรักษาความปลอดภัย   

การทำงานของ PIR Sensor

ภายใน PIR จะมีอุปกรณ์ตรวจจับรังสี Infrared อยู่ 2 ชุดด้วยกันดังรูป เมื่อมี คน หรือ สัตว์ ที่มีความอบอุ่นในร่างกายเคลื่อนที่ผ่านเข้ามาใน พื้นที่โซนที่ PIR สามารถตรวจจับคลื่นรังสี Infrared ที่แพร่ออกมาจากสิ่งมีชีวิตได้ PIR จะเปลี่ยนคลื่นรังสี Infrared ให้กลายเป็น กระแสไฟฟ้าดังรูป จะเห็นว่าเมื่อมีสิ่งมีชีวิต เคลื่อนที่ผ่าน อุปกรณ์ตรวจจับรังสี Infrared ตัวที่ 1 จะได้สัญญาณ Output ออกมาสูงกว่าแรงดันปรกติ และ เมื่อสิ่งมีชีวิตเคลื่อนที่ผ่าน อุปกรณ์ตรวจจับรังสี Infrared ตัวที่ 2 จะได้แรงดัน Output  ต่ำกว่าค่าแรงดันปรกติ

Clip ตัวอย่างสัญญาณ Output ของ PIR

แต่สำหรับ PIR Motion Sensor ที่มีขายกันอยู่ทั่วไปในท้องตลาดในลักษณะที่เป็น โมดูลสำเร็จรูป มีวงจรอยู่ภายในทำให้ผู้ใช้สามารถใช้งานได้สะดวกมากขึ้น

ทดลองใช้งาน PIR Motion

โมดูลตัวที่ 1 เป็นโมดูลรุ่น SE-10 (ESEN042)

SE-10 เป็นโมดูล PIR Motion ที่มีวงจรอยู่ภายในทำให้ผู้ใช้สามารถต่อใช้งานได้ง่ายดายขึ้น โดยการต่อใช้งานจะใช้สายสัญญาณเพียงแค่ 3 เส้นเท่านั้นคือ 

1) DC Power สามารถใช้กับไฟเลี้ยงตั้งแต่  5-12 V  – สายเส้นสีแดง
2) GND – สายเส้นสีดำ
3) ALARM เป็น Open Collector จึงต้องต่อ R Pull UP ดังรูปตัวอย่างด้านล่าง – สายเส้นสีเลือง

ทดลองต่อใช้งาน SE-10 กับ Arduino

ตัวอย่าง Code

int alarmPin = 0;
int alarmValue = 0;
void setup () 
{
      Serial.begin (9600);
      delay (2000);  
}
void loop ()
{
      alarmValue = analogRead(alarmPin);
      Serial.println (alarmValue);
      delay (500);
}


ผลที่ได้ 
เมื่อตัว SE-10 ตรวจจับการเคลื่อนไหวได้จะได้ค่าที่อ่านจาก ADC มาแสดงผลผ่านทาง Serial Port อยู่ที่ประมาณ 17-18 (ค่านี้จะเปลี่ยนแปลงตามค่า R ที่ใช้ Pull Up ซึ่งในตัวอย่างนี้จะใช้อยู่ที่ 10K) ในขณะที่ไม่มีความเคลื่อนไหวจะแสดงค่าอยู่ที่ 1023 

โมดูลตัวที่ 2 เป็นโมดูลรุ่น SB-0061 (Coming Soon)

SB-0061 เป็นโมลดูล PIR Motion Sensor ที่มีการเพิ่มเอา Cds เข้ามาภายใน โมดูล สามารถเลือกลักษณะของ Out Put ได้ 2 รูปแบบ และ สามารถปรับค่า Delay ได้

Cds คืออุปกรณ์ Electronic ที่ใช้ตรวจวัดแสง(LDR) ใช้เพื่อวัดแสงและนำค่าแสงเข้ามาช่วยตัดสินใจในการตรวจจับการเคลื่อนไหว
SB-0061 สามารถเลือกลักษณะของ Out Put ได้ 2 ลักษณะโดยการเลือก Jumper ให้ไปอยู่ที่ตัวอักษร H  หรือ L

Output ในโหมด H (Retriggering)

เมื่อ PIR สามารถตรวจจับการเคลื่อนไหวได้จะส่งสัญญาณ Output ออกมาโดยจะส่ง Output ออกมาค้างสถานะเอาไว้จนกว่าจะไม่มีการเคลื่อนไหวจึงจะเปลี่ยนสถานะกลับไปยัง สถานะปรกติ และจะเข้าสู่ช่วง Ti ซึ่งในช่วงนี้ตัว PIR จะไม่ตอบสนองการเคลื่อนไหวใดๆ

Output ในโหมด L (Non – Retriggering)

ในโหมด L (Non – Retriggering) เมื่อตรวจจับการเคลื่อนไหวได้ PIR จะส่ง Output ออกมาและจะส่งออกมาค้างเอาไว้ในช่วงเวลาหนึ่ง (Tx) และจะเปลี่ยนสถานะกลับตามเดิม ถึงแม้ว่าในขณะนั้นจะยังคงมีการเคลื่อนไหวอยู่หรือไม่ และจะเข้าสู่สถานะ Ti คือจะไม่รับรู้การเคลื่อนไหวไปชั่วขณะหนึ่ง

ตัวอย่างการต่อใช้งาน SB-0061 กับ Arduino

ตัวอย่าง Code

const int buttonPin = 3;    
const int ledPin =  13;      
int buttonState = 0;         
void setup() 
{ 
pinMode(ledPin, OUTPUT);      
  pinMode(buttonPin, INPUT);    
  Serial.begin(9600); 
}

void loop()
{ 
  buttonState = digitalRead(buttonPin);
if(buttonState == HIGH)
      {
             Serial.print("\r\nALARM");
      }
  digitalWrite(ledPin,buttonState); 
  delay (500);
}


ผลที่ได้
เมื่อ SB-0061 สามารถตรวจจับการเคลื่อนไหวได้จะทำให้ LED ที่ต่อกับ Pin 13 สว่างขึ้น และ จะมีการส่งข้อความคำว่า Alarm ผ่านทาง Serial Port  


โมดูลตัวที่ 3 เป็นโมดูลรุ่น SPD-81 (ESEN138)

SPD-81 เป็น  PIR Motion Sensor ที่มีการเพิ่มเอา Cds เข้ามาภายใน โมดูล และสามารถปรับแต่งค่า Output ของ Cds  ก่อนที่จะนำไปเข้าตัว Control ภายใน Module ได้

ตัวอย่างการต่อใช้งาน  SPD-81 กับ Arduino

ตัวอย่าง Code

const int buttonPin = 2;    
const int ledPin =  13;      
int buttonState = 0;         
void setup() 
{ 
pinMode(ledPin, OUTPUT);      
  pinMode(buttonPin, INPUT);    
  Serial.begin(9600); 
}
void loop()
{     
  buttonState = digitalRead(buttonPin);
if(buttonState == HIGH)
      {
        Serial.print("\r\nALARM");
      }
      digitalWrite(ledPin,buttonState); 
      delay (500);
}

ผลที่ได้
เมื่อ SPD-81 สามารถตรวจจับการเคลื่อนไหวได้จะทำให้ LED ที่ต่อกับ Pin 13 สว่างขึ้น และ จะมีการส่งข้อความคำว่า Alarm ผ่านทาง Serial Port 

คำแนะนำในการใช้ PIR Motion Sensor

A ไม่ควรใช้ในที่ที่มาการเปลี่ยนแปลงสภาพแวดล้อมอย่างรวดเร็ว
B ไม่ควรใช้ในที่ที่มีการสั่นสะเทือน อย่างรุนแรง
C ไม่ควรติดตั้งในสถานที่ซึ่งมีวัตถุที่กีดขวาง (เช่น แก้ว เป็นต้น) ซึ่งรังสีอินฟราเรดไม่สามารถทะลุผ่านได้แม้จะอยู่ใน บริเวณที่สามารถตรวจจับได้
D ไม่ควรติดตั้งไว้ในที่ที่สัมผัสแสงอาทิตย์โดยตรง
E ไม่ควรติดตั้งใกล้กับเครื่องทำความร้อน หรือ เครื่องทำความเย็น


REF : http://www.ladyada.net/learn/sensors/pir.html