القائمة الرئيسية

الصفحات

حساس الموجات فوق الصوتية HC-SR04 وربطه بالأردوينو


  امنح مشروعك القادم من مشروعات Arduino قوة بفضل مستشعر المسافة بالموجات فوق الصوتية HC-SR04 الذي يمكنه الإبلاغ عن مجموعة الأشياء التي تبعد أقل من  13 قدمًا (4 أمتار). وهي معلومات جيدة حقًا إذا كنت تحاول تجنب أن يصطدم روبوتك بالحائط! فهي منخفضة الطاقة (مناسبة للأجهزة التي تعمل بالبطاريات) ، وغير مكلفة ، وسهلة التفاعل ، وتحظى بشعبية كبيرة بين الهواة. وكمكافأة تبدو رائعة ، مثل زوج من عيون "Wall-E Robot" لاختراعك ​​الآلي الأخير!

كيف يعمل HC-SR04 ؟

   يقوم هذا الحساس بإرسال موجات فوق صوتية يقدر ترددها بـ40000 هرتز والتي تنتقل عبر الهواء فإذا كان هناك جسم أو عقبة في طريقها سانعكس ويعود إلى الوحدة. وبالنظر إلى وقت السفر وسرعة الصوت يمكنك حساب المسافة.
المسافة = السرعة x الزمن





لكن ما هي الموجات فوق الصوتية؟

الموجات فوق الصوتية هي موجات صوت عالية النبرة بترددات أعلى من الحد المسموع لسمع الإنسان. يمكن أن تسمع آذاننا موجات صوتية تهتز في النطاق من حوالي 20 مرة في الثانية (ضجيج هدير عميق) إلى حوالي 20000 مرة في الثانية (صفير عالي النبرة). ومع ذلك ، فإن الموجات فوق الصوتية لديها تردد أكثر من 20،000 هرتز ، وبالتالي غير مسموع للبشر.



هنا مواصفات كاملة:

مواصفات الحساس HC-SR04
الجهدتيار مستمر 5 فولط
شدة التيار 15 ميلي أمبير
التردد40 كيلوهرتز
أكبر نطاق4 م
أقل نطاق2سم
الدقة 3 ملم
الزاوية المقاسة15 درجة
إشارة دخول الزناد10µS TTL pulse
الأبعاد45x20x15 ملم

منافذ الحساس

     دعونا نلقي نظرة على المنافذ.


 VCC   هو مصدر الطاقة لجهاز استشعار المسافة بالموجات فوق الصوتية HC-SR04 والذي نربطه مع منفذ الـ 5 فولط في Arduino.

 Trig  يتستخدم لتحريض نبضات من الموجات فوق الصوتية.

 Esho    ينتج نبضًا عند تلقي الإشارة المنعكسة. يتناسب طول النبض مع الوقت الذي يستغرقه الكشف عن الإشارة المرسلة.

 GND  يجب أن يكون متصلا بالقطب الأرضي للاردوينو.

طريقة توصيله بالـArduino

الآن بعد أن أصبح لدينا فهم كامل لكيفية عمل جهاز استشعار المسافة بالموجات فوق الصوتية HC-SR04 ، يمكننا أن نبدأ في توصيله بالـArduino!من السهل جداً توصيل جهاز HC-SR04 مع Arduino. ابدأ بوضع المستشعر على اللوح الخاص بك. قم بتوصيل منفذ الـ  VCC إلى منفذ الـ 5 فولط في Arduino وربط منفذ الـ GND إلى منفذ الأرضي على Arduino.

عندما تنتهي ، يجب أن يكون لديك شيء يشبه الرسم التوضيحي الموضح أدناه.

كود اردوينو - باستخدام مكتبة NewPing

بدلاً من تشغيل جهاز استشعار الموجات فوق الصوتية وقياس عرض نبضة الإشارة المستلمة يدويًا ، سنستخدم مكتبة خاصة.
هناك عدد غير قليل منها متاح ، والأكثر تنوعا هي واحدة تسمى 'NewPing'.قم بتنزيل المكتبة أولاً ، من خلال زيارة Bitbucket repo أو فقط انقر الرابط التالي لتنزيل الملف المضعوط:

تحميل NewPing_v1.9.0.zip

