سنسور مادون قرمز پسیو و راه اندازی آن از طریق آردوینو
تمامی اجسام انرژی حرارتی را به شکل تابش مادون قرمز با دمایی بالای صفر مطلق ساطع میکنند. سنسور مادون قرمز پسیو HR-SC501 (PIR) تابش مادون قرمز را به یک ولتاژ خروجی تبدیل میکند. از آنجاییکه حرکت با تغییر در تابش مادون قرمز نه سطح تابش مادون قرمز نشان داده میشود، سنسور PIR دارای دو نیمه برای تشخیص تغییر در تابش مادون قرمز ناشی از حرکت یک شی در مقابل سنسور میباشد.
لنزهای فرنل بالای سنسور مادون قرمز پسیو PIR میدان دید سنسور PIR را در حدود 110 درجه با محدوده 6 متر افزایش میدهند. سنسورهای PIR در هشداردهندههای تشخیص حرکت بکاربرده میشوند. این سنسورها پس از روشن شدن حداکثر به 60 ثانیه برای ثبیت نیاز دارند و خروجی حداقل 2.5 ثانیه پس از تشخیص حرکت HIGH باقی میماند. تاخیر زمانی (Tx) و حساسیت سنسور (Sx) با چرخش ساعتگرد پتانسیومتر مربوطه قرارگرفته بر روی ضلع ماژول افزایش مییابند.حرکتهای کوچکتر با حساسیت بالا در فاصله بین 3 و 7 متر تشخیص داده میشوند. تاخیر زمانی از 2.5 ثانیه تا 5 دقیقه است، بنابراین در ابتدا مکان خلاف جهت عقربه ساعت مفید است.
در مجموعه دستورات و کدها در محیط IDE آردوینو تابع () void loop دو نیمه دارد، در نیمه اول وقوع یک رویداد جدید تشخیص داده میشود، و نیمه دوم تعیین میکند این رویداد به پایان رسیده است.
و اتصال به | متصل به | قطعه |
| 5V آردوینو | VCC سنسور PIR |
| پایه ۱۱ آردوینو | پایه OUT سنسور PIR |
| GND آردوینو | پایه GND سنسور PIR |
| پایه ۸ آردوینو | پایه بلند LED |
GND آردوینو | مقاومت ۲۲۰ اهم | پایه کوتاه LED |
جدول 1. اتصالات سنسور PIR به آردوینو
در زیر دستورات راه اندازی این سنسور مادون قرمز پسیو توسط آردوینو بیان شده اند:
int PIRpin = 11; // PIR sensor pin
int LEDpin = 8; // LED pin
int PIRstate = LOW; // set PIR state to LOW
int reading;
unsigned long detectTime; // time lag on PIR sensor
float moveTime;
void setup()
{
Serial.begin(9600); // set Serial Monitor baud rate
pinMode(LEDpin, OUTPUT); // LED pin as output
}
void loop()
{
reading = digitalRead(PIRpin); // read PIR pin
if (reading == HIGH && PIRstate == LOW) // PIR detected new
{ // movement
Serial.print("New movement detected"); // print to Serial Monitor
detectTime = millis(); // time of movement
PIRstate = HIGH; // update PIR state to HIGH
digitalWrite(LEDpin, PIRstate); // turn LED on
} // movement no longer detected
else if (reading == LOW && PIRstate == HIGH)
{
moveTime = millis() - detectTime; // duration of movement
moveTime = moveTime/1000.0;
Serial.print(" and lasted for "); // print to Serial Monitor
Serial.print(moveTime,1); // print detect time (s) with 1DP
Serial.println(" seconds"); // print text with a new line
PIRstate = LOW; // update PIR state to LOW
digitalWrite(LEDpin, PIRstate); // turn LED off
}
}
تیم ردرونیک (redronic) مجموعه ای از آموزش ها و پروژه های مرتبط با آردوینو را برای شما علاقمندان به الکترونیک و برنامه نویسی فراهم کرده است. جهت مشاهده این پروژه ها اینجا کلیک کنید.