الدرس السادس :التعرف على مستشعر الموجات فوق الصوتية

وضاح العونيمنذ 7 سنوات

السلام عليكم ورحمة الله وبركاته 

الدرس السادس : التعرف على مستشعر الموجات فوق الصوتية .

IMG_20160402_211909.jpg

 

أهداف هذا الدرس :

  1. معرفة التعامل مع مستشعر الموجات فوق الصوتية .

نبذة بسيطة :

في هذا الدرس سوف نقوم بعمل جهاز يستطيع استشعار المسافات بينه وبين الاجسام التي تكون أمامه

وذلك بواسطة مستشعر الموجات فوق الصوتية ,

إذ كانت المسافة بينه وبين الجسم أقل من 10 سنتيمتر  

سوف يضئء اللمبة الحمراء ويصدر صوت تحذيري

أما إذ كانت أكبر من ذلك سوف يضيء اللمبة الخضراء .

وللمعرفة المسافة يمكن الدخول على وضع المراقب التسلسلي بعد رفع الكود للاردوينو .

الدائرة الكهرباية :

 

Arduino.PNG

 

آليه عمل حساس الموجات فوق الصوتية (Ultrasonic Sensor) :

 

عمل 2.jpg

 

يتم إرسال الموجات الصوتية عن طريق منفذ Trig 

 بعد اصطدام الموجات مع الجسم تنعكس ويتم إستقبلها عبر منفذ Echo  

ومن خلال الوقت بين إرسال الموجات ووقت استقبلها يتم حساب المسافة .

ولحساب المسافة نستخدم المعادلة الرياضية التالية :

المسافة = الوقت * السرعة

حيث السرعة تكون ثابته وهي سرعة الصوت 340 متر في الثانية ولكن هنا نحسب الاشارة بـ سنتيمتر وسوف تكون سرعة الصوت تساوي 0.0340 سنتيمتر

ولكن نلاحظ بالصورة ب أن المستشعر سوف يقوم بإرسال وإستقبال إشارة وذلك يسمح بإن تكون قيمة المسافة تتضاعف ونحتاج لتقسيمها على 2

لتصبح المعادلة بالشكل النهائي

المسافة = الوقت *السرعة / 2 .

أقصى حد للمسافة في هذا الحساس هي 4 متر .

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


int echoPin =8;
int trigPin =9;
int Led_Red =7;
int Led_Green =6;
int Buzzer=5;
void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(Led_Red, OUTPUT);
  pinMode(Led_Green, OUTPUT);
  pinMode(Buzzer, OUTPUT);
}
void loop() {
  long duration; //المدة
  long distance;//المسافة
  digitalWrite(trigPin, LOW);
  delay(15);
  digitalWrite(trigPin, HIGH);
  delay(10); 
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance= duration*0.034/2;
  Serial.print(distance);
  Serial.println(" cm");
  if (distance < 10) { 
  digitalWrite(Led_Red,HIGH);
  digitalWrite(Buzzer,HIGH);
  digitalWrite(Led_Green,LOW);
}
 else {
    digitalWrite(Led_Red,LOW);
  digitalWrite(Buzzer,LOW);
    digitalWrite(Led_Green,HIGH);} 
 delay(500);
}

شرح الكود البرمجي :

لفهم الكود بشكل جيد يمكنك الرجوع إلى الدروس السابقة .


  digitalWrite(trigPin, LOW);
  delay(10);
  digitalWrite(trigPin, HIGH);
  delay(15); 

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


  digitalWrite(trigPin, LOW);

هذا الامر  لإيقاف تهيئة الاستشعار .



duration = pulseIn(echoPin, HIGH);

الدالة وظيفتها هي حساب مدة الوقت بين إرسال الموجات الصوتية من Trig pin وحتى إنعكاس الموجات وإستقبالها من خلال Echo pin  ,

عندما يكون منفذ Echo  في حالة HIGH تعني بإن تم إستقبال الاشارة المنعكسة .


distance= duration*0.034/2;

نلاحظ هنا استخدمنا لقانون المسافة لايجادها بوحدة سنتيمتر .

حل تحدي السابق :

التحدي مذكور في هذا المقال 

https://3alam.pro/articles/microcontroller/waduino-series-movement-sensor/

يمكنك تحميل حل التحدي السابق من هنا 

Waduino_2.ino

تحدي بسيط :

قم بتحويل وحدة المسافة من سنتيسمتر إلى متر .

وإلى هنا نصل إلى نهاية هذا الدرس

ونراكم بالدرس القادم إن شاء الله.

كلمات دليلية:
3
إعجاب
24078
مشاهدات
0
مشاركة
0
متابع
متميز
محتوى رهيب

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !