علوم الحاسب

[سلسة تعلم الأردوينو] – قياس المسافة باستخدام حساس الموجات فوق الصوتية

سنتعلم ضمن هذا المقال مبدأ عمل حساس الموجات فوق الصوتية وكيفية استخدامه مع لوحة الأردوينو من أجل قياس المسافة واكتشاف العوائق.

قبل الحديث عن كيفية ربط حساس الموجات فوق الصوتية مع لوحة الأردوينو، ننصح بالاطلاع على مقالاتنا الخاصة بسلسلة تعلم الأردوينو، والتي يمكنكم استعراضها من فهرس السلسلة: اضغط هنا.

1. حول الموجات الصوتية وفوق الصوتية

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

تستطيع الأذن البشرية سماع الأصوات التي تتراوح تردداتها بين 20 هرتز و 20 كيلوهرتز، ولا تستطيع سماع الترددات الأصغر أو الأكبر من المجال السابق، بينما يختلف المجال السمعي عند الحيوانات من فصيلة لأخرى .

تتوضح المعلومات السابقة بالشكل الآتي:

تمتلك الموجات فوق الصوتية التي تزيد تردداتها عن من 20 كيلوهرتز عدداً كبيراً من الاستخدامات في العديد من المجالات، مثل الاستخدام في المجال التشخيص الطبي وتحديداً مجال التصوير الإشعاعي، أو استخدامات صناعية وتقنية حيث يُعتمد عليها في مجال قياس المسافة بسبب بساطة مبدأ عملها وكذلك بساطة آلية التحكم بها.

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

2. حساس المسافة باستخدام مستشعر الموجات فوق الصوتية HC-SR04

يدعم حساس المسافة التجاري الموضح بالصورة أعلاه قياس المسافة ضمن مجال 2 سنتي متر وحتى 400 سنتي متر، أو من 0.02 متر وحتى 4 أمتار. وبدقة عالية تصل حتى 3 ميلل متر، وذلك باستخدام أمواج فوق صوتية بتردد 40 كيلوهرتز. يتكون الحساس من وحدة إرسال  Tx تحول الإشارة الكهربائية إلى أمواج فوق صوتية ووحدة استقبال Rx لتحويل الإشارة فوق الصوتية إلى إشارة كهربائية،  ودارة تحكمـ وهو سهل الاستخدام مع المتحكمات الصغرية واللوحات التطويريةـ وله استخدامات عديدة مثل : قياس المسافة – اكتشاف العوائق  .

2.2. خطوات إجراء عملية قياس المسافة أو اكتشاف العائق :
  • توصيل التغذية (جهد التغذية 5 فولت وكذلك إشارة الأرضي GND) إلى حساس المسافة .
  • ربط مغرز القدح Trig Pin من الحساس مع مغرز رقمي من الأردوينو مضبوط على أنه مغرز خرج OUTPUT
  • ربط مغرز الصدى Echo Pin من الحساس مع مغرز رقمي من الأردوينو مضبوط على أنه مغرز دخل INPUT

على الصعيد البرمجيّ، فإن ما نحتاج القيام به هو قياس الزمن الذي ستستغرقه الموجة لقطع المسافة بين الحساس والعائق أو الغرض الموجود أمامه. هذا يتم تسجيل الزمن بدءاً من لحظة تفعيل مغرز القدح Trig Pin الذي يؤدي لتوليد أمواج فوق صوتية، وحتى قراءة جهد عالي على مغرز الصدى Echo Pin، والذي يعني وصول الموجة بعد ارتدادها أمام العائق أو الغرض الموجود أمام الحساس. بما أننا نعرف سرعة انتشار الموجة وقمنا بقياس الزمن، نستطيع حساب المسافة بشكلٍ بسيط باستخدام معادلة بسيطة.

من أجل تنفيذ المبدأ السابق يمكننا كتابة برنامج ينفذ الخوارزمية التالية:

  • مسح المغرز الرقمي من أي جهد بإصدار إشارة رقمية LOW من المتحكم لمدة 2 ميكرو ثانية .
  • توليد إشارة رقمية HIGH من المتحكم لمدة 10 ميكرو ثانية ثم إطفاؤها عبر مغرز الخرج المتصل بالمغرز trig والذي يعني إرسال 8 دورات من نبضات فوق صوتية من وحدة الإرسال، تسافر بسرعة الصوت إلى أن تصطدم بعائق.
  • يتم استقبال الموجة المرتدة عن العائق بواسطة وحدة الاستقبال وتنتقل كهربائيا إلى المتحكم عبر المغرز echo .
  • معالجة النتائج للحصول على القيمة الحقيقية للمسافة، حيث يتم حساب الزمن الذي استغرقته الموجة ذهابا وإيابا وبسرعة الصوت، اعتمادا على العلاقة بين الزمن والمسافة والسرعة نجد: d=v*t حيث t هو زمن ذهاب أو إياب فقط، وv=340 m/s وهي سرعة انتشار الصوت في الهواء، وd هي المسافة بين الحساس المسافة والعائق.

3. مثال تطبيقي – قياس المسافة باستخدام حساس الموجات فوق الصوتية

1.3. شرح عن الدارة

وظيفة الدارة قياس المسافة بين الحساس وعائق ما، وطباعة النتيجة على شاشة المراقب التسلسلي.

