วันจันทร์ที่ 26 มีนาคม พ.ศ. 2561

ใบงานที่ 4 การใช้งานเซนเซอร์วัดระยะทาง HC-SR04 - ถ้า ระยะทางตั้งแต่ 21 – 30 ซม. Led สีเขียวติด 2 ดวง - ถ้า ระยะทางตั้งแต่ 11 – 20 Led สีเหลืองติด 2 ดวง (สีเขียว ยังคงติด) - ถ้า ระยะทางตั้งแต่ 6 - 10 Led สีแดงติด 2 ดวง (สีเขียว และ เหลือง ยังคงติด) - ถ้า ระยะทาง น้อยกว่า 6 ให้ Led กระพริบทั้ง 6 ดวง (ติด 0.3 วินาที ดับ 0.3 วินาที) - ถ้าเงื่อนไขนอกจากนี้ให้ Led ดับทั้งหมด บน serial monitor ให้แสดงระยะทางหน่วยเป็น ซม.

นางสาว กัญญารัตน์  สังขพันธ์ 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  ก็จะแสดงระยะทางของเซ็นเซอร์

วิดีโอประกอบ








ไม่มีความคิดเห็น:

แสดงความคิดเห็น