المشاهدات: 164 المؤلف: جريس وقت النشر: 2021-07-26 الأصل: موقع
ال يعد مستشعر الموجات فوق الصوتية HC-SR04 أحد أكثر وحدات قياس المسافة شيوعًا لمشاريع Arduino. يتم استخدامه على نطاق واسع في روبوتات تجنب العوائق، وأجهزة استشعار وقوف السيارات، واكتشاف المستوى، وصناديق القمامة الذكية، وعدادات المسافة، وغيرها من تطبيقات الاستشعار غير المتصلة.
تنبعث الوحدة من موجات فوق صوتية 40 كيلو هرتز من خلال جهاز إرسال. عندما تلتقي موجة الصوت بجسم ما، فإنها تنعكس مرة أخرى إلى جهاز الاستقبال. من خلال قياس وقت الصدى واستخدام سرعة الصوت، يستطيع Arduino حساب المسافة بين المستشعر والجسم.
| المعلمة | قيمة |
| جهد العمل النموذجي | 5 فولت تيار مستمر |
| تيار العمل الثابت | أقل من 5 مللي أمبير في بعض إصدارات الوحدة |
| تردد التشغيل | موجة بالموجات فوق الصوتية 40 كيلو هرتز |
| مسافة الكشف | النطاق المشترك: 2 سم إلى 400 سم؛ قد تدعم بعض الإصدارات المعدلة حسب الكسب نطاقًا أطول. |
| زاوية الكشف | عادة في حدود 15 درجة. قد تصل بعض الإصدارات ذات الكسب الأعلى إلى حوالي 30 درجة. |
| دقة | يصل إلى حوالي 0.3 سم تحت ظروف الاختبار المناسبة |
| المنطقة العمياء | حوالي 2 سم الحد الأدنى لمسافة القياس |
تحتوي وحدة الموجات فوق الصوتية HC-SR04 على أربعة دبابيس: VCC وTRIG وECHO وGND. يرسل Arduino نبضة تحفيز قصيرة إلى طرف TRIG، ثم يقرأ النبضة المرتدة من طرف ECHO.
| HC-SR04 دبوس | اتصال اردوينو | وظيفة |
| VCC | 5 فولت | مصدر الطاقة لوحدة الموجات فوق الصوتية. |
| علم حساب المثلثات | الرقم الرقمي 9 | إدخال الزناد. يطبق Arduino نبضًا بقوة 10us لبدء النطاق. |
| صدى | دبوس رقمي 10 | إخراج الصدى. يقرأ اردوينو عرض النبضة لحساب المسافة. |
| أرض | أرض | اتصال أرضي. |
يعمل HC-SR04 عن طريق قياس وقت الرحلة. يرسل Arduino إشارة تشغيل عالية المستوى لا تقل عن 10 ميكروثانية إلى طرف TRIG. تقوم الوحدة تلقائيًا بعد ذلك بإرسال ثماني نبضات فوق صوتية بتردد 40 كيلو هرتز وتنتظر الصدى المنعكس.
عندما يتم الكشف عن إشارة الموجات فوق الصوتية المنعكسة، يقوم طرف ECHO بإخراج نبض عالي المستوى. مدة هذه النبضة هي زمن السفر ذهابًا وإيابًا للموجة فوق الصوتية.
المسافة = زمن الصدى عالي المستوى × سرعة الصوت / 2
في كود اردوينو، الصيغة المبسطة الشائعة هي:
المسافة بالسنتيمتر = المدة × 0.0343 / 2
عملية التوقيت بسيطة: يبقي Arduino TRIG منخفضًا لفترة وجيزة، ويرسل نبضة عالية بمقدار 10us، ثم يعيد TRIG إلى المستوى المنخفض. يرسل HC-SR04 انفجارًا بالموجات فوق الصوتية ويضبط ECHO على مستوى عالٍ حتى تعود الإشارة المنعكسة أو تنتهي مهلة القياس.
لتجنب القراءات غير المستقرة، اترك مهلة قصيرة بين القياسات. يتم استخدام دورة قياس تبلغ حوالي 60 مللي ثانية بشكل شائع، بحيث يكون لدى صدى الموجات فوق الصوتية السابق وقت ليختفي قبل المشغل التالي.
ArduinopulseIn () لقياس المدة التي يظل فيها الدبوس الرقمي مرتفعًا أو منخفضًا. تُستخدم وظيفة بالنسبة لـ HC-SR04، يستخدم Arduino النبض (echoPin، HIGH) لقراءة عرض النبض عالي المستوى من طرف ECHO.
| بناء الجملة | معنى |
| نبض (دبوس، قيمة) | يقرأ مدة النبض العالي أو المنخفض. |
| نبض (دبوس، قيمة، مهلة) | يقرأ النبض بقيمة المهلة بالميكروثانية. |
يوصى باستخدام المهلة. إذا لم يتم إرجاع أي صدى، فيمكن للوظيفة التوقف عن الانتظار وإرجاع 0 بدلاً من حظر البرنامج لفترة طويلة جدًا.
الأسلاك واضحة ومباشرة. قم بتوصيل VCC إلى 5V، وGND إلى GND، وTRIG بمنفذ إخراج رقمي من Arduino، وECHO بمنفذ إدخال رقمي من Arduino. يستخدم المثال التالي Arduino Uno و TRIG على السن 9 و ECHO على السن 10.
يرسل برنامج Arduino النموذجي التالي نبضة تشغيل 10us، ويقرأ عرض نبضة ECHO، ويحسب المسافة بالسنتيمتر، ويطبع النتيجة في الشاشة التسلسلية.
const int trigPin = 9; const int echoPin = 10; مدة طويلة تعويم المسافة سم؛ إعداد باطلة () {pinMode (trigPin، OUTPUT)؛ pinMode(echoPin, INPUT); Serial.begin(9600); } حلقة باطلة () {digitalWrite (trigPin، LOW)؛ تأخير ميكروثانية (2)؛ الكتابة الرقمية (trigPin، HIGH)؛ تأخير ميكروثانية(10); الكتابة الرقمية (trigPin، LOW)؛ المدة =pulseIn(echoPin, HIGH, 30000); if (duration == 0) { Serial.println('خارج النطاق'); } else { distanceCm = المدة * 0.0343 / 2; Serial.print('المسافة: '); Serial.print(distanceCm); Serial.println('cm'); } تأخير(60); }
إذا رأيت قيم المسافة في الشاشة التسلسلية، فهذا يعني أن مستشعر الموجات فوق الصوتية HC-SR04 وأسلاك Arduino يعملان بشكل صحيح. يمكنك بعد ذلك استخدام بيانات المسافة لاكتشاف العوائق، أو التحكم في حركة الروبوت، أو الأبواب الأوتوماتيكية، أو تذكيرات ركن السيارة، أو مشاريع مستوى السائل.
احتفظ بالجسم الذي تم قياسه ضمن نطاق المسافة الموصى به وخارج المنطقة العمياء البالغة 2 سم.
استخدم سطحًا مستهدفًا مسطحًا وصلبًا لتحسين انعكاس الموجات فوق الصوتية.
تجنب قياس المواد الناعمة أو الزاوية أو المسامية أو الممتصة للصوت.
استخدم مصدر طاقة ثابتًا بقدرة 5 فولت وحافظ على الأسلاك قصيرة وآمنة.
أضف مهلة إلى PulseIn() لمنع الحظر الطويل عند عدم عودة الصدى.
متوسط أو متوسط-تصفية عدة قراءات للحد من الضوضاء.
للحصول على دقة أعلى، قم بتعويض درجة الحرارة لأن سرعة الصوت تتغير مع درجة حرارة الهواء.
| طلب | كيف يتم استخدام HC-SR04 |
| روبوت تجنب العوائق | يكتشف الأشياء القريبة ويساعد الروبوت على تغيير اتجاهه. |
| مستشعر مسافة وقوف السيارات | يقيس المسافة بين السيارة والعائق. |
| كشف مستوى السائل | يقيس المسافة من المستشعر إلى سطح السائل دون ملامسة. |
| سلة المهملات الذكية | يكتشف وجود يد أو جسم قريب ويؤدي إلى فتح الغطاء تلقائيًا. |
لاستخدام مستشعر الموجات فوق الصوتية HC-SR04 مع Arduino، قم بتوصيل VCC إلى 5V، وGND إلى GND، وTRIG بمنفذ إخراج رقمي، وECHO بمنفذ إدخال رقمي. أرسل نبضة تشغيل 10us، واقرأ مدة الصدى باستخدامpulIn()، واحسب المسافة باستخدام معادلة وقت الرحلة.
إن HC-SR04 غير مكلف وسهل الاستخدام ومناسب للعديد من مشاريع قياس المسافة في Arduino. للحصول على أفضل النتائج، انتبه إلى السطح المستهدف، وزاوية القياس، والمنطقة العمياء، والطاقة المستقرة، والتعامل مع المهلة، وتأثيرات درجة الحرارة.
يرسل Arduino نبضة بقوة 10us إلى طرف TRIG. يصدر HC-SR04 ثماني نبضات فوق صوتية بتردد 40 كيلو هرتز ويضبط دبوس ECHO على مستوى عالٍ حتى يعود الصوت المنعكس. يقيس Arduino وقت النبض هذا ويحسب المسافة.
الصيغة هي المسافة = المدة × سرعة الصوت / 2. بالسنتيمتر، صيغة Arduino الشائعة هي المسافة سم = المدة × 0.0343 / 2، حيث يتم قياس المدة بالميكروثانية.
وقت الصدى المقاس هو وقت الرحلة ذهابًا وإيابًا من المستشعر إلى الكائن والعودة إلى المستشعر. القسمة على 2 تعطي المسافة في اتجاه واحد بين المستشعر والكائن.
يمكنك استخدام معظم دبابيس Arduino الرقمية. في العديد من الأمثلة، يتم توصيل TRIG بالطرف الرقمي 9 ويتم توصيل ECHO بالطرف الرقمي 10. يجب أن يتطابق الرمز مع الأطراف المستخدمة في الأسلاك الخاصة بك.
تشمل الأسباب الشائعة الأسلاك غير المستقرة، أو طاقة 5 فولت غير مستقرة، أو أرقام دبوس TRIG أو ECHO الخاطئة، أو عدم وجود كائن في النطاق، أو الأسطح المستهدفة ذات الزاوية، أو المواد الناعمة، أو رؤوس المستشعر المسدودة، أو عدم وجود مهلة في وظيفةpulsIn().
المنطقة العمياء هي الحد الأدنى للمسافة التي لا يمكن للوحدة قياسها بشكل موثوق. بالنسبة لـ HC-SR04، تبلغ المنطقة العمياء عادة حوالي 2 سم. الأجسام الأقرب من هذا قد تنتج قراءات غير مستقرة.
نعم، يمكن استخدام HC-SR04 في مشاريع مستوى الماء البسيطة غير المتصلة إذا كان المستشعر محميًا من الرطوبة ومثبتًا فوق سطح السائل. بالنسبة للخزانات الرطبة أو الخارجية أو الصناعية، يوصى باستخدام مستشعر بالموجات فوق الصوتية المقاوم للماء.
استخدم مصدر طاقة ثابتًا، وحافظ على المستشعر عموديًا على الهدف، وتجنب الأسطح الناعمة أو ذات الزوايا، وأضف مهلة النبض، وأخذ قراءات متعددة، واستخدم التصفية المتوسطة، واترك حوالي 60 مللي ثانية بين القياسات.