حساب المسافة بإستخدام حساس الموجات فوق صوتية

مبتدئ

image_pdf

في هذا المشروع سنتعلم فكرة عمل حساس الموجات فوق الصوتية و كيفية استعماله لحساب المسافة بين الاردوينو و كائن ما. قد يستخدم في انظامة الإنذار او في روبوت تخطي العقبات ثم سنقوم بعرض هذة القراءات على شاشة LCD

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال

المكونات المطلوبة

arduino uno r3

Arduino Uno

Ultrasonic Sensor HC-SR04

HC-SR04 Ultrasonic Sensor

 

HD44780

LCD 16×2

220 Ω resistor

مقاومة 220 اوم

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

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

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

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال

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

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال

الشاشة LCD

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال
تعمل الشاشة في احد الحالات التالية:

1- أن تستقبل امر من الارودوينو و تقوم بتنفيذه مثلا: أمر مسح الشاشة و أمر التهيئة 

lcd.begin(16,2);
lcd.clear();

2- أن تستقبل معلومات من الاردوينو و تقوم بعرضها مثلا : كتابة جملة معينة  

lcd.print("Hello");

 

قم بتوصيل شاشة LCD مع الأردوينو كما هو موضح بالصورة :

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال

شرح الدارة

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

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال

 

استخدام-حساس-الموجات-فوق-الصوتية-مع-ال

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

Ultrasonic Sensor Arduino
GND GND
Echo Pin 2
Trigger Pin 3
Vcc 5v

الكود

#include <LiquidCrystal.h>         // the LCD Library
#include <NewPing.h>               // the Ultrasonic Library

#define TRIG  3                    // Pin-3 of Arduino Connected to Trig Pin of Ultrasonic
#define ECHO  2                    // Pin-4 of Arduino Connected to Echo Pin of Ultrasonic
#define MAX_DISTANCE 100           // Max. Distance the Sensor Can Measure, Required for the Library


NewPing sonar(TRIG, ECHO, MAX_DISTANCE); // Ultrasonic Variable
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);  // LCD Variable


unsigned int duration;             // Variable Used To Store The Measured Distance

void setup()
{
 pinMode(TRIG,OUTPUT);             // Set Trig Pin of Arduino As Output
 pinMode(ECHO, INPUT);             // Set Echo Pin of Arduino As Input
 lcd.begin(16,2);                  // To Setup and Start the LCD
 lcd.clear();                      // To Clear the LCD
}

void loop()
{
 duration = sonar.ping();          // Send ping, get ping time in microseconds (uS).
 duration = duration / 2 / 29.4;   // Explained Below
 lcd.print("Ping: ");              // to Print " Ping:  " on the LCD
 lcd.print(duration);              // next to it print the Calculated Value
 lcd.print(" cm");

 // on lcd we will see "  Ping: 30 cm  "

 delay(1000);                      // min. delay between pings is 29 msec
 lcd.clear();                      // to clear the LCD for the Next Round
}

 شرح الكود :

في البداية قم بإدراج المكتبات المستخدمة في البرنامج, هنا سيتم استخدام مكتبة الشاشة LCD و مكتبة حساس الموجات فوق الصوتية Ultrasonic.

نقوم بتعريف أسماء منافذ الاردوينو التي تم توصيلها مع الحساس :

#define TRIG  3

ننشىء المتغيرات اللازمة للمكتبات المستخدمة :

 أولا، نقوم بتعريف المتغير الخاص بمكتبة الشاشة LCD، وإعداده إعتمادا على كيفية توصيله مع الأردوينو :

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

ثم نقوم بتعريف المتغير الخاص بمكتبة Ultrasonic، وتحديد منافذ الأردوينو المتصل معها :

NewPing sonar(TRIG, ECHO, MAX_DISTANCE);

نقوم بتهيئة الشاشة LCD للعمل عن طريق الامر :

lcd.begin(16,2);

يقوم الكود بتشغيل الحساس و حساب المسافة ثم يتم عرضها على الشاشة :

void loop()
{
 duration = sonar.ping();          // Send ping, get ping time in microseconds (uS).
 duration = duration / 2 / 29.4;   // Explained Below
 lcd.print("Ping: ");              // to Print " Ping:  " on the LCD
 lcd.print(duration);              // next to it print the Calculated Value
 lcd.print(" cm");

 // on lcd we will see "  Ping: 30 cm  "

 delay(1000);                      // min. delay between pings is 29 msec
 lcd.clear();                      // to clear the LCD for the Next Round
}

في البداية، نقوم بإستخدام الدالة ()sonar.ping لنحصل على قيمة الوقت الذي استغرقته موجات الـUltrasonic لتصدم بكائن و تعود الى الحساس مرة اخرى. ثم نقوم بعمل حسابات بسيطة على هذة القيمة سيتم شرحها لاحقا بعد ذلك قمنا بعرض هذة الحسابات على شاشة LCD.

  • الحسابات الخاصة بعمل حساس الموجات فوق الصوتية:

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

 سرعه الصوت في الهواء في الحالة العادية تقريبا 340 متر لكل ثانية فيكون الوقت المستهلك لعبور 1 سم هو :

100 للتحويل من متر الى سم , و 10^6 للتحويل من ثانية الى مايكروثانية .

X
Product added to the cart