นางสาวจริญญา แสงวงศ์ 1 สทค 2 รหัส 026
นางสาวจิรนันท์ จานศิลา 1 สทค 2 รหัส 028
การใช้งานเซนเซอร์วัดระยะทาง HC-SR04
หลักการทำงาน
HC-SR04 เป็นเซนเซอร์โมดูลสำหรับตรวจจับวัตถุและวัดระยะทางแบบไม่สัมผัส [1-2]
โดยใช้คลื่นอัลตราโซนิก
ซึ่งเป็นคลื่นเสียงความถี่สูงเกินกว่าการได้ยินของมนุษย์ วัดระยะได้ตั้งแต่ 2
– 400 เซนติเมตร หรือ 1 – 156 นิ้ว
สามารถต่อใช้งานกับไมโครคอนโทรลเลอร์ได้ง่าย ใช้พลังงานต่ำ เหมาะกับการนำไปประยุกต์ใช้งานด้านระบบควบคุมอัตโนมัติ
หรืองานด้านหุ่นยนต์ หลักการทำงาน
จะเหมือนกันกับการตรวจจับวัตถุด้วยเสียงของค้างคาว ตามรูปที่ 1 โดยจะประกอบไปด้วยตัว รับ-ส่ง อัลตราโซนิก ตัวส่งจะส่งคลื่นความถี่ 40
kHz ออกไปในอากาศด้วยความเร็วประมาณ 346 เมตรต่อวินาที
และตัวรับจะคอยรับสัญญาณที่สะท้อนกลับจากวัตถุ
เมื่อทราบความเร็วในการเคลื่อนที่ของคลื่น, เวลาที่ใช้ในการเดินทางไป-กลับ
(t) ก็จะสามารถคำนวณหาระยะห่างของวัตถุ (S) ได้จาก S = 346 × 0.5t
รุ่น HC-SR04
เป็นรุ่นที่ถูกนิยมใช้งานมากที่สุด
การสื่อสารกับไมโครคอนโทรลเลอร์จะใช้วิธีทริกสัญญาณ ขาใช้งานจะมี 4 ขา คือขา VCC Trig Echo และ GND ในรุ่นนี้รองรับแรงดันไฟเลี้ยงที่ 5V กรณีที่แรงดันไฟเลี้ยงน้อยกว่า
5V โมดูลจะไม่สามารถทำงานได้ตามปกติ
รูปที่ 1 หลักการตรวจจับและวัดระยะห่างระหว่างวัตถุด้วยคลื่นเสียง
เพื่อให้การคำนวณหาระยะเป็นไปด้วยความง่าย
โมดูลเซนเซอร์นี้จึงได้ประมวลผลให้เรียบร้อยแล้ว
และส่งผลลัพธ์ของการคำนวณเป็นสัญญาณพัลส์ที่มีความกว้างสัมพันธ์กับระยะทางที่วัดได้
การต่อใช้งานโมดูล
โมดูลนี้มีจุดต่อใช้งานทั้งหมด
4 จุด การใช้งานบอร์ด Arduino การทดลองในเบื้องต้นสามารถต่อวงจรอย่างง่ายได้โดยใช้โปรโตบอร์ดและสายไฟต่อวงจรตามรูปที่
2 ทั้งนี้ต้องตรวจสอบคุณสมบัติของพอร์ตของไมโครคอนโทรลเลอร์จากดาต้าชีท
[3] ว่าสามารถทนระดับแรงดันลอจิก High (5V) ได้
- ขา VCC สำหรับต่อแรงดันไฟเลี้ยงไม่เกิน 5V
- ขา Trig เป็นขาอินพุตรับสัญญาณพัลส์ความกว้าง 10 ไมโครวินาทีเพื่อกระตุ้นการสร้างคลื่นอัลตราโซนิกความถี่ 40KHz ออกสู่อากาศจากตัวส่ง
- ขา Echo เป็นขาเอาต์พุตสำหรับส่งสัญญาณพัลส์ออกจากโมดูลไปยังไมโครคอนโทรลเลอร์ เพื่อตรวจจับความกว้างของสัญญาณพัลส์และคำนวณเป็นระยะทาง
- ขา GND สำหรับต่อจุดกราวด์ร่วมแรงดันและสัญญาณ
รูปที่ 2 การต่อใช้งานโมดูลอัลตราโซนิก HC-SR04
ในการสื่อสารข้อมูลกับโมดูล
HC-SR04 ใช้ขาสัญญาณ 2 ขา คือ Trigger
และ Echo โดยขา Trigger มีไว้สำหรับสั่งงานให้โมดูล
HC-SR04 ส่งคลื่นอัลตร้าโซนิกออกไปข้างหน้า
เมื่อคลื่นอัลตร้าโซนิกสะท้อนกลับมาจากวัตถุเป้าหมาย จะส่งสัญญาณพัลส์ออกมาทางขา Echo
โดยสัญญาณนี้จะมีความกว้างที่สัมพันธ์กับระยะทางที่วัดได้ ดังนั้น
ไมโครคอนโทรลเลอร์จะต้องส่งสัญญาณพัลส์ที่มีความกว้างพัลส์อย่างน้อย 10 ไมโครวินาทีไปยังขา Trigger ของโมดูล HC-SR04
แล้วรอรับสัญญาณพัลส์ที่ส่งกลับมาทางขา Echo เพื่อวัดความกว้างของสัญญาณพัลส์
ตามคุณลักษณะของเซนเซอร์
จะต้องสร้างสัญญาณพัลส์ความกว้างไม่น้อยกว่า 10 msec ป้อนเข้าที่ขา
Trig หลังจากนั้นอีกประมาณ 1.4 msec จึงจะเริ่มมีสัญญาณพัลส์เกิดขึ้นที่ขา
Echo มีความกว้างของสัญญาณตั้งแต่ 150 usec – 25 msec
ซึ่งถ้าหากกว้างกว่านี้จะถือว่าตรวจไม่พบวัตถุ
หลังจากนั้นควรหน่วงเวลาออกไปอีก 10 mS จึงจะส่งสัญญาณ Trig
ออกไปอีกรอบ ตามรูปที่ 3
รูปที่ 3 สัญญาณที่ขา Trig และขา Echo ของโมดูลเซนเซอร์อัลตราโซนิก
HC-SR04
การตรวจจับความกว้างของสัญญาณใช้โมดูล
PWM Capture ซึ่งให้เอาต์พุตออกมาเป็นเวลาในหน่วยวินาที
และใช้สมการ (2) หรือ (3) เพื่อคำนวณหาระยะทางระหว่างวัตถุที่ตรวจพบ
ระยะทาง (cm) = ความกว้างของสัญญาณ Echo * 106 /58
ระยะทาง (inch) = ความกว้างของสัญญาณ Echo * 106 /148
อ้างอิงข้อมูลจาก : http://aimagin.com/blog/อัลตราโซนิก-hc-sr04/?lang=th
การใช้งานเซนเซอร์วัดระยะทาง HC-SR04
ร่วมกับบอร์ด Arduino
อุปกรณ์ที่ใช้
1.บอร์ด Arduino 1 ตัว
2.สาย USB 1 เส้น
3.โฟโต้บอร์ด 1 อัน
4.ไฟ LED 6 ดวง
5.ตัวต้านทาน 220 Ω 6 ตัว
6. HC-SR04 1 ตัว
6. HC-SR04 1 ตัว
7.สายไฟผู้-ผู้ 11 เส้น
8.โปรแกรม Arduino
9.PC / NoteBook
9.PC / NoteBook
รูปวงจร (Fritzing)
คลิก Download เพื่อดาวน์โหลดรูปไปแก้เพิ่มเติม แต่ทั้งนี้ต้องมีโปรแกรม Fritzing อยู่ในเครื่องคอม ฯ ของเราก่อนนะคะ หากไม่มีสามารถโหลดได้ที่ DownloadProgramFritzing
Code : โปรแกรม Arduino
หลักการทำงาน มีดังนี้
- ถ้า ระยะทางตั้งแต่ 21 – 30 ซม. Led สีเขียวติด 2 ดวง
- ถ้า ระยะทางตั้งแต่ 11 – 20 Led สีเหลืองติด 2 ดวง (สีเขียว ยังคงติด)
- ถ้า ระยะทางตั้งแต่ 6 - 10 Led สีแดงติด 2 ดวง (สีเขียว และ เหลือง ยังคงติด)
- ถ้า ระยะทาง น้อยกว่า 6 ให้ Led กระพริบทั้ง 6 ดวง (ติด 0.3 วินาที ดับ 0.3 วินาที)
- ถ้าเงื่อนไขนอกจากนี้ให้ Led ดับทั้งหมด
- ถ้า ระยะทางตั้งแต่ 21 – 30 ซม. Led สีเขียวติด 2 ดวง
- ถ้า ระยะทางตั้งแต่ 11 – 20 Led สีเหลืองติด 2 ดวง (สีเขียว ยังคงติด)
- ถ้า ระยะทางตั้งแต่ 6 - 10 Led สีแดงติด 2 ดวง (สีเขียว และ เหลือง ยังคงติด)
- ถ้า ระยะทาง น้อยกว่า 6 ให้ Led กระพริบทั้ง 6 ดวง (ติด 0.3 วินาที ดับ 0.3 วินาที)
- ถ้าเงื่อนไขนอกจากนี้ให้ Led ดับทั้งหมด
/*
* HC-SR04 example sketch
*
* https://create.arduino.cc/projecthub/Isaac100/getting-started-with-the-hc-sr04-ultrasonic-sensor-036380
*
* by Isaac100
*/
const int trigPin = 9;
const int echoPin = 10;
int LED1=3;
int LED2=4;
int LED3=5;
int LED4=6;
int LED5=7;
int LED6=8;
float duration, distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode (LED1,OUTPUT);
pinMode (LED2,OUTPUT);
pinMode (LED3,OUTPUT);
pinMode (LED4,OUTPUT);
pinMode (LED5,OUTPUT);
pinMode (LED6,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.println(distance);
delay(100);
if(distance <= 30)
{
digitalWrite (LED1,HIGH);
digitalWrite (LED2,HIGH);
}
if(distance > 30)
{
digitalWrite (LED1,LOW);
digitalWrite (LED2,LOW);
}
if(distance <= 20)
{
digitalWrite (LED3,HIGH);
digitalWrite (LED4,HIGH);
}
if(distance > 20)
{
digitalWrite (LED3,LOW);
digitalWrite (LED4,LOW);
}
if(distance <= 10)
{
digitalWrite (LED5,HIGH);
digitalWrite (LED6,HIGH);
}
if(distance > 10)
{
digitalWrite (LED5,LOW);
digitalWrite (LED6,LOW);
}
if(distance <= 6)
{
digitalWrite (LED1,HIGH);
digitalWrite (LED2,HIGH);
digitalWrite (LED3,HIGH);
digitalWrite (LED4,HIGH);
digitalWrite (LED5,HIGH);
digitalWrite (LED6,HIGH);
delay(300);
digitalWrite (LED1,LOW);
digitalWrite (LED2,LOW);
digitalWrite (LED3,LOW);
digitalWrite (LED4,LOW);
digitalWrite (LED5,LOW);
digitalWrite (LED6,LOW);
delay(300);
}
delay(300);
}
คลิก DownloadCode เพื่อนำไปแก้ไขเพิ่มเติม แต่ทั้งนี้ต้องมีโปรแกรม Arduino อยู่ในเครื่องคอม ฯ ของเราก่อนนะคะ หากไม่มีสามารถโหลดได้ที่ DownloadArduino
ไม่มีความคิดเห็น:
แสดงความคิดเห็น