سنسور حرکتی PIR HC-SR501
اصول کار سنسور مادونقرمز غیرفعال PIR را میآموزید، جامپر و پتانسیومترهای HC-SR501 را تنظیم میکنید و با تشخیص حرکت، LED و پیام هشدار را فعال میکنید.
آنچه در این درس میآموزید
- اثر حرارتی-برقی و نقش لنز فرنل را در تشخیص حرکت توضیح دهید
- دو پتانسیومتر حساسیت و تأخیر و جامپر حالت را روی برد تنظیم کنید
- حرکت را با ورودی دیجیتال بخوانید و یک سیستم هشدار ساده بسازید
فهرست مطالب
لامپ راهرو که با ورود شما روشن میشود و زنگ خانهای که با حرکت آژیر میکشد، هر دو به یک فناوری تکیه دارند: سنسور PIR یا مادونقرمز غیرفعال (Passive Infrared). برخلاف التراسونیک درس قبل که چیزی «میفرستد»، PIR هیچ چیزی منتشر نمیکند؛ فقط تابش حرارتی محیط را گوش میدهد و تغییرش را به سیگنال دیجیتال ساده تبدیل میکند. به همین دلیل مصرفش بسیار کم است و خروجیاش همان HIGH و LOW آشنایی است که در درس دکمه دیدهاید — با این تفاوت که این «دکمه» را خودتان فشار نمیدهید.
اصول کار: دیدهشدن حرارت در حال تغییر
هر جسمی بالای صفر مطلق، تابش مادونقرمز میفرستد و بدن انسان با دمای حدود ۳۷ درجه منبع تابش چشمگیری است. هستهٔ سنسور، عنصری «پروالکتریک» (Pyroelectric) است که هنگام تغییرِ تابش دریافتی، سیگنال الکتریکی کوچکی تولید میکند — دقت کنید: تغییر، نه خودِ مقدار. سنسور ثابت که رو به دیوار سرد است هیچ چیزی گزارش نمیکند؛ بهمحض ورود انسان به میدان، تابش ناگهان زیاد میشود و سیگنال زاده میشود.
نقش مهندسیشدهٔ روی سنسور را «لنز فرنل» (Fresnel Lens) بازی میکند: آن گنبد شیریرنگ با خطوط تقسیمبندی، تابش هر بخش از اتاق را روی عنصر میتاباند و میدان دید را به دهها بخش تقسیم میکند. حرکتکردن انسان یعنی گذر از این بخشها و بهوجودآمدن موجهای تغییر که سنسور میفهمد. خروجی ماژول پس از تقویت، یک پین دیجیتال ساده است: HIGH هنگام تشخیص حرکت و LOW در سکوت.
جامپر حالت و دو پتانسیومتر
برد HC-SR501 سه ابزار تنظیم دارد و شناختشان از کد مهمتر است:
| ابزار | تنظیم | اثر |
|---|---|---|
| جامپر H | حالت تکرار (Retrigger) | تا وقتی حرکت ادامه دارد، خروجی HIGH میماند؛ مناسب اکثر پروژهها |
| جامپر L | حالت تکبار (Single) | یک بار HIGH میشود، سپس پس از پایان تأخیر خاموش میشود |
| پتانسیومتر حساسیت | چرخش | شعاع تشخیص را از حدود ۳ تا ۷ متر تغییر میدهد |
| پتانسیومتر تأخیر (Tx) | چرخش | مدت HIGH ماندن خروجی را از حدود ۳ ثانیه تا ۵ دقیقه تنظیم میکند |
زمان گرمشدن
PIR پس از وصلکردن تغذیه، به یک دقیقه پایداری نیاز دارد: مدار داخلی آن با جریان راهاندازی و دمای خودش هماهنگ میشود و در این مدت خروجیها غیرقابلاتکا هستند.
سیمکشی
| آردوینو Uno | ماژول HC-SR501 |
|---|---|
| 5V | VCC |
| GND | GND |
| D2 | OUT |
خروجی ماژول در سطح 3.3 ولت است که Uno بهراحتی بهعنوان HIGH میخواند؛ نیازی به مقسوم ولتاژ نیست. پین ۲ بهطور عمد انتخاب شده تا در تمرینهای پیشرفتهتر بتوانید به وقفه هم وصلش کنید.
اسکچ کامل: هشدار حرکت
const int pirPin = 2;
const int ledPin = 12;
void setup() {
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
Serial.println("PIR warming up for 60 seconds");
delay(60000); // Let the sensor stabilize
Serial.println("Ready");
}
void loop() {
int motion = digitalRead(pirPin);
if (motion == HIGH) {
digitalWrite(ledPin, HIGH);
Serial.println("Motion detected");
} else {
digitalWrite(ledPin, LOW);
Serial.println("No motion");
}
delay(1000);
}توضیح نکتههای تازه:
pinMode(pirPin, INPUT);— خروجی ماژول دیجیتال است؛ هیچ آنالوگخوانی یا کتابخانه لازم نیست.delay(60000);درsetup()— گرمشدن را صریح داخل برنامه میگزرانیم تا نخستین خوانشها معتبر باشند.- خوانش هر یک ثانیه و چاپ وضعیت، رفتار ماژول را شفاف نشان میدهد؛ در حالت جامپر H، تا زمانی که حرکت ادامه دارد یا پتانسیومتر تأخیر هنوز تمام نشده، HIGH میماند.
در حالت جامپر H با حرکت انسان جلوی سنسور، خروجی سریال مانیتور چنین الگویی دارد:
PIR warming up for 60 seconds Ready No motion Motion detected Motion detected No motion
جایگذاری و محدودیتها
PIR فقط میگوید «حرکتی هست»؛ نه جهت، نه فاصله، نه شمارش افراد. و چون بر پایهٔ حرارت است، هر منبع گرمای جنبنده برایش مشتبه میشود:
- سنسور را رو به منبع گرما (رادیاتور، پنجرهٔ آفتابگیر، فن) نگذارید؛ تغییر ناگهانی تابش، تشخیص کاذب میسازد.
- پشت لنز را نپوشانید و لنز را از گردوغبار و چربی تمیز نگه دارید؛ مسیر تابش است که میدان دید میسازد.
- ارتفاع نصب حدود ۲ متر و رو به مسیر عبور (نه دیوار مقابل) بهترین نتیجه را میدهد.
اشتباهات رایج و عیبیابی
| نشانه | علت رایج | راهحل |
|---|---|---|
| پیاپی Motion detected بدون کسی | دورهٔ گرمشدن، جریان هوا یا منبع گرما | یک دقیقه صبر کنید؛ سنسور را دور از فن و شوفاژ و نور مستقیم بگذارید |
| هرگز Motion detected نمیشود | پتانسیومتر حساسیت در حداقل است یا لنز پوشیده شده | حساسیت را بهآرامی بالا ببرید و جلوی لنز را باز کنید |
| خروجی فقط چند لحظه HIGH است | جامپر روی حالت L و پتانسیومتر تأخیر در کمینه | جامپر را روی H بگذارید یا تأخیر را بیشتر کنید |
| خروجی همیشه HIGH میماند | تأخیر پتانسیومتر در بیشینه است یا حرکت پیوسته در میدان | تأخیر را کم کنید و آزمایش را دور از منابع حرارت تکرار کنید |
| خوانش ناپایدار روی سریال | زمین مشترک نشده یا سیم OUT شل است | GND مشترک را چک کنید و اتصال بردبورد را سفت کنید |
تمرینها
تمرین
تمرین ۱ — شمارندهٔ رویداد حرکت
اسکچ pir-motion را طوری تغییر دهید که فقط هنگام «شروع» حرکت — یعنی گذر خوانش از LOW به HIGH — یک شمارنده را یکی افزایش دهد و پیام با شمارهٔ رویداد چاپ شود؛ در بقیهٔ لحظهها چیزی چاپ نشود.
نمایش راهحل
وضعیت قبلی را در یک متغیر نگه میدارید و فقط گذر LOW به HIGH را میشمارید:
const int pirPin = 2;
const int ledPin = 12;
int lastMotion = LOW;
int eventCount = 0;
void setup() {
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
Serial.println("PIR warming up for 60 seconds");
delay(60000);
Serial.println("Ready");
}
void loop() {
int motion = digitalRead(pirPin);
if (motion == HIGH) {
digitalWrite(ledPin, HIGH);
if (lastMotion == LOW) {
eventCount++;
Serial.print("Motion event: ");
Serial.println(eventCount);
}
} else {
digitalWrite(ledPin, LOW);
}
lastMotion = motion;
delay(200);
}با دو بار عبور جلوی سنسور، خروجی سریال مانیتور چنین است:
Ready Motion event: 1 Motion event: 2
::: :::
خلاصه
- PIR سنسور «غیرفعال» است: تابش مادونقرمز محیط را گوش میدهد و فقط تغییر آن را گزارش میکند؛ لنز فرنل میدان دید را به بخشهای متعدد تقسیم میکند.
- جامپر H تکرار و L تکبار است؛ پتانسیومترها حساسیت (شعاع) و مدت خروجی HIGH را تنظیم میکنند و مقادیر دقیق بین نسخهها فرق دارد.
- پس از وصل تغذیه ۳۰ تا ۶۰ ثانیه گرمشدن لازم است و پیش از آن خوانشها قابلاتکا نیستند.
- خروجی ماژول دیجیتال ساده (3.3 ولت) است و با
digitalReadخوانده میشود؛ PIR جهت و فاصله نمیدهد. - منابع گرما و جریان هوا تشخیص کاذب میسازند؛ جایگذاری دور از رادیاتور و نور مستقیم ضروری است.
حالا تشخیص «اتفاق» را دارید و اندازهگیری «فاصله» را از درس قبل؛ در ادامه این دو حسگر را در پروژههای ترکیبی کنار هم میگذارید.