ใบงานที่ 4
ใบงานที่4 HC-SRO4 Ultrasonic Sensor
ผู้จัดทำ
นาย กฤษณะ รักธรรม 001
นาย สราวุธ ชอบเพื่อน 021
หลักการทำงาน
HC-SR04 เป็นเซนเซอร์โมดูลสำหรับตรวจจับวัตถุและวัดระยะทางแบบไม่สัมผัส [1-2] โดยใช้คลื่นอัลตราโซนิก ซึ่งเป็นคลื่นเสียงความถี่สูงเกินกว่าการได้ยินของมนุษย์ วัดระยะได้ตั้งแต่ 2 – 400 เซนติเมตร หรือ 1 – 156 นิ้ว สามารถต่อใช้งานกับไมโครคอนโทรลเลอร์ได้ง่าย ใช้พลังงานต่ำ เหมาะกับการนำไปประยุกต์ใช้งานด้านระบบควบคุมอัตโนมัติ หรืองานด้านหุ่นยนต์ หลักการทำงาน จะเหมือนกันกับการตรวจจับวัตถุด้วยเสียงของค้างคาว ตามรูปที่ 1 โดยจะประกอบไปด้วยตัว รับ-ส่ง อัลตราโซนิก ตัวส่งจะส่งคลื่นความถี่ 40 kHz ออกไปในอากาศด้วยความเร็วประมาณ 346 เมตรต่อวินาที และตัวรับจะคอยรับสัญญาณที่สะท้อนกลับจากวัตถุ เมื่อทราบความเร็วในการเคลื่อนที่ของคลื่น, เวลาที่ใช้ในการเดินทางไป-กลับ (t) ก็จะสามารถคำนวณหาระยะห่างของวัตถุ (S) ได้จาก
S = 346 × 0.5t (1)
เพื่อให้การคำนวณหาระยะเป็นไปด้วยความง่าย โมดูลเซนเซอร์นี้จึงได้ประมวลผลให้เรียบร้อยแล้ว และส่งผลลัพธ์ของการคำนวณเป็นสัญญาณพัลส์ที่มีความกว้างสัมพันธ์กับระยะทางที่วัดได้
รูป
วีดีโอ
Code
const int trigPin = 9;
const int echoPin = 10;
int buzzer = 5;
int LED1 = 2;
float duration, distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(LED1, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration*.0343)/2;
Serial.print("ระยะวัตถุ : ");
Serial.print(distance);
Serial.println(" ซม.");
Serial.print("ระยะวัตถุ : ");
Serial.print(distance * 0.39370);
Serial.println(" นิ้ว ");
delay(500);
if (distance < 30 && distance >= 21)
{
digitalWrite(buzzer,HIGH);
digitalWrite(LED1,HIGH);
delay(1000);
digitalWrite(buzzer,LOW);
digitalWrite(LED1,LOW);
delay(1000);
}
else if(distance <=21 && distance >= 11)
{
digitalWrite(buzzer,HIGH);
digitalWrite(LED1,HIGH);
delay(500);
digitalWrite(buzzer,LOW);
digitalWrite(LED1,LOW);
delay(500);
}
else if(distance <=11 && distance >= 6)
{
digitalWrite(buzzer,HIGH);
digitalWrite(LED1,HIGH);
delay(200);
digitalWrite(buzzer,LOW);
digitalWrite(LED1,LOW);
delay(200);
}
else if(distance <=5)
{
digitalWrite(buzzer,HIGH);
digitalWrite(LED1,HIGH);
}
ความคิดเห็น
แสดงความคิดเห็น