حساس المسافة Ultrasonic

ultrasonic sensor HCSR-04

مقدمة

من المحتمل أنك قد شاهدت يوما ما ربوت لتجنب العوائق أو عصا لمساعدة المكفوفين أو حتى جهاز لتعقيم اليدين يعمل تلقائياً عند الاقتراب منه.
هل فكرت ما هو الحساس المستخدم وما هي طريقة عمله؟ جميع ما ذكر من المشاريع وأكثر بكثير يمكن عملها باستخدام حساس المسافة Ultrasonic SR-04.

جهاز لتعقيم اليدين

عصا لمساعدة المكفوفين

ربوت لتجنب العوائق

ما هو حساس المسافة وما هي مكوناته

هو عبارة عن جهاز استشعار يقوم بقياس المسافة بينه وبين الحاجز الذي أمامه عن طريق الأمواج فوق الصوتية، يتكون من مرسل ومستقبل ودارة تحكم. يعتمد في عمله بشكل أساسي على الأمواج فوق الصوتية عن طريق ارسال موجة عن طريق المرسل ففي حال وجود حاجز تصطدم به الموجة وتنعكس الى المستقبل فيقوم الحساس بحساب الزمن الذي استغرقته الاشارة من لحظة ارسالها الى عودتها، وكما نعلم أن سرعة الصوت معروفة (340m/s عند درجة حرارة 20 درجة مئوية ) وتختلف بشكل بسيط عند تغير درجة الحرارة والرطوبة والضغط الجوي، وبالتالي يمكن حساب المسافة من خلال العلاقة التالية

Speed = dist/time
Dist = speed × time

 how ultrasonic sensor work

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

  • جهد التغذية 5v.
  • تيار الذي يستهلكه 15mA.
  • أقل مسافة يستطيع قياسها 2cm.
  • أكبر مسافة يستطيع قياسها 400cm.
  • زاوية القياس 15deg درجة.
  • دقة القياس 3mm.

تطبيقات ومشاريع باستخدام الحساس

  • رادار صغير.
  • حساس لقياس مستوى الماء.
  • جهاز ذكي لتعقيم اليدين .
  • سلة نفايات ذكية.
  • عصا لمساعدة المكفوفين.
  • كراج ذكي.

الربط مع الاردوينو

يحتوي الموديول على 4 أربعة أقطاب وهي:

Vcc

تغذية الموديول ب 5v

GND

قطب الارضي

Trigger

قطب التشغيل

Echo

قطب الدخل يتم من خلاله قياس الزمن

ultrasonic sesnor with arduino

في البداية نحتاج لاعطاء نبضة موجبة زمنها 10us على القطب Trigger وهذه النبضة تعني بداية التشغيل فتقوم وحدة التحكم الموجود في الموديول بإرسال موجة فوق صوتية ترددها 40KHZ على شكل نبضات عددها 8 نبضات وعند نهاية ارسال هذه النبضات يبدأ قطب echo بقراءة نبضة موجبة High تستمر حتى تنعكس الموجة المرسلة وتعود الى المستقبل فتعود القيمة على قطب echo مساوية للصفر Low

مخطط التوصيل

ultrasonic sesnor with arduino

الكود البرمجي

int trigPin = 3; // TRIG pin  
int echoPin = 2; // ECHO pin  
float duration_us, 
distance_cm; 

void  setup() { 
    // begin serial port  
    Serial.begin (9600); 
    // configure the trigger pin to output mode  
    pinMode(trigPin, OUTPUT); 
    // configure the echo pin to input mode  
    pinMode(echoPin, INPUT); 
}

void  loop() { 
    // generate 10-microsecond pulse to TRIG pin  
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10); 
    digitalWrite(trigPin, LOW); 
    // measure duration of pulse from ECHO pin 
    duration_us = pulseIn(echoPin, HIGH); 
    // calculate the distance 
    distance_cm = 0.034 * (duration_us / 2); 
    // print the value to Serial Monitor  
    Serial.print("distance: "); 
    Serial.print(distance_cm); 
    Serial.println(" cm"); 
    delay(500); 
}
مشاركات أقدم المقال التالي
لا يوجد تعليقات
أضف تعليق
عنوان التعليق