2.3. العتاد المستخدم
  • لوحة أردوينو أونو Arduino UNO، أو أي لوحة متوافقة معها.
  • لوحة تجريب إلكترونية.
  • أسلاك توصيل Jumper-Wire.
  • حساس قياس المسافة Ultrasonic.
3.3. البرامج المستخدمة
  • بيئة التطوير الرسمية الخاصة بلوحات الأردوينو (للتحميل: اضغط هنا )
4.3. توصيل العتاد
  • توصيل التغذية   5V , GND إلى حساس المسافة .
  • ربط المغرز trig   بمغرز رقمي يعمل بنمط الخرج وليكن المغرز رقم 8.
  • ربط المغرز echo   بمغرز رقمي يعمل بنمط الدخل وليكن المغرز رقم 9.

يكون شكل المخطط العام للدارة :

ويكون شكل الدارة عمليا كما يلي :

5.3. الشيفرة البرمجية
// Ultrasonic Sensor HC-SR04 and Arduino

// defines pins numbers
int Trig = 8;
int Echo = 9;

// defines variables
long Time;
int Distance;

void setup() {
pinMode(Trig, OUTPUT); // Sets the trig Pin as an Output
pinMode(Echo, INPUT); // Sets the echo Pin as an Input
Serial.begin(9600); // Starts the serial communication
}
void loop() {
  
// Clears the trig Pin
digitalWrite(Trig, LOW);
delayMicroseconds(2);

// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);

// Reads the echo Pin, returns the sound wave travel time in microseconds
Time = pulseIn(Echo, HIGH);
Time = Time /2;

// Calculating the distance
Distance= Time*0.034;

// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(Distance);
}
6.3. ملاحظات حول الشيفرة البرمجية
  1. تم استخدام التابع ()delayMicroseconds ووظيفته هي توليد تأخير زمني بواحدة الميكروثانية. الوسيط الذي يمكن تمريره داخل هذا التابع هو مد التأخير المطلوب.
  2. تم استخدام التابع pulseIn(Echo, HIGH) لحساب الزمن الذي استغرقته الموجة في رحلتها من الحساس باتجاه العائق ومن ثم رحل العودة. الزمن هنا بواحدة الميكروثانية. حيث يستخدم التابع pulseIn(pin, statue) لحساب الزمن الذي تغيرت خلاله حالة المغرز الرقمي. في مثالنا السابق تم حساب زمن النبضة المرتفعة على المغرز الرقمي Echo، أي النبضة التي تمثل الموجة فوق الصوتية المرتدة. على المغرز Echo ينتظر التابع pulseIn حتى تتغير حالة المغرز من LOW إلى HIGH، ومن ثم يبدأ مؤقت زمني بحساب الوقت ويستمر المؤقت في عمله حتى تتغير حالة المغرز Echo مجدداً من HIGH إلى LOW، أي انتهاء نبضة الموجات فوق الصوتية المرتدة، وهنا يتوقف المؤقت عن العمل وتحفظ القيمة ضمن المتحول Time.
  3. تم تقسيم الزمن على 2 للحصول على زمن رحلة الموجة فوق الصوتية باتجاه واحد فقط.
  4. تم حساب المسافة عن طريق مجموعة من التحويلات الرياضية كما يلي:
    – تحويل المسافة من واحدة m إلى واحدة Cm وبالتالي تضرب القيمة بـ 100.
    – تحويل الزمن إلى ميكروثانية وبالتالي تضرب قيمة الزمن بـ 1000.000.
    – وبعلاقة السرعة نجد علاقة قسمة بين المسافة والزمن v=340 * 100/1000.000 Cm/Us وبالتالي Cm/Us 0.034.
7.3. أفكار تطويرية
  • يمكنك تعديل الشيفرة السابقة، بحيث تستخدم المسافة للكشف عن العوائق وإصدار إشارة تنبيه باستخدام ثنائي ضوئي بحال وجود عائق عند مسافة معينة .
  • يمكنك عمل تحويلات رياضية إضافية لحساب المسافة بالبوصة وطباعتها .
  • في مقال قادم سنقوم بإنشاء نظام الرجوع للخلف في السيارات الحديثة باستخدام حساس الموجات فوق الصوتية.

4. ملخص

  • استطعنا قياس المسافة باستخدام حساس الموجات فوق الصوتية، وهي الطريقة المعتمدة بشكل كبير في الأنظمة المضمنة لا سيما في السيارات الحديثة والروبوتات.
  • تتأثر نتائج القياس بحال كان الحساس مائل بزاوية كبيرة عن العائق وبالتالي لاترتد كامل الموجة إلى وحدة الاستقبال.
  • يتوفر أيضا نوع من حساسات الموجات فوق الصوتية تدعى PING وهي بنفس مبدأ الحساس المذكور ضمن المقالة ولكن بربط المغرزين Trig, Echo معا، وبالتالي يتم إضافة قطعة برمجية تعمل على تنقيل حالة المغرز الرقمي بين حالتي دخل أو خرج باستمرار بحي يعمل المغرز تارة كـ Trig و تارة أخرى كـ Echo .

Mouhamad Hadid

مهندس في الالكترونيات و الاتصالات من جامعة دمشق مهتم بعالم الالكترونيات الرقمية و المتحكمات وأنظمة الـ IOT والتيار الخفيف.

مقالات ذات صلة

زر الذهاب إلى الأعلى