أردوينو ultrasonic


- الموضوع الذي سأتناوله في تدوينتي يعتبر مهم جداً نظراً لأستخداماته في العديد من التطبيقات , حديثي اليوم سيكون عن حساس الأمواج فوق الصوتية أو ما يعرف ب Ultrasonic *


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

                     



- سرعة الموجات في الفراغ هي 345 m/s عند 25سيلسيوس  و تختلف من وسط لأخر حسب الوسط الناقل كالسوائل و الغازات و الأجسام الصلبة .


- يكفي أن نعرف سرعة هذه الموجات  لمعرفة المسافة, و أن نعرف الفرق بين زمن الارسال و زمن الأرتداد للصدى و بهذا يمكننا معرفة المسافة حسب قانون نيوتن :

المسافه = السرعه × الزمن 



-  لننتقل إلى ما سنقوم  بفعله , وما هي الإمكانيات التي يوفرها لنا هذا الحساس .

- يمكننا هذا الحساس من معرفة المسافة بشكل دقيق بينه و بين الأجسام التي امامه , مما يعد خيار مفضل عند بناء روبوتات تفادي الأصطدام - Avoiding Robot - eviteur d'obstacle


- الوقت للتطبيق العملي .
المعدّات 

- ستحتاج لتنفيذ هذه التجربة ما يلي :
1* أردوينو 
2* التراسونيك HC SRF04
3* BreadBoard
4* اسلاك توصيل .
5* محرك سيرفو صغير.


- للتوصيل :

- سنقوم بتوصيل الحساس مع الأردوينو كالآتي :
Trigger>>>> D12
Echo>>>> D13 
- بالإضافة للتغذية و الأرضي Vcc+GND.



 البرمجة  :

- من النشرة الفنية لحساس الأمواج فوق الصوتية " للألتراسونيك" نستطيع برمجة هذا الحساس بسهولة .
الرسم التالي يوضح المخطط الزمني لعمل الألتراسونيك .

Résultat de recherche d'images pour "arduino ultrasonic"

- ليبدأ الالتراسونيك العمل , يتم قدحه Trigger بنبضة طولها 10us , ثم يقوم المرسل في الألتراسونيك بإرسال 8 نبضات بطول 40KHz , ثم ينتظر أن يصله صدى Echo للنبضات التي أرسلها , و تكون بين 100us-18ms اعتماداً على المسافة التي قطعتها الأمواج الصوت "في حال كان طول نبضة الصدى 36ms هذا يعني أنه لم يصطدم بجسم أمامه ! "

Image associée

- لكتابة الكود يلزمنا فقط اتباع الارشادات الوادة في المخطط الزمني .

- الكود الأولي  بسيط و يعتمد على ارسال نبضات كل 10uS ثم قراءة الصدى الراجع إلى الحساس, ثم قسمتها على 58 لنحصل على المسافة بالسنتيمتر 


- هذا الكود أولي , لكن أليكم هذه المفاجأة ! فهناك مكتبة سهلة جداً للتعامل مع هذا النوع 



 هذه المكتبة يمكن تحميلها ⤌ ici


- بعد ان تقوم بفك الضغط عن الملف و وضعه في مسار المكتبات Libraries داخل مجلد الاردوينو قم  بتحميل البرنامج المرفق معاه .


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

الكود موجود بالأسفل :


// this a simple program to how to use ultrasonic HC-SRO 4 & SRF 04
//This ultrasonic content 4 leg < Vcc, Tri,Ech,Gnd
//Connect SRF 04 to arduino like this:
//Vcc>>>>>+5 volt arduino power source
//Tri>>>>digital pin # 12
//ech>>>>digital pin # 13
//Gnd>>> as defalt Arduino Gnd
//Modifiy By Mohannad Rawashdeh.

#include "Ultrasonic.h"
Ultrasonic ultrasonic(12,13);
void setup() {
Serial.begin(9600);
}
void loop()
  Serial.print(ultrasonic.Ranging(CM));
{   Serial.println("cm");   delay(100); }

- لتهيئة المداخل التي سنربط عليها الألتراسونيك نستدعي الأمر :
Ultrasonic ultrasonic(Trigger_pin,Echo_pin);

-لقياس البعد بين الألتراسونيك و الجسم التي ترتطم به الأمواج فوق الصوتية ما علينا سوى استدعاء الأمر 
;(ultrasonic.Ranging(CM

و البرنامج الأخير هنا يعرض التحكم بأكثر من التراسونيك واحد .
//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by //the Free Software Foundation, either version 3 of the License, or //(at your option) any later version. //This program is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. //You should have received a copy of the GNU General Public License //**************************************************** //Name :AIT-LASRI YOUNES  . // Description: This  Code for ultrasonic SRF04 Connected with arduino board // Programmed for  https://www.facebook.com/arduino.electromaroc/ //**************************************************************** #include "Ultrasonic.h" int Distance_1=0; int Distance_2=0; int t=100; void setup(){   Serial.begin(9600);   Serial.println( "This Program To Test two UltraSonic Sensor");   delay(100);   Serial.println("Testing"); }   void ultra_sonic_one(){   Ultrasonic ultrasonic_one(12,13);   Distance_1= ultrasonic_one.Ranging(CM);   Serial.print("Distance # one in cm =");   Serial.println(Distance_1);   delay(t);     } void ultra_sonic_two(){   Ultrasonic ultrasonic_two(2,3);   Distance_2= ultrasonic_two.Ranging(CM);   Serial.print("Distance # Two in cm =");   Serial.println(Distance_2);   delay(t);     } void loop(){    ultra_sonic_one();    ultra_sonic_two();    delay(400); }    
   
First


EmoticonEmoticon