الجمعة، 11 سبتمبر 2020

مكتشف المسافة بالموجات فوق الصوتية في الزمن الحقيقي

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

Ultra sonic distance finder with live status


الأشياء المستخدمة في هذا المشروع

جهاز الاستشعار بالموجات فوق الصوتية - HC-SR04 

اردوينو نانو R3


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

من خلال هذا المشروع ، يمكننا معرفة ما إذا كان الجسم يتقدم أو يقترب ، أو أنه في نفس النقطة - إنه لا يتحرك.

في هذا المشروع ، نستخدم فقط 2mainhardware وهي:

يمكن استخدام أي نوع من لوحات Arduino (uno ، nano ، mega ، إلخ) ، ولكن يجب أن يكون لها خرج 5 فولت. لقد استخدمت اردوينو نانو.

جهاز استشعار بالموجات فوق الصوتية (HC-SRO-4)

ملامح المشروع:

This is HC-SR04


This is mother board:  (Arduino nano)


لبدء

1) كيف يعمل جهاز الاستشعار بالموجات فوق الصوتية؟

إنه يعمل عن طريق إرسال موجة صوتية ، موجة استقبال منعكسة بواسطة الكائن. وإذا لم يكن هناك جسم فلن تكون هناك موجة منعكسة.

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

إذا كنت بحاجة إلى قياس المسافة المحددة من المستشعر الخاص بك ، فيمكن حساب ذلك بناءً على هذه الصيغة:

المسافة = ½ T x C

T = الوقت و C = سرعة الصوت)

عند 20 درجة مئوية (68 درجة فهرنهايت) ، تبلغ سرعة الصوت 343 مترًا / ثانية (1125 قدمًا / ثانية) ، لكن هذا يختلف تبعًا لدرجة الحرارة والرطوبة.

يمكن أيضًا استخدام أجهزة الاستشعار بالموجات فوق الصوتية المعدلة خصيصًا تحت الماء. ومع ذلك ، فإن سرعة الصوت في الماء تبلغ 4.3 أضعاف سرعة الهواء ، لذلك يجب تعديل هذا الحساب بشكل كبير.

إنه يعمل عن طريق إرسال موجة صوتية ، موجة استقبال منعكسة بواسطة الكائن. وإذا لم يكن هناك جسم فلن تكون هناك موجة منعكسة.

connections

استكشاف الأخطاء وإصلاحها

تحقق من منفذ com أثناء التحميل.

تأكد من تحديد لوحة الكتابة.

تأكد من تحديد برنامج Wright bootloader.

// ---------------------------------------------------------------- //
// made by rho sigma electronics
// Arduino Ultrasoninc Sensor HC-SR04
// Using Arduino IDE 1.8.7
// Using HC-SR04 Module
// ---------------------------------------------------------------- //

#define echoPin 2 // attach pin D2 Arduino to pin Echo of HC-SR04
#define trigPin 3 //attach pin D3 Arduino to pin Trig of HC-SR04

// defines variables
long duration; // variable for the duration of sound wave travel
float distance, distance1, diff;//variable forthedistancemeasuremenorother
int i=0;

void setup() {
pinMode(trigPin, OUTPUT); // Sets the trigPin as an OUTPUT
pinMode(echoPin, INPUT); // Sets the echoPin as an INPUT
Serial.begin(9600); // // Serial Communication is starting with 9600 of baudrate speed
Serial.println("Ultrasonic Sensor HC-SR04 Test"); // print some text in Serial Monitor
Serial.println("with Arduino");
}
void loop() {
// Clears the trigPin condition
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Sets the trigPin HIGH (ACTIVE) for 10 microseconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
distance = duration * 0.034 / 2; // Speed of sound wave divided by 2 (go and back)
// Displays the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");

if(distance <= 5.0){
Serial.println(" object is near");
}
if(distance >= 100.0){
Serial.println(" object is far");
}
if((distance < 100.0) && (distance >5.0)){
Serial.println(" object is in green zone");
}

if(i != 0)
{
diff=abs(distance-distance1);

if(diff > 0.4) //because sensor has an eorrer of 0.3 cm
{
if(distance < distance1)
Serial.println(" object is coming closer");
else
{
if(distance > distance1)
Serial.println(" object is going farther");
else
Serial.println(" object is not moving");
}
}
else
Serial.println(" object is not moving"); //print object is not moving
}

distance1=distance;
i=i+1;              

delay(1000); // delay 1 second
}




ليست هناك تعليقات:

إرسال تعليق