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

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

من أكثر الحساسات استخدامًا في مشاريع الروبوتات وأنظمة تجنب العوائق هو حساس الموجات فوق الصوتية HC-SR04، وهو حساس رخيص الثمن ودقيق بما يكفي لأغلب التطبيقات التعليمية والعملية.

مواصفات الحساس

يعمل حساس HC-SR04 بجهد تشغيل 5 فولت، ويغطي مدى قياس يتراوح بين 2 و400 سنتيمتر (وقد يصل إلى 450 سنتيمترًا في أفضل الظروف)، معتمدًا على موجات صوتية بتردد 40 كيلوهرتز لا يمكن سماعها بالأذن البشرية.

طريقة التوصيل

يوصَّل طرف VCC بمنفذ 5 فولت في الأردوينو، وGND بالأرضي، بينما يتصل طرف Trig (المسؤول عن إرسال الموجة) بالمنفذ الرقمي رقم 9، ويتصل طرف Echo (المسؤول عن استقبال الموجة المرتدة) بالمنفذ الرقمي رقم 10.

مبدأ القياس

يرسل الحساس نبضة مدتها 10 ميكروثانية عبر منفذ Trig، فتنطلق موجة صوتية تصطدم بأقرب جسم أمامها وترتد مرة أخرى ليستقبلها منفذ Echo. تقوم دالة pulseIn() في الأردوينو بقياس الزمن المستغرق بين إرسال الموجة واستقبال ارتدادها، ثم تُحسب المسافة وفق المعادلة التالية:

Distance (cm) = echoTime (µs) × 0.0343 ÷ 2

حيث يمثل "x" الزمن الكلي بالميكروثانية الذي استغرقته الموجة ذهابًا وإيابًا، وتأتي القسمة على 2 لأن الزمن المقاس يشمل رحلة الذهاب والعودة معًا وليس اتجاهًا واحدًا فقط.

تطبيقات عملية

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

يمكنك إيجاد حساس HC-SR04 وبقية أدوات الربط اللازمة لهذا المشروع ضمن قسم الحساسات في متجر Juthour Tech.

كود قياس أكثر أمانًا

digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);

unsigned long echoTime = pulseIn(ECHO_PIN, HIGH, 30000UL);
if (echoTime == 0) {
  // لا يوجد صدى صالح داخل المهلة
} else {
  float distanceCm = echoTime * 0.0343f / 2.0f;
}

تتأثر النتيجة بدرجة حرارة الهواء، وزاوية السطح، ونعومته وقدرته على عكس الصوت. الأسطح المائلة واللينة قد لا تعيد صدى صالحًا، كما أن عدة حساسات متقاربة قد تتداخل؛ شغّلها بالتتابع لا في اللحظة نفسها.

Leave your comment

*
*
Only registered users can leave comments.