ولتثبيتها، قم بفتح Arduino IDE ، وانتقل إلى Sketch ثم Include Library ثم Add .ZIP Library، ثم حدد ملف NewPing ZIP الذي قمت بتنزيله للتو. إذا كنت بحاجة إلى مزيد من التفاصيل حول تثبيت مكتبة ، فقم بزيارة البرنامج التعليمي لتثبيت مكتبة Arduino.
مكتبة NewPing متقدمة تمامًا وتحسّن إلى حد كبير من دقة رسمنا الأصلي. كما تدعم ما يصل إلى 15 جهاز استشعار بالموجات فوق الصوتية في آن واحد ، ويمكن أن يخرج مباشرة بالسنتيمتر أو البوصة أو المدة الزمنية.

فيما يلي إعادة كتابة لكود استخدام مكتبة NewPing:

// This uses Serial Monitor to display Range Finder distance readings
// Include NewPing Library
#include "NewPing.h"
// Hook up HC-SR04 with Trig to Arduino Pin 9, Echo to Arduino pin 10
#define TRIGGER_PIN 9
#define ECHO_PIN 10
// Maximum distance we want to ping for (in centimeters).
#define MAX_DISTANCE 400
// NewPing setup of pins and maximum distance.
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
float duration, distance;
void setup()
{
Serial.begin(9600);
}
void loop()
{
// Send ping, get distance in cm
distance = sonar.ping_cm();
// Send results to Serial Monitor
Serial.print("Distance = ");
if (distance >= 400 || distance <= 2)
{
Serial.println("Out of range");
}
else
{
Serial.print(distance);
Serial.println(" cm");
}
delay(500);
}

الكود أعلاه بسيط ويعمل بشكل جيد ولكن لا يحتوي إلا على دقة تصل إلى سنتيمتر واحد. إذا كنت ترغب في استرجاع قيم الفاصلة العشرية ، يمكنك استخدام NewPing في وضع المدة بدلاً من وضع المسافة. تحتاج إلى استبدال هذا السطر
// Send ping, get distance in cm
distance = sonar.ping_cm();
بهذا السطر
duration = sonar.ping();
distance = (duration / 2) * 0.0343;

لتحسين دقة HC-SR04 إلى المستوى التالي ، هناك وظيفة أخرى في مكتبة NewPing تسمى 'التكرارات'. يعني التكرار تجاوز شيء أكثر من مرة ، وهذا بالضبط ما يفعله وضع التكرار. يستغرق الأمر العديد من قياسات المدة بدلاً من قياس واحد ، ويلقي أي قراءات غير صالحة ، ثم يقوم بتقييم متوسط القراءات المتبقية. بشكل افتراضي ، يستغرق الأمر 5 قراءات ، لكن يمكنك تحديد العدد الذي تريده بالفعل.

int iterations = 5;
duration = sonar.ping_median(iterations);

ما هي القيود؟

من حيث الدقة والفائدة الشاملة ، فإن مستشعر المسافة بالموجات فوق الصوتية HC-SR04 رائع حقًا، لا سيما مقارنة بأجهزة استشعار الكشف عن المسافات منخفضة التكلفة الأخرى. هذا لا يعني أن مستشعر HC-SR04 قادر على قياس 'كل شيء'. توضح الرسوم البيانية التالية بعض المواقف التي لم يتم تصميم HC-SR04 لقياسها:


تأثير درجة الحرارة على قياس المسافة

على الرغم من دقة HC-SR04 لمعظم مشاريعنا مثل كشف الدخيل أو الإنذارات عن قرب ؛ ولكن في بعض الأحيان قد ترغب في تصميم جهاز للاستخدام في الهواء الطلق أو في بيئة ساخنة أو باردة بشكل غير عادي. إذا كان هذا هو الحال ، فقد تحتاج إلى مراعاة حقيقة أن سرعة الصوت في الهواء تختلف مع درجة الحرارة وضغط الهواء والرطوبة.نظرًا لسرعة عوامل الصوت في حساب مسافة HC-SR04 ، فقد يؤثر ذلك على قراءاتنا. إذا كانت درجة الحرارة (درجة مئوية) والرطوبة معروفة بالفعل ، ففكر في الصيغة التالية:


سرعة الصوت م / ث = 331.4 + (0.606 * درجة الحرارة) + (0.0124 * الرطوبة)




تعليقات