รหัสสินค้า | SKU-00029 |
หมวดหมู่ | Sensor ( เซ็นเซอร์ ) |
ราคา | 149.00 บาท |
สถานะสินค้า | พร้อมส่ง |
ลงสินค้า | 23 ก.พ. 2557 |
อัพเดทล่าสุด | 2 มี.ค. 2557 |
คงเหลือ | ไม่จำกัด |
จำนวน | ชิ้น |
Ultrasonic Sensor Module (อัลตราโซนิก)
หลักการทำงานของโมดูลวัดระยะห่างด้วยคลื่นอัลตร้าโซนิคโมดูล HC-SR04 เป็นอุปกรณ์อิเล็กทรอนิกส์ราคาถูก สำหรับวัดระยะห่างด้วยคลื่นอัลตราโซนิค (ใช้คลื่นเสียงความถี่ ประมาณ 40kHz) มีสองส่วนหลักคือ ตัวส่งคลื่นที่ทำหน้าที่สร้างคลื่นเสียงออกไปในการวัดระยะแต่ละครั้ง ("Ping") แล้วเมื่อไปกระทบวัตถุหรือสิ่งกีดขวาง คลื่นเสียงถูกสะท้อนกลับมายังตัวรับแล้วประมวลผลด้วยวงจรอิเล็กทรอนิกส์ภายในโมดูล ถ้าจับเวลาในการเดินทางของคลื่นเสียงในทิศทางไปและกลับ และถ้าทราบความเร็วเสียงในอากาศ ก็จะสามารถคำนวณระยะห่างจากวัตถุกีดขวางได้
![]() รูปภาพอุปกรณ์ HC-SR04 โมดูล HC-SR04 ทำงานที่แรงดันประมาณ +5V (4.5V ถึง +5.5V) โดยป้อนให้ขา VCC และ GND โมดูลนี้ มีขาสัญญาณดิจิทัล TRIG (อินพุต) และ ECHO (เอาต์พุต) ที่นำไปเชื่อมต่อกับไมโครคอนโทรลเลอร์ได้ อย่างเช่น Arduino ในการวัดระยะห่างแต่ละครั้ง จะต้องสร้างสัญญาณแบบ Pulse ที่มีความกว้าง (Pulse Width) อย่างน้อย 10 usec ป้อนให้ขา TRIG และหลังจากนั้นให้วัดความกว้างของสัญญาณช่วง HIGH จากขา ECHO ถ้าวัตถุอยู่ใกล้ ความกว้างของสัญญาณ Pulse ที่ได้ก็จะน้อย แต่ถ้าวัตถุอยู่ไกลออกไป ก็จะได้ค่าความกว้างของสัญญาณ Pulse ที่มากขึ้น การเลือกใช้งานโมดูลประเภทนี้ มีประเด็นที่สำคัญ เช่น ช่วงระยะห่างของการวัด ความกว้างของมุมเมื่อคลื่นเสียงเดินทางออกไปจากตัวส่ง (เรียกว่า Beam Angle) นอกจากนั้น การสะท้อนกลับของคลื่นเสียงที่วัตถุกีดขวาง ขนาดและรูปทรงของวัตถุ และการสะท้อนกลับของเสียงจากหลายทิศทาง หรือต่างระยะกัน ก็มีผลต่อความถูกต้องหรือความผิดพลาดในการวัดค่าระยะห่างได้เช่นกัน ข้อมูลเชิงเทคนิคของโมดูล HC-SR04
ศึกษาข้อมูลเพิ่มเติมได้จากเอกสารต่อไปนี้ |
พฤติกรรมการทำงานของโค้ด Arduino Sketchโค้ดตัวอย่างนี้ จะทำให้ Arduino ส่งสัญญาณ Pulse ความกว้างอย่างน้อย 10 usec ออกไปที่ขาเอาต์พุต TRIG จากนั้นจึงวัดความกว้างของสัญญาณ Pulse ที่เป็นอินพุตจากขา ECHO โดยใช้คำสั่ง pulseIn() ซึ่งเป็นคำสั่งของ Arduino และจะได้ค่าเป็นจำนวนเต็ม (หน่วยเป็นไมโครวินาที) จากนั้นนำค่าที่ได้มาคำนวณเป็นระยะทาง (หน่วยเป็นมิลลิเมตร) ในกรณีที่ได้ค่ามากกว่า 4000 (เกิน 4m หรือ 400cm) จะทำการวัดค่าใหม่ จนกว่าจะได้ค่าระยะห่างไม่เกิน 4000 เมื่อได้ค่าที่ถูกต้อง จะแสดงค่าทาง Serial แล้วเว้นระยะเวลาประมาณ 300 msec (0.3 วินาที) แล้วทำขั้นตอนซ้ำ |
Arduino Sketch////////////////////////////////////////////////////////////////// // Author: RSP @ ESL (Embedded System Lab), KMUTNB // Date: 16-Jul-2013 // Target Board: Arduino Uno (ATmega328P, 5V, 16MHz) // Arduino IDE: version 1.0.5 // HC-SR04 Ultrasonic module (using VCC=5V) #define ECHO_PIN 3 // Echo Pin (Input) -- from the ECHO pin of HC-SR04 #define TRIG_PIN 5 // Trigger Pin (Output) -- to the TRIG pin of HC-SR04 void setup() { pinMode( TRIG_PIN, OUTPUT ); pinMode( ECHO_PIN, INPUT ); digitalWrite( TRIG_PIN, LOW ); // output LOW to the TRIG pin Serial.begin( 115200 ); // initialize serial, use baudrate=115200 } void loop() { unsigned long duration_usec; unsigned long distance_mm; // v = 340 m/s = (340 * 100)/10^6 cm/usec = 34/1000 cm/usec // 2*d = v*t => d = v*t/2 = (17*t)/1000 cm = (17*t)/100 mm. while (1) { duration_usec = ping(); distance_mm = (17*duration_usec)/100; if ( distance_mm > 4000 ) { // out of range (beyond 4 meters) // Serial.println( "Out of range!" ); continue; } Serial.print( "Distance: " ); Serial.print( distance_mm / 10 ); Serial.print( '.' ); Serial.print( distance_mm % 10 ); Serial.println( " cm" ); break; } delay(300); } unsigned long ping() { // send a pulse (at least 10 usec long) to the TRIG pin digitalWrite( TRIG_PIN, HIGH ); delayMicroseconds( 12 ); digitalWrite( TRIG_PIN, LOW ); // measure the ECHO pulse width (in microseconds) unsigned long duration_usec = pulseIn( ECHO_PIN, HIGH ); return duration_usec; } |
http://www.ee.kmutnb.ac.th/eerobot/esl/learning/index.php?article=hc-sr04-ultrasonic
หน้าที่เข้าชม | 124,129 ครั้ง |
ผู้ชมทั้งหมด | 51,783 ครั้ง |
เปิดร้าน | 11 ธ.ค. 2556 |
ร้านค้าอัพเดท | 10 ส.ค. 2568 |