در این پروژه با نحوه کار و راه اندازی سنسور PIR با استفاده از میکروکنترلر AVR آشنا خواهید شد. این سنسور در بهینه سازی انرژی در ساختمانها، دزد گیرها و موارد دیگر کاربرد دارد.
سنسور PIR به هر جسم متحرکی که داری حرارت باشد واکنش نشان می دهد, این جسم متحرک می تواند انسان یا حیوان باشد. حتی شما می توانید برای تست این پروژه یک لیوان آب جوش را در بالای این سنسور حرکت داده و شاهد روشن و خاموش شدن LED به کار رفته در این پروژه باشید.
به جای LED می توانید از یک بازر(Buzzer) استفاده کنید, در صورت استفاده از بازر به جای روشن و خاموش شدن LED در صورت حرکت جسم متحرک, صدای بوق را خواهید شنید.
برخی از کاربردهای سنسور PIR :
- سیستم های امنیتی و ساخت دزدگیر
- روشن نمودن چراغ های منازل ، پارگینگ ، ساختمان و … به صورت هوشمند و بر اساس تشخیص حرکت
- کنترل و اتوماسیون صنعتی
- سیستم های هشدار
- درب های اتوماتیک
- نور پردازی هوشمند
- و …
معمولا بجای استفاده از سنسور PIR از ماژول ان استفاده می شود که این ماژول کار را برای راه اندازی سنسور PIR بسیار راحت می کند. در تصویر بالا ماژول سنسور PIR را مشاهده می کنید, که ما هم در این پروژه از ماژول ان استفاده خواهیم کرد. در ادامه با این ماژول بیشتر اشنا خواهید شد.
در پشت ماژول سنسور PIR یک جامپر قرار دارد، که دارای دو وضعیت L و H می باشد. در وضعیت L با تست سنسور متوجه خواهید شد که اگر دستتان را به طور پیوسته در جلوی سنسور به حرکت در آورید، خروجی به طور پیوسته High (یک منطقی) نخواهد بود و هر یک یا دو ثانیه LOW و High خواهد شد. که به این حالت اصطلاحا “non-retriggering” می گویند.
در وضعیت H با ایجاد حرکت پیوسته در جلوی سنسور، خروجی نیز به طور پیوسته High خواهد ماند. که به این حالت اصطلاحا “retriggering” می گویند.
تنظیم حساسیت، فاصله قابل تشخیص توسط ماژول را تنظیم می کند که عددی حدودا بین 3 الی 7 متر خواهد بود.
تنظیم زمان، زمان High بودن خروجی پس از تشخیص حرکت را بین 5 الی 300 ثانیه تنظیم می کند.
شماتیک پروژه راه اندازی سنسور PIR با میکروکنترلر AVR :
اتصال ماژول PIR به میکروکنترلر بسیار ساده می باشد. با توجه به اینکه خروجی این ماژول به صورت دیجیتال است، لذا تنها کاری که لازم است انجام دهیم این است که همواره چک کنیم پین خروجی ماژول در چه حالتی قرار دارد. در ادامه شماتیک این پروژه را مشاهده می کنید:
عملکرد این پروژه به این صورت می باشد که میکروکنترلر همواره خروجی ماژول را چک کرده و در صورتی که خروجی ماژول یک منطقی یا High شود یک LED متصل به پین 14 را روشن می کند و همچنین روی LCD کاراکتری عبارت “Motion detected” را نمایش می دهد.
در صورتی که سنسور حرکتی را تشخیص نداد خروجی ان صفر یا Low می باشد که در این حالت LED خاموش و روی LCD متن “motionless” نمایش داده می شود.
پتانسیومتر RV1 برای تنظیم کنتراست LCD کاراکتری می باشد, در صورتی که پتانسیومتر نداشتید می تونید پین 3 ال سی دی کاراکتری را به زمین (منفی تغذیه) متصل کنید.
برنامه :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
////////// WWW.EMIC.IR ////////// #include <mega16a.h> #include <alcd.h> #include <delay.h> void main(void) { int PIR ; //int از نوع PIR تعريف متغير با نام// DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0); PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0); DDRC=(1<<DDC7) | (1<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0); PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (1<<DDD0); PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); lcd_init(16); while (1) { PIR=PINA.0; //قرار داده ايم A را برابر پين 0 از پورت PIR متغير// PORTD.0=PIR; //قرار داده ايم PIR را برابر متغير D پين 0 از پورت// lcd_clear(); // پاک کردن ال سي دي کاراکتري // lcd_gotoxy(0,0); //رفتن به سطر و ستون 0 از ال سي دي کاراکتري// if(PIR==1) //(ميشود if ميشود(يا به عبارت ديگر در صورتي که سنسور حرکتي را حس کرد برنامه وارد if برابر 1 منطقي شد وارد شرط PIR در صورتي که متغير// { lcd_putsf("Motion detected"); //روي ال سي دي Motion detected نوشتن عبارت// }else { lcd_putsf("motionless"); } //را روي ال سي دي نمايش مي دهد motionless برابر 1 نبود متن PIR در صورتي که متغير// delay_ms(300); // ايجاد تاخير به مدت 300 ميلي ثانيه // } } |
توضیحات قسمت های مهم برنامه نوشته شده, اگر سوالی داشتید می تونید در قسمت نظرات مطرح کنید.
کلیپ تست عملی پروژه :
پسورد فایل زیپ : www.emic.ir
نظر یادتون نره…
دوتا خطا داد برای من راهنمایی میدید
سلام .من یک عدد از این چشم ها دارم میخواهم یه چراغ بسازم ایا امکانش هست نقشه را قرار بدهید بطور ساده .ک من بتوانم انجام بدم و متوجه بشم .
باتشکر
سلام و وقتتون بخیر. من ترم 3 هستم و میخواستم یک دماسنج لیزری بسازم. امکانش هست که راهنماییم کنین؟
سلام
ممنون از پروژه خوبتون
من اگه بخوام ال سی دی رو حذف کنم و به جای ال ای دی یه لامپ بزارم(دقیقا مثل چراغ های اتومات داخل راهروها) اولا از لحاظ شماتیکی چه کار باید انجام بدهم و اینکه کدوم قسمت کد رو باید حذف کنم؟؟
و اینکه آیا نیازی به میکرو هست یا نه و با رله و خود ماژول حله؟؟
بازم ممنون🙏
سلام, بله می توانید خروجی دیجیتال ماژول را به ماژول رله بدید و چراغ را به رله متصل کنید
سلام
ممنون بابت توضیحات خوبتون
پروژه تو پروتئوس با وجود اینکه تو کتابخونه اش تعریف شده به سنسور PIR گیر میده و اجرا نمیشه
چیکار باید بکنم؟
سلام, در عمل تست کنید یا اینکه می توانید در پروتئوس بجای ماژول یک کلید قطع و وصل معمولی بزارید و پروژه را تست کنید
سلام از خط 10 تا خط 17 که شیفت انجام شده برای lcd هستش؟
اگه بخوایم بدون lcd بزنیم باید کجاهای کد رو حذف کنیم؟
سلام, از خط 10 تا 17 پین های ورودی و خروجی میکرو را مشخص کرده ایم. یعنی می خواهید فقط یک LED روشن و خاموش شود؟ خوب در این حالت نیازی به میکرو نیست LED را با یک مقاومت مستقیم به خروجی سنسور وصل کنید
ممنون
خداخیرتون بده