مستشعر المسافات HC-SR04 Ultrasonic sensor

 

ازاي مستشعر المسافات HC-SR04 Ultrasonic sensor بيشتغل؟



المستشعر ده بيستخدم الأشعة فوق الصوتية عشان يحدد بُعد الأجسام عنه، نفس النظرية اللي بيستخدمها الخفاش عشان يتعرف عالبيئة المحيطة بيه، المستشعر ده بيحس بالحاجات على مسافة ٤ متر تقريبا وده رقم كويس جدا عشان نستخدمه في الروبوت. من أهم مميزاته انه بيستهلك طاقة قليلة فبالتالي نقدر نشغله بالبطارية، وكمان سعره قليل وسهل توصيله بالـArduino.

وحاجة كمان انه ممكن تركبه كأنه عينين للروبوت بتاعك فهيبقى شكله حلو :”



ايه هي الأشعة فوق الصوتية؟

هي ببساطة موجة ليها تردد عالي، أعلى من النطاق السمعي للانسان.

الإنسان بيقدر يسمع موجات الصوت من تردد ٢٠ هرتز (صوت تخين ورخيم) لحد ٢٠ك هرتز (صوت زي الصفارة)، ولكن الموجات فوق الصوتية (لاحظ من اسمها) بتكون أعلى من الترددات دي، وبالتالي مش بنسمعها.

مكونات HC-SR04

المستشعر بيتكون من محولين للأشعة فوق صوتية، اللي هما شبه السماعتين دول، بيُطلق على أي حاجة بتحول الطاقة من شكل لآخر transducer، الميكروفون والسماعة والمقاومة الضوئية.. وأساس عمل جميع المستشعرات هي المحولات transducers.
واحد منهم بيعمل كمُرسل والتاني مُستقبل، واحد بيحول الكهرباء لأشعة فوق صوتية والتاني بيحولها العكس، المُرسل بيحول إشارة الكهرباء لموجة فوق صوتية ترددها ٤٠ك هرتز، والمستقبل بيفضل مستني، بيسمع الإشارة الـ٤٠ك هرتز دي يشوف رجعت بعد قد ايه؟ لأنها ببساط هتروح تخبط في الجسم اللي قدام المستشعر وتنعكس وترجع تاني. فلما المستقبل يلاقيها رجعت بيبعت إشارة للـArduino يعرفه رجعت بعد قد ايه وبالتالي الـArduino يعرف يحسب المسافة.

دي الخصائص الكاملة للمستشعر:

Operating Voltage
DC 5V
Operating Current
15mA
Operating Frequency
40KHz
Max Range
4m
Min Range
2cm
Ranging Accuracy
3mm
Measuring Angle
15 degree
Trigger Input Signal
10µS TTL pulse
Dimension
45 x 20 x 15mm

الـpinout للمستشعر

كلمة pinout بتشير للرجلين اللي طالعة من الـmodule وظيفتها ايه.

الـpower أو غالبا ما يطلق عليها Vcc ودي بنوصلها بالـ5V pin في الـArduino.
الـTrig اختصار لكلمة Trigger بتُستخدم عشان نشغل الموجات فوق الصوتية.
الـEcho وده بيخرج Logic 1 لمدة زمنية معينة لما المُستقبل ترجعله الموجة الـ٤٠ك هرتز. المدة الزمنية دي بتتناسب طرديا مع الوقت اللي احتجناه عشان الموجة ترجع.
الـGND وده بنوصله بالأرضي بتاع الـArduino. وهنا لازم ننبه على حاجة مهمة واحنا بنشتغل مع الإلكترونيات، وهي توحيد الأرضي، لأن الأرضي ده المفروض يكون نقطة مشتركة لكل العناصر في الدايرة، أي جهد بنقيسه في الدايرة بنقيسه بالنسبة للأرضي، فلو الأرضي مكانش متوصل ببعضه، المستشعر ممكن يبعت ٥ فولت (بالنسبة للأرضي بتاعه) لكن الـArduino يشوفها ٢ فولت بالنسباله. ده في حالة اننا شغلنا المستشعر ببطارية مختلفة عن البطارية اللي مشغلة الـArduino.

ازاي مستشعر HC-SR04 بيشتغل؟

الموضوع بيبدأ لما الـArduino. بيبعت إشارة مدتها ١٠ ميكروثانية على Trig pin. المستشعر ساعتها بيرسل إشارة عبارة عن ٨ pulses بتردد ٤٠ك هرتز عشان يفرقها عن باقي الموجات الفوق صوتية في المكان حواليه. عشان لما المستقبل “يسمع” الإشارة يقدر يميز الإشارة بتاعته عن باقي الإشارات.
الإشارة بتاعتنا بتطلع من المستشعر، والـecho pin يقوم مطلع Logic 1 يعني ٥ فولت، ويفضل مستني.
في الحالة الأولى: الإشارة مرجعتش تاني، فده معناه انه مفيش أجسام قدام المستشعر؟ يقوم الـecho pin يتحول لـ Logic 0، طب بيفضل مستني قد ايه عشان يقرر انه مفيش إشارة؟ ٣٨ مللي ثانية. بالتالي لو الـArduino جاتله إشارة مدتها ٣٨ مللي ثانية هيعرف إنه مفيش أجسام قدامه.

الحالة التانية: لما المستقبل بيسمع الإشارة؟ أول ما الإشارة ترجع الـecho pin بيتحول Logic 0 فورا. فلو الجسم كان قريب أوي الإشارة هترجع بعد ١٥٠ ميكروثانية، طب لو بعيد شوية ممكن توصل بعد ٢٥ مللي ثانية.



فدلوقتي احنا عندنا الزمن، والسرعة اللي الإشارة ماشية بيها، نقدر نجيب المسافة؟ باستخدام معادلة:

السرعة = المسافة \ الزمن
المسافة = السرعة * الزمن

واحنا عندنا السرعة والزمن، هنضربهم في بعض هيطلع بُعد الجسم عن المستشعر.

خلونا ناخد مثال:
نفترض إنه فيه جسم قدام المستشعر، وعايزين نعرف المسافة بينه وبين المستشعر. لقينا pulse على الـecho pin مدتها ٢ مللي ثانية، واحنا عارفين انه سرعة الصوت ٣٤٠ م/ث، طب الزمن ده هو زمن الذهاب والرجوع، يعني ضعف المسافة، فمحتاجين

المسافة = ٣٤٠ * ٢ / ١٠٠٠=٠.٦٨٠ متر، او ٦٨ سم، بس هنا هنقع في غلطة كبيرة، الزمن بتاعنا هو الزمن اللي الموجة راحت ورجعت فيه، يعني محتاجين نص الزمن دا بس، بالتالي:

المسافة = السرعة * الزمن /٢ = ٣٤ سم.

إذًا، الجسم بعده عن المستشعر ٣٤سم.

 

الكود 

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

// defines variables
long duration; // variable for the duration of sound wave travel
int distance; // variable for the distance measurement

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 UNO R3");
}
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");
}
 

وكدة يبقا وصلنا لنهاية الشرح، وانتظرونا في مقالات تانية من إلكترون.



Comments

Popular Posts