นางสาว กัญญารัตน์ สังขพันธ์ 1สทค.2 6031280023
นาย จารุเดช สังข์ประไพ 1สทค.2 6031280027
HC-SR04
หลักการทำงาน
กกกกกกกกHC-SR04 เป็นเซนเซอร์โมดูลสำหรับตรวจจับวัตถุและวัดระยะทางแบบไม่สัมผัส [1-2] โดยใช้คลื่นอัลตราโซนิก ซึ่งเป็นคลื่นเสียงความถี่สูงเกินกว่าการได้ยินของมนุษย์ วัดระยะได้ตั้งแต่ 2 – 400 เซนติเมตร หรือ 1 – 156 นิ้ว สามารถต่อใช้งานกับไมโครคอนโทรลเลอร์ได้ง่าย ใช้พลังงานต่ำ เหมาะกับการนำไปประยุกต์ใช้งานด้านระบบควบคุมอัตโนมัติ หรืองานด้านหุ่นยนต์ หลักการทำงาน จะเหมือนกันกับการตรวจจับวัตถุด้วยเสียงของค้างคาว ตามรูปที่ 1 โดยจะประกอบไปด้วยตัว รับ-ส่ง อัลตราโซนิก ตัวส่งจะส่งคลื่นความถี่ 40 kHz ออกไปในอากาศด้วยความเร็วประมาณ 346 เมตรต่อวินาที และตัวรับจะคอยรับสัญญาณที่สะท้อนกลับจากวัตถุ เมื่อทราบความเร็วในการเคลื่อนที่ของคลื่น, เวลาที่ใช้ในการเดินทางไป-กลับ (t) ก็จะสามารถคำนวณหาระยะห่างของวัตถุ (S) ได้จาก
S = 346 × 0.5t
เพื่อให้การคำนวณหาระยะเป็นไปด้วยความง่าย โมดูลเซนเซอร์นี้จึงได้ประมวลผลให้เรียบร้อยแล้ว และส่งผลลัพธ์ของการคำนวณเป็นสัญญาณพัลส์ที่มีความกว้างสัมพันธ์กับระยะทางที่วัดได้
การต่อใช้งาน
โมดูลนี้มีจุดต่อใช้งานทั้งหมด 4 จุด การใช้งานบอร์ด STM32F4DISCOVERY การทดลองในเบื้องต้นสามารถต่อวงจรอย่างง่ายได้โดยใช้โปรโตบอร์ดและสายไฟต่อวงจรตามรูปที่ 2 ทั้งนี้ต้องตรวจสอบคุณสมบัติของพอร์ตของไมโครคอนโทรลเลอร์จากดาต้าชีท [3] ว่าสามารถทนระดับแรงดันลอจิก High (5V) ได้
1. ขา VCC สำหรับต่อแรงดันไฟเลี้ยงไม่เกิน 5V
2. ขา Trig เป็นขาอินพุตรับสัญญาณพัลส์ความกว้าง 10 ไมโครวินาทีเพื่อกระตุ้นการสร้างคลื่นอัลตราโซ นิกความถี่ 40KHz ออกสู่อากาศจากตัวส่ง
3. ขา Echo เป็นขาเอาต์พุตสำหรับส่งสัญญาณพัลส์ออกจากโมดูลไปยังไมโครคอนโทรลเลอร์ เพื่อตรวจ จับความกว้างของสัญญาณพัลส์และคำนวณเป็นระยะทาง
4. ขา GND สำหรับต่อจุดกราวด์ร่วมแรงดันและสัญญาณ
dddddddตามคุณลักษณะของเซนเซอร์ จะต้องสร้างสัญญาณพัลส์ความกว้างไม่น้อยกว่า 10 msec ป้อนเข้าที่ขา Trig หลังจากนั้นอีกประมาณ 1.4 msec จึงจะเริ่มมีสัญญาณพัลส์เกิดขึ้นที่ขา Echo มีความกว้างของสัญญาณตั้งแต่ 150 usec – 25 msec ซึ่งถ้าหากกว้างกว่านี้จะถือว่าตรวจไม่พบวัตถุ หลังจากนั้นควรหน่วงเวลาออกไปอีก 10 mS จึงจะส่งสัญญาณ Trig ออกไปอีกรอบ
การตรวจจับความกว้างของสัญญาณใช้โมดูล PWM Capture ซึ่งให้เอาต์พุตออกมาเป็นเวลาในหน่วยวินาที และใช้สมการ (2) หรือ (3) เพื่อคำนวณหาระยะทางระหว่างวัตถุที่ตรวจพบ
ระยะทาง (cm) = ความกว้างของสัญญาณ Echo * 106 /58 (2)
ระยะทาง (inch) = ความกว้างของสัญญาณ Echo * 106 /148 (3)
การใช้งานเซนเซอร์วัดระยะทาง HC-SR04
อุปกรณ์
1. ตัวต้านทาน 220 Ω 6 ตัว
2. สายไฟผู้-ผู้
3. เซนเซอร์อัลตราโซนิก HC-SR04
4. บอร์ด Arduino 1 บอร์ด
5. โปรโตรบอร์ด 1 บอร์ด
6. LED 6 ดวง
รูปวงจร
Download Frizing file ที่นี่
Code Program Arduino
const int trigPin = 9;
const int echoPin = 10;
int ledGreen1=2;
int ledGreen2=3;
int ledYellow1=4;
int ledYellow2=5;
int ledRed1=6;
int ledRed2=7;
float duration, distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode (ledGreen1, OUTPUT);
pinMode (ledGreen2, OUTPUT);
pinMode (ledYellow1, OUTPUT);
pinMode (ledYellow2, OUTPUT);
pinMode (ledRed1, OUTPUT);
pinMode (ledRed2, 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("Distance: ");
Serial.print(distance);
Serial.print(" cm");
Serial.println();
if (distance >=21)
{
digitalWrite(ledGreen1, HIGH);
digitalWrite(ledGreen2, HIGH);
}
else
{
digitalWrite(ledYellow1,LOW);
digitalWrite (ledYellow2,LOW);
digitalWrite (ledRed1,LOW);
digitalWrite (ledRed2,LOW);
}
if (distance >=11)
{
digitalWrite (ledYellow1,HIGH);
digitalWrite (ledYellow2,HIGH);
}
else
{
digitalWrite (ledRed1,LOW);
digitalWrite (ledRed2,LOW);
}
if (distance >=6)
{
digitalWrite (ledRed1,HIGH);
digitalWrite (ledRed2,HIGH);
}
if (distance <=6)
{
digitalWrite (ledGreen1, HIGH);
digitalWrite (ledGreen2, HIGH);
digitalWrite(ledYellow1,HIGH);
digitalWrite (ledYellow2,HIGH);
digitalWrite (ledRed1,HIGH);
digitalWrite (ledRed2,HIGH);
delay(300);
digitalWrite (ledGreen1, LOW);
digitalWrite (ledGreen2, LOW);
digitalWrite(ledYellow1,LOW);
digitalWrite (ledYellow2,LOW);
digitalWrite (ledRed1,LOW);
digitalWrite (ledRed2,LOW);
}
if (distance>30)
{
digitalWrite (ledGreen1, LOW);
digitalWrite (ledGreen2, LOW);
digitalWrite(ledYellow1,LOW);
digitalWrite (ledYellow2,LOW);
digitalWrite (ledRed1,LOW);
digitalWrite (ledRed2,LOW);
}
delay(100);
}
Download Arduino Code ที่นี่
อธิบายวงจร
เมื่อเรานำสิ่งของมาบังเซนเซอร์วัดระยะทาง HC-SR04ตามระยะทางที่กำหนดคือ 21-30 ซม. LED หลอดสีเขียวจะติด และเมื่อเข้าใกล้มาอีกเป็นระยะทางตั้งแต่ 11-20 ซม. LED หลอดสีเหลืองจะติด และ LED สีเขียวก็ยังคงติดอยู่เช่นกัน ต่อมาก็ขยับเข้ามาเป็นระยะตั้งแต่ 6-10 ซม. หลอด LED สีแดง จะติดรวมทั้งสีเหลืองและสีเขียวด้วย และเมื่อเข้าใกล้มากกว่า 6 ซม. หลอดไฟทั้ง 6 ดวง จะกระพริบพร้อมกัน 0.3 วินาที และ Serial Monitor ในโปรแกรม Arduino ก็จะแสดงระยะทางของเซ็นเซอร์
วิดีโอประกอบ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น