در این متن نحوه برقراری ارتباط بین سنسور آلتراسونیک و یک سیستم روشنایی نشان داده می شود. در این پروژه، هدف طراحی سیستمی است که از سنسور آلتراسونیک استفاده می کند تا یک سیستم روشنایی و همچنین یک نمایشگر LCD را به عنوان یک صفحه نمایش اطلاعات به کار بیاندازد. برای نمایش سیستم در زمان فعالیت ، از یک سیستم سنسور پارکینگ که به شکل غیر تماسی عمل می کند و با بهره گیری از کیت توسعه دهنده میکروکنترلر ۸۰۵۱ و نرم افزار Simplicity Studio IDE ساخته شده، استفاده می گردد. فاصله ای که اندازه گیری می شود بر روی نمایشگر LCD نشان داده می شود و دو نورافکن LED به عنوان تابعی از فاصله بین وسیله نقلیه و سنسور روشن می شوند. با ساختنی همراه باشید.
نیازهای سیستم و کاربردها
سیستمی که در این متن آموزش داده می شود دارای نیازمندیها و ویژگی های زیر است:
- سنسور تشخیص مجاورت: در این پروژه از سنسور تشخیص فاصله آلتراسونیک به عنوان سنسور تشخیص مجاورت استفاده می شود. هنگامی که یک جسم تشخیص داده شود، سنسور باید بتواند به طور مداوم، در زمان واقعی و با کمترین میزان فاصله زمانی، فاصله را با شیء متحرک اندازه گیری کند.
- سایز کوچک: سیستم نباید فضای زیادی را در گاراژ یا هرجای دیگری که استفاده می شود اشغال کند و همچنین باید در یک محفظه با اندازه معقول قرار گیرد.
- زنگ یا سوت و یا چراغ ها: سیستم باید دارای یک آلارم برای جلب توجه داشته باشد تا بتواند زمانی که یک جسم به مکان مشخص شده رسید، آن را اعلام کند.
- بدون ولتاژ AC: این سیستم نباید با ولتاژ AC کار کند ( به دلایل امنیت و وجود تحرکات). برای راه اندازی این سیستم می توان از یک مبدل ولتاژ AC به DC و یا یک باطری ۱۲ ولتی به صورت خارجی استفاده کرد.
بر اساس پارامترهایی که در بالا بیان شد، می توان این سیستم را در تعدادی از موارد زیر ترکیب کرده و استفاده کرد :
- استفاده در استخر یا باغچه های خانگی برای هشدار دادن در زمانی که کودکان یا برخی حیوانات به دلیل کنجکاوی وارد آنجا می شوند.
- برای جلوگیری از سرقت هر وسیله با ارزش و یا حتی دور کردن افراد یا حیوانات از یخچال! به صورتی که می توانند در اتاق آزادانه حرکت کنند اما در صورتی که به محل تعیین شده بیش از حد نزدیک شوند آلارم شروع به کار می کند.
- برای افرادی که به گردش و چادر زدن در فضای باز علاقه دارند می توان از یک سیستم بهبود یافته به همراه باطری استفاده کرد تا در صورت خارج شدن کودکان از فاصله تعیین شده در حالیکه بزرگترها مشغول کارهای دیگر هستند سیستم هشدار دهد.
لوازم مورد نیاز :
- برد توسعه C2400DK
- برد بورد یا وسیله مشابه آن
- سیم های جامپر یا وسیله مشابه آن
- سنسور آلتراسونیک
- ماسفت نوع N-channel
- نورافکن LED 10 وات با ولتاژ ۱۲ ولت AC یا DC
- خازن ۱۰ میکروفاراد
- خازن نوع تانتالیوم ۱۰ میکروفاراد
نمایشگر LCD
نمایشگری که در این پروژه استفاده شده به شکل برد توسعه CP2400DK و از محصولات شرکت Silicon Labs می باشد.
اطلاعات بیشتر و درایور مربوط به این LCD را می توان با جستجو در اینترنت پیدا کرد.
سنسور تشخیص فاصله غیر تماسی
ماژول PING یک سنسور غیر تماسی التراسونیک ( با فرکانس ۴۰ کیلوهرتز) است که برای اندازه گیری فاصله توسط شرکت Parallax ساخته شده است.
استفاده از ماژول التراسونیک PING بسیار آسان است و تنها لازم است تا سه اتصال آن برقرار شود:
- تغذیه ۵ ولت DC
- زمین یا GND
- یک سیگنال دیجیتال بازگشتی که به نام SIG علامتگذاری شده است
بر اساس میزان فاصله قابل اندازه گیری که برای این سنسورها از حدود ۲ سانتی متر تا ۳ متر مشخص شده است، این دستگاه درابتدا امواج آلتراسونیک را ارسال می کند و سپس یک پالس خروجی (از طریق پین سیگنال به نام SIG) را دریافت می کند که فاصله بین آنها متناظر با زمان انتشار امواج آلتراسونیک و بازگشت آن به سمت سنسور است. به این ترتیب می توان فاصله را با استفاده از محاسبه زمان دریافت پالس بازگشتی محاسبه کرد. تصویر زیر نحوه کار انتشار امواج و اندازه گیری را در این سنسور نشان می دهد.
از انجایی که این دستگاه از امواج صوتی برای تعیین فاصله با یک جسم استفاده می کند، باید اطمینان حاصل شود که دمای هوا در زمان محاسبه فاصله در نظر گرفته می شود. همانطور که در معادله زیر نشان داده شده است، دمای هوا می تواند مستقیما بر نتیجه اندازه گیری ها اثر بگذارد.
نورافکن های LED
در این پروژه به دلایل زیر نورافکن های ۱۲ ولتی از نوع LED انتخاب شده اند:
- به دلیل داشتن طراحی مناسب و بخش های اضافی، نصب آنها بسیار ساده است.
- جریان زیادی مصرف نمی کنند (هرکدام از آنها تنها ۸۳۰ میلی آمپر مصرف دارد)
- دارای درجه حفاظتی IP68 هستند که آنها را تبدیل به یک انتخاب ایده آل برای این پروژه می کند.
رگولاتور ولتاژ
از آنجایی که نورافکن های LED برای کارکردن به ولتاژ ۱۲ ولت AC یا DC نیاز دارند، و نیز به این علت که سنسور PING به ولتاژ ۵ ولت DC نیاز دارد، در این پروژه از یک منبع تغذیه ۱۲ ولت DC استفاده شده و سپس از یک رگولاتور ولتاژ خطی (LM108IT-5.0) استفاده شده تا بتوان ولتاژ مورد نیاز سنسور PING را تولید کرد. علاوه بر این، ولتاژ مورد نیاز برای راه اندازی برد توسعه میکروکنترلر نیز ۵ ولت است. اگرچه رگولاتورهای سری LM1084 دارای ولتاژ متغیر و قابل تنظیم هستند، در اینجا از نوع رگولاتور ۵ ولت ثابت استفاده شده که اجرای ساده ای دارد و برای راه اندازی آن تنها به دو جزء اضافی نیاز است:
- یک خازن با ظرفیت ۱۰ میکروفاراد برای ولتاژ ورودی
- یک خازن با ظرفیت ۱۰ میکروفاراد (همانطور که در دیتاشیت توصیه شده بهتر است از نوع تانتالیم باشد) برای ولتاژ خروجی
ماسفت از نوع N-channel
در این پروژه از ماسفت FQP19N20C که از نوع N-channel است و استفاده از آن ساده است بهره گیری شده تا به عنوان یک سوییچ برای روشن و خاموش کردن نورافکن های LED استفاده شود. از آنجایی که در دیتاشیت ماسفت قابلیت عبور جریان تا ۱۹ آمپر مشخص شده ( برای راه اندازی دو نورافکن بیشتر از ۲ آمپر جریان نیاز است) واضح است که این ماسفت برای این پروژه قابل استفاده بوده و حتی بیش از حد مورد نیاز است اما به دلیل در دسترس بودن در این پروژه استفاده شده است.
برقراری ارتباطات و ساخت شماتیک
برای برقراری ارتباط در درایور مربوط به نمایشگر LCD از پروتکل SPI استفاده شده است. تصویر زیر پیکربندی مربوط به سخت افزار را برای ماژول SPI نشان می دهد.
به منظور برقراری ارتباط با سنسور PING پورت P1.4 انتخاب شده است (هر دو سنسور التراسونیک شروع به کار می کنند و به پین PING پالس فرستاده می شود و سپس سیگنال بازگشتی نشان داده می شود). پورت P2.1 نیز برای کنترل کردن نورافکن های LED استفاده شده است.
پیکربندی برد توسعه میکروکنترلر
قبل از وصل کردن تغذیه مربوط به برد توسعه میکرو کنترلر و پس از وصل کردن تمامی اتصالات، باید اطمینان حاصل شود که پیکربندی ها و اتصلات زیر برقرار شده باشند:
جامپرها:
- J11 : اتصال VBAT به WALL_PWR
- J12 : اتصال VDD به VIO
- J17 : اتصال VBAT_PIN به VBAT
سوییچ ها :
- SW4 : تنظیم در حالت “۲ CELL”
- کلید مربوط به تغذیه (SW5) در وضعیت “OFF” قرار داشته باشد.
سیم کشی ها:
- اتصال کابل نواری مربوط به دیباگ به J9
- اتصال کابل USB دیباگ به کامپیوتر
- متصل کردن ولتاژ ۵ ولت DC به کانکتور P2
مثال: سیستم سنسور درب پارکینگ آلتراسونیک
برنامه ای که برای کنترل کردن نورافکن های LED نوشته شده است از موارد زیر استفاده می کند:
- اگر اندازه وسیله نقلیه از مقابل سنسور برابر یا بزرگتر از ۹۷ اینچ یا ۲٫۵ متر باشد چراغها خاموش هستند.
- اگر اندازه وسیله نقلیه از برابر سنسور کمتر از ۲٫۵ متر و یا بیشتر از ۳۰ اینچ یا حدود ۶۵۰ سانتی متر باشد چراغها در حالت چشمک زن قرار می گیرند.
- اگر اندازه وسیله نقلیه از مقابل سنسور برابر یا کمتر از ۳۰ اینچ باشد چراغها در حالت روشن قرار می گیرند.
نکته : به مقدار ۱ اینچ به عنوان هیسترزیس یا پسماند در بین مقدار ۹۶ تا ۹۷ اینچ و ۳۰ تا ۳۱ اینچ قرار دارد.
//-----------------------------------------------------------------------------
// Display Value Routine
// ----------------------------------------------------------------------------
if(DisplayResults == 1)
{
// Serial port.
// Note: the format "%3.3f" --> "3" = width of 3 positions; ".3" = 3 digits after decimal point;
printf("\nDistance: %3.3f inches ", (float) MeasuredDistanceInches);
// Set cursor to home position on screen.
printf("\033[0;0H");
MeasuredDistanceInches = MeasuredDistanceInches*10.0;
// Note: the format "d" --> "0" = Left-pads the number with zeroes (0) instead of spaces.
// "۴" = width of 4 positions; "d" = Signed decimal integer.
sprintf(display_string, "d in ", (unsigned int) MeasuredDistanceInches);
LCD_OutString(display_string); // Send data to LCD.
DisplayResults = 0; // Reset flag.
// If the measured distance is less than 30 inches, then turn ON the lights.
if(MeasuredDistanceInches <= 300)
{
LightsOn = 1;
LightOnFlag = 1; // Set flag signifying that the lights are ON.
LightOffFlag = 0; // Set flag signifying that the lights are not OFF.
LightBlinkFlag = 0; // Set flag signifying that the lights are not blinking.
}
// If the measured distance is less than or equal to 96 and greater than or equal to 31 inches,
// then blink the lights.
else if((MeasuredDistanceInches <= 960) && (MeasuredDistanceInches >= 310))
{
if((LightsOn == 1) && (LightBlinkCounter == 0))
{
LightsOn = 0;
LightBlinkCounter = 1;
LightOnFlag = 0; // Set flag signifying that the lights are not ON.
LightOffFlag = 0; // Set flag signifying that the lights are not OFF.
LightBlinkFlag = 1; // Set flag signifying that the lights are blinking.
}
else if((LightsOn == 1) && (LightBlinkCounter > 0))
{
LightBlinkCounter--;
}
else if((LightsOn == 0) && (LightBlinkCounter == 0))
{
LightsOn = 1;
LightBlinkCounter = 1;
}
else if((LightsOn == 0) && (LightBlinkCounter > 0))
{
LightBlinkCounter--;
}
}
// If the measured distance is less than 97 inches and greater than 96 inches,
// and the lights are currently off, then leave the lights off.
else if((MeasuredDistanceInches < 970) && (MeasuredDistanceInches > 960) && (LightOffFlag == 1))
{
LightsOn = 0;
LightOnFlag = 0; // Set flag signifying that the lights are not ON.
LightOffFlag = 1; // Set flag signifying that the lights are OFF.
LightBlinkFlag = 0; // Set flag signifying that the lights are not blinking.
}
// If the measured distance is less than 97 inches and greater than 96 inches,
// and the lights are currently blinking, then leave the lights blinking.
else if((MeasuredDistanceInches < 970) && (MeasuredDistanceInches > 960) && (LightBlinkFlag == 1))
{
LightOnFlag = 0; // Set flag signifying that the lights are not ON.
LightOffFlag = 0; // Set flag signifying that the lights are not OFF.
LightBlinkFlag = 1; // Set flag signifying that the lights are blinking.
if((LightsOn == 1) && (LightBlinkCounter == 0))
{
LightsOn = 0;
LightBlinkCounter = 1;
LightOnFlag = 0; // Set flag signifying that the lights are not ON.
LightOffFlag = 0; // Set flag signifying that the lights are not OFF.
LightBlinkFlag = 1; // Set flag signifying that the lights are blinking.
}
else if((LightsOn == 1) && (LightBlinkCounter > 0))
{
LightBlinkCounter--;
}
else if((LightsOn == 0) && (LightBlinkCounter == 0))
{
LightsOn = 1;
LightBlinkCounter = 1;
}
else if((LightsOn == 0) && (LightBlinkCounter > 0))
{
LightBlinkCounter--;
}
}
// If the measured distance is less than 31 inches and greater than 30 inches,
// and the lights are either currently on or off (off would occur at startup), then leave/turn
// the lights on.
else if((MeasuredDistanceInches < 310) && (MeasuredDistanceInches > 300) && ((LightOnFlag == 1) ||
(LightOffFlag == 1)))
{
LightsOn = 1;
LightOnFlag = 1; // Set flag signifying that the lights are ON.
LightOffFlag = 0; // Set flag signifying that the lights are not OFF.
LightBlinkFlag = 0; // Set flag signifying that the lights are not blinking.
}
// If the measured distance is less than 31 inches and greater than 30 inches,
// and the lights are currently blinking, then leave the lights blinking.
else if((MeasuredDistanceInches < 310) && (MeasuredDistanceInches > 300) && (LightBlinkFlag == 1))
{
LightOnFlag = 0; // Set flag signifying that the lights are not ON.
LightOffFlag = 0; // Set flag signifying that the lights are not OFF.
LightBlinkFlag = 1; // Set flag signifying that the lights are blinking.
if((LightsOn == 1) && (LightBlinkCounter == 0))
{
LightsOn = 0;
LightBlinkCounter = 1;
LightOnFlag = 0; // Set flag signifying that the lights are not ON.
LightOffFlag = 0; // Set flag signifying that the lights are not OFF.
LightBlinkFlag = 1; // Set flag signifying that the lights are blinking.
}
else if((LightsOn == 1) && (LightBlinkCounter > 0))
{
LightBlinkCounter--;
}
else if((LightsOn == 0) && (LightBlinkCounter == 0))
{
LightsOn = 1;
LightBlinkCounter = 1;
}
else if((LightsOn == 0) && (LightBlinkCounter > 0))
{
LightBlinkCounter--;
}
}
// If the measured distance is more than or equal to 970 inches, then turn OFF the lights.
else if(MeasuredDistanceInches >= 970)
{
LightsOn = 0;
LightOnFlag = 0; // Set flag signifying that the lights are not ON.
LightOffFlag = 1; // Set flag signifying that the lights are OFF.
LightBlinkFlag = 0; // Set flag signifying that the lights are not blinking.
}
}
تمامی کد برنامه نیز از لینک زیر قابل دانلود است:
تست سیستم درب پارکینگ آلتراسونیک
پس از دانلود و ساخت یک پروژه، و بارگذاری کد برنامه بر روی سیستم، می توان کل مجموعه را همراه با منبع تغذیه ۱۲ ولتی به پارکینگ منتقل کرده تا بتوان آن را آزمایش کرد که نتیجه تست نمونه اولیه به همان شکلی که طراحی شده است بود که این تست در ویدئوی زیر نشان داده شده است.
مراحل بعدی برای ساخت یک محصول واقعی
مراحل بعدی برای توسعه این پروژه شامل موارد زیر است:
- یکپارچه ساختن تمامی بخش های الکترونیکی سیستم آلتراسونیک در یک طراحی برد PCB
- اضافه کردن یک سنسور دما تا سیستم بتواند فاصله اندازه گیری شده را به طور دقیق تری تعیین کند.
- پیاده سازی یک بخش سخت افزاری برای استفاده در زیر روال وقفه تا بتوان پس از اینکه وسیله نقلیه به طور صحیح پارک شد، چراغ های LED را خاموش کرد. به دلیل صرفه جویی در مصرف الکتریسیته باید از روشن ماندن اضافی چراغ های LED در تمام زمانهایی که وسیله نقلیه در پارکینگ قرار دارد اجتناب شود.
- قرار دادن بورد PCB طراحی شده در یک محفظه مناسب لوازم الکترونیکی.
- جایگزین کردن منبع تغذیه رومیزی ۱۲ ولتی با یک آداپتور ۱۲ ولتی OTS و اطمینان از این موضوع که این اداپتور می تواند نورافکن های LED را به خوبی تغذیه کند.
- انجام تست و بررسی های محیطی بیشتر در دمای بالا ( مثلا ۱۰۰ درجه فارنهایت) و دمای پایین (مثلا ۰ درجه فارنهایت).
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.