بازدید: 164 نویسنده: گریس زمان انتشار: 2021-07-26 منبع: سایت
این سنسور اولتراسونیک HC-SR04 یکی از محبوب ترین ماژول های اندازه گیری فاصله برای پروژه های آردوینو است. این به طور گسترده ای در ربات های جلوگیری از موانع، حسگرهای پارک، تشخیص سطح، سطل زباله هوشمند، فاصله سنج و سایر برنامه های سنجش غیر تماسی استفاده می شود.
این ماژول امواج اولتراسونیک 40 کیلوهرتز را از طریق یک فرستنده ساطع می کند. هنگامی که موج صوتی با یک جسم برخورد می کند، به گیرنده منعکس می شود. آردوینو با اندازه گیری زمان اکو و استفاده از سرعت صوت می تواند فاصله سنسور تا جسم را محاسبه کند.
| پارامتر | ارزش |
| ولتاژ کاری معمولی | 5 ولت DC |
| جریان کار استاتیک | کمتر از 5 میلی آمپر در برخی از نسخه های ماژول |
| فرکانس کاری | موج اولتراسونیک 40 کیلوهرتز |
| فاصله تشخیص | محدوده معمول: 2 سانتی متر تا 400 سانتی متر؛ برخی از نسخههای تنظیمشده با بهره ممکن است از برد بلندتری پشتیبانی کنند. |
| زاویه تشخیص | معمولا در 15 درجه؛ برخی از نسخه های با بهره بالاتر ممکن است به حدود 30 درجه برسند. |
| دقت | تا حدود 0.3 سانتی متر در شرایط آزمایش مناسب |
| منطقه کور | حداقل فاصله اندازه گیری حدود 2 سانتی متر |
ماژول اولتراسونیک HC-SR04 دارای چهار پایه است: VCC، TRIG، ECHO و GND. آردوینو یک پالس تریگر کوتاه به پین TRIG می فرستد، سپس پالس برگشتی را از پایه ECHO می خواند.
| پین HC-SR04 | اتصال آردوینو | تابع |
| VCC | 5 ولت | منبع تغذیه برای ماژول اولتراسونیک. |
| TRIG | پین دیجیتال 9 | ورودی ماشه. آردوینو یک پالس 10 us را برای شروع محدوده اعمال می کند. |
| ECHO | پین دیجیتال 10 | خروجی اکو آردوینو عرض پالس را برای محاسبه فاصله می خواند. |
| GND | GND | اتصال زمینی |
HC-SR04 با اندازه گیری زمان پرواز کار می کند. آردوینو یک سیگنال ماشه سطح بالا حداقل 10 میکروثانیه را به پین TRIG ارسال می کند. سپس ماژول به طور خودکار هشت پالس اولتراسونیک با فرکانس 40 کیلوهرتز ارسال می کند و منتظر پژواک منعکس شده می ماند.
هنگامی که سیگنال اولتراسونیک منعکس شده تشخیص داده می شود، پین ECHO یک پالس سطح بالا را تولید می کند. مدت زمان این پالس زمان سفر رفت و برگشت موج اولتراسونیک است.
فاصله = زمان اکو در سطح بالا × سرعت صدا / 2
در کد آردوینو، فرمول ساده شده رایج به صورت زیر است:
فاصله بر حسب سانتی متر = مدت زمان × 0.0343 / 2
فرآیند زمانبندی ساده است: آردوینو TRIG را برای مدت کوتاهی پایین نگه میدارد، یک پالس بالای 10 us ارسال میکند، سپس TRIG را به پایین برمیگرداند. HC-SR04 یک انفجار اولتراسونیک را ارسال می کند و ECHO را تا زمانی که سیگنال بازتاب شده برگردد یا زمان اندازه گیری تمام شود، بالا می گذارد.
برای جلوگیری از خوانش های ناپایدار، یک تاخیر کوتاه بین اندازه گیری ها بگذارید. معمولاً از یک چرخه اندازهگیری حدود 60 میلیثانیه استفاده میشود، بنابراین اکو اولتراسونیک قبلی زمان دارد تا قبل از ماشه بعدی ناپدید شود.
تابع Arduino pulseIn () برای اندازهگیری مدت زمانی که پین دیجیتال HIGH یا LOW باقی میماند استفاده میشود. برای HC-SR04، آردوینو از pulseIn(echoPin، HIGH) برای خواندن عرض پالس سطح بالا از پین ECHO استفاده می کند.
| نحو | معنی |
| pulseIn (پین، مقدار) | مدت زمان یک پالس HIGH یا LOW را می خواند. |
| pulseIn (پین، مقدار، مهلت زمانی) | پالس را با مقدار بازه زمانی در میکروثانیه می خواند. |
استفاده از تایم اوت توصیه می شود. اگر هیچ اکو برگردانده نشد، تابع می تواند به جای مسدود کردن برنامه برای مدت طولانی، انتظار را متوقف کند و 0 را برگرداند.
سیم کشی ساده است. VCC را به 5 ولت، GND را به GND، TRIG را به پایه خروجی دیجیتال آردوینو و ECHO را به پایه ورودی دیجیتال آردوینو وصل کنید. مثال زیر از Arduino Uno، TRIG در پایه 9 و ECHO در پایه 10 استفاده می کند.
برنامه معمولی آردوینو زیر یک پالس ماشه 10 us ارسال می کند، عرض پالس ECHO را می خواند، فاصله را بر حسب سانتی متر محاسبه می کند و نتیجه را در مانیتور سریال چاپ می کند.
const int trigPin = 9; const int echoPin = 10; مدت طولانی؛ فاصله شناورCm; void setup() { pinMode(trigPin, OUTPUT); pinMode (echoPin، INPUT)؛ Serial.begin(9600); } void loop() { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite (trigPin، HIGH); delayMicroseconds (10); digitalWrite (trigPin، LOW)؛ مدت زمان = pulseIn (echoPin، HIGH، 30000)؛ if (دوره == 0) { Serial.println('خارج از محدوده'); } else { distanceCm = duration * 0.0343 / 2; Serial.print('Distance: '); Serial.print(distanceCm); Serial.println('cm'); } تاخیر(60); }
اگر مقادیر فاصله را در مانیتور سریال مشاهده کردید، حسگر اولتراسونیک HC-SR04 و سیم کشی آردوینو به درستی کار می کنند. سپس میتوانید از دادههای فاصله برای تشخیص موانع، کنترل حرکت ربات، دربهای خودکار، یادآورهای پارکینگ یا پروژههای سطح مایع استفاده کنید.
جسم اندازه گیری شده را در محدوده فاصله توصیه شده و خارج از ناحیه کور 2 سانتی متری نگه دارید.
برای انعکاس بهتر اولتراسونیک از یک سطح هدف صاف و جامد استفاده کنید.
از اندازه گیری مواد نرم، زاویه دار، متخلخل یا جاذب صدا خودداری کنید.
از منبع تغذیه 5 ولت پایدار استفاده کنید و سیم کشی را کوتاه و ایمن نگه دارید.
یک بازه زمانی به pulseIn() اضافه کنید تا از مسدود شدن طولانی در صورت عدم بازگشت اکو جلوگیری کنید.
برای کاهش نویز، چندین قرائت را به طور متوسط یا میانه فیلتر کنید.
برای دقت بیشتر، دما را جبران کنید زیرا سرعت صدا با دمای هوا تغییر می کند.
| برنامه | نحوه استفاده از HC-SR04 |
| ربات جلوگیری از موانع | اشیاء نزدیک را تشخیص می دهد و به ربات کمک می کند تا جهت خود را تغییر دهد. |
| سنسور فاصله پارکینگ | فاصله بین وسیله نقلیه و مانع را اندازه گیری می کند. |
| تشخیص سطح مایع | فاصله سنسور تا سطح مایع را بدون تماس اندازه گیری می کند. |
| سطل زباله هوشمند | دست یا شیء نزدیک را تشخیص می دهد و باعث باز شدن خودکار درب می شود. |
برای استفاده از حسگر اولتراسونیک HC-SR04 با آردوینو، VCC را به 5 ولت، GND را به GND، TRIG را به پایه خروجی دیجیتال و ECHO را به پایه ورودی دیجیتال وصل کنید. یک پالس تریگر 10 us ارسال کنید، مدت زمان اکو را با pulseIn() بخوانید و فاصله را با فرمول زمان پرواز محاسبه کنید.
HC-SR04 ارزان، استفاده آسان و مناسب برای بسیاری از پروژه های اندازه گیری فاصله آردوینو است. برای بهترین نتیجه، به سطح هدف، زاویه اندازه گیری، ناحیه کور، توان پایدار، کنترل زمان و اثرات دما توجه کنید.
آردوینو یک پالس 10 us را به پین TRIG می فرستد. HC-SR04 هشت پالس اولتراسونیک با فرکانس 40 کیلوهرتز ساطع می کند و پایه ECHO را تا زمانی که صدای منعکس شده برگردد بالا قرار می دهد. آردوینو این زمان پالس را اندازه گیری می کند و فاصله را محاسبه می کند.
فرمول فاصله = مدت زمان × سرعت صدا / 2 است. در سانتی متر، یک فرمول رایج آردوینو فاصلهCm = مدت زمان × 0.0343 / 2 است که مدت زمان بر حسب میکروثانیه اندازه گیری می شود.
زمان پژواک اندازه گیری شده زمان رفت و برگشت از سنسور به جسم و بازگشت به سنسور است. تقسیم بر 2 فاصله یک طرفه بین سنسور و جسم را نشان می دهد.
شما می توانید از اکثر پین های دیجیتال آردوینو استفاده کنید. در بسیاری از نمونه ها، TRIG به پین دیجیتال 9 و ECHO به پین دیجیتال 10 متصل می شود. کد باید با پین های استفاده شده در سیم کشی شما مطابقت داشته باشد.
علل رایج عبارتند از: سیمکشی شل، برق 5 ولت ناپایدار، شمارههای پین TRIG یا ECHO اشتباه، نداشتن شی در محدوده، سطوح هدف زاویهدار، مواد نرم، سرهای سنسور مسدود شده، یا عدم وجود مهلت زمانی در عملکرد pulseIn() است.
منطقه کور حداقل فاصله ای است که ماژول نمی تواند به طور قابل اعتماد اندازه گیری کند. برای HC-SR04، ناحیه کور معمولاً حدود 2 سانتی متر است. اجسام نزدیک تر از این ممکن است خوانش های ناپایدار ایجاد کنند.
بله، اگر سنسور از رطوبت محافظت شده و بالای سطح مایع نصب شده باشد، می توان از HC-SR04 برای پروژه های ساده سطح آب بدون تماس استفاده کرد. برای مخازن مرطوب، فضای باز یا صنعتی، سنسور اولتراسونیک ضد آب توصیه می شود.
از یک منبع تغذیه پایدار استفاده کنید، سنسور را عمود بر هدف نگه دارید، از سطوح نرم یا زاویه دار اجتناب کنید، زمان pulseIn را اضافه کنید، چندین بار قرائت کنید، از فیلتر میانه استفاده کنید و بین اندازه گیری ها حدود 60 میلی ثانیه فاصله بگذارید.