ใบงานที่ 4 การใช้งานเซนเซอร์วัดระยะทาง HC-SR04

ผู้จัดทำ

นางสาวจีรพร  ศรีบุญ  006
นางสาวพิมพ์พิชชา  แสงแจ่ม  037


ทฤษฎี HC-SR04

            HC-SR04 เป็นเซนเซอร์โมดูลสำหรับตรวจจับวัตถุและวัดระยะทางแบบไม่สัมผัส [1-2] โดยใช้คลื่นอัลตราโซนิก ซึ่งเป็นคลื่นเสียงความถี่สูงเกินกว่าการได้ยินของมนุษย์ วัดระยะได้ตั้งแต่ 2 – 400 เซนติเมตร หรือ 1 – 156 นิ้ว สามารถต่อใช้งานกับไมโครคอนโทรลเลอร์ได้ง่าย ใช้พลังงานต่ำ เหมาะกับการนำไปประยุกต์ใช้งานด้านระบบควบคุมอัตโนมัติ หรืองานด้านหุ่นยนต์ หลักการทำงาน จะเหมือนกันกับการตรวจจับวัตถุด้วยเสียงของค้างคาว ตามรูปที่ 1 โดยจะประกอบไปด้วยตัว รับ-ส่ง อัลตราโซนิก ตัวส่งจะส่งคลื่นความถี่ 40 kHz ออกไปในอากาศด้วยความเร็วประมาณ 346 เมตรต่อวินาที และตัวรับจะคอยรับสัญญาณที่สะท้อนกลับจากวัตถุ เมื่อทราบความเร็วในการเคลื่อนที่ของคลื่น, เวลาที่ใช้ในการเดินทางไป-กลับ (t) ก็จะสามารถคำนวณหาระยะห่างของวัตถุ (S) ได้จาก
 S = 346 × 0.5t                                    (1)
รูปที่ 1 หลักการตรวจจับและวัดระยะห่างระหว่างวัตถุด้วยคลื่นเสียง

เพื่อให้การคำนวณหาระยะเป็นไปด้วยความง่าย โมดูลเซนเซอร์นี้จึงได้ประมวลผลให้เรียบร้อยแล้ว และส่งผลลัพธ์ของการคำนวณเป็นสัญญาณพัลส์ที่มีความกว้างสัมพันธ์กับระยะทางที่วัดได้
อุปกรณ์ที่ใช้ 


1.โฟโต้บอร์ด
2.สายอัปโหลด
3.บอร์ด Arduino
4.หลอด LED 6 ดวง
5.HC-SR04
6.สายแพผู้-ผู้
7.ตัวต้านทาน

รูปวงจร


Download คลิก

คำอธิบาย

ถ้าระยะทางตั้งแต่ 21-30 ซม. LED สีเขียวติด 2 ดวง
ถ้าระยะทางตั้งแต่ 11-20 ซม. LED สีเหลืองติด 2 ดวง(สีเขียว ยังคงติด)
ถ้าระยะทางตั้งแต่ 6-10 ซม. LED สีแดงติด 2 ดวง(สีเขียวและสีเหลือง ยังคงติด)
ถ้าระยะ น้อยกว่า 6 ให้ LE กระพริบทั้ง 6 ดวง (ติด 0.3 วินาที ดับ 0.3 วินาที)


Code

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);
}

Download คลิก

วิดีโอ


ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ใบงานที่ 6 การควบคุม servo motor (SG90) ด้วย Arduino UNO R3

ใบงานที่ 7 Measure Distance with Arduino and Ultrasonic Sensor