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

นางสาวกิตติญากร ขาวใบไม้ 6031280024
นางสาวกิตติมา อุดมปัญญาศิริกุล 6031280025
ปวส.1/2 คอมพิวเตอร์ซอฟต์แวร์


Servo คืออุปกรณ์มอเตอร์ ที่สามารถควบคุมการหมุนที่แม่นยำ เซอร์โวชุดนี้มีขนาดเล็กแรงบิด 1.2-1.4 KG/cm สีน้ำตาลเป็นสายกราวด์ สีแดงเป็นไฟเข้า 4.8-7.2V สีส้มเป็นสัญญาณอินพุต หมุนได้ 180 องศา ส่วนใหญ่ต่อเข้ากับ Pin ของ Arduino UNO R3 ที่สามารถใช้งาน PWM Signal ได้ เช่น D3 , D5 , D6 , D9 , D10 , D11


 Servo เป็นคำศัพท์ที่ใช้กันทั่วไปในระบบควบคุมอัตโนมัติ มาจากภาษาละตินคำว่า Sevus หมายถึง “ทาส” (Slave) ในเชิงความหมายของ Servo Motor ก็คือ Motor ที่เราสามารถสั่งงานหรือตั้งค่า แล้วตัว Motor จะหมุนไปยังตำแหน่งองศาที่เราสั่งได้เองอย่างถูกต้อง โดยใช้การควบคุมแบบป้อนกลับ (Feedback Control)


HC-SR04
เป็นโมดูลวัดระยะทางที่ใช้หลักการสะท้อนของคลื่นอัลตร้าโซนิก ราคาประหยัด โดยตัว HC-SR04 มีแหล่งกำเนิดคลื่นอัลตร้าโซนิกส่งไปสะท้อนกับวัตถุที่อยู่ข้างหน้ากลับมายังตัวรับสัญญาณ โดยระยะทางที่วัดได้จะสัมพันธ์กับระยะเวลาที่คลื่นอัลตร้าโซนิกเคลื่อนที่ไปกระทบวัตถุและสะท้อนกลับมายังตัวรับ เมื่อรู้ระยะเวลาที่คลื่นอัลตร้าโซนิกสะท้อนกลับมา จึงนำมาคำนวณหาเป็นระยะทางระหว่างโมดูล HC-SR04 กับวัตถุได้ โดยโมดูล HC-SR04 วัดระยะทางในช่วง 2 ถึง 500 ซม. (5 เมตร) มีความละเอียดอยู่ที่ 0.3 ซม. ใช้ไฟเลี้ยง +5V




ใบงานที่ 7 Measure Distance with Arduino and Ultrasonic Sensor
- วัดระยะทางแสดงผลโดยใช้ Servo motor (เข็มชี้ตัวเลข)
- Monitor แสดงผล ระยะทางในหน่วยของ นิ้ว และ เซนติเมตร
- Monitor แสดงผล มุมของ Servo (Angle)


อุปกรณ์

  1. โปรโตบอร์ด
  2. บอร์ดArduino Uno R3
  3. สายไฟผู้ผู้
  4. สายอัพโหลด
  5. ตัวต้านทาน
  6. Servo Motor (SG90)
  7. HC-SR04

รูปวงจร



https://drive.google.com/open?id=1KFBVomHFZsuSTD9ZjH9K6h1dLWClIaOg

#include <Servo.h> 
int trigPin=13; 
int echoPin=11;
int servoControlPin=6; 
float pingTime;
float targetDistance; 
float speedOfSound=776.5;
float servoAngle;

Servo myPointer; 

void setup() {

  Serial.begin(9600);
  pinMode(servoControlPin, OUTPUT);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  
  myPointer.attach(servoControlPin); 

}

void loop() {
  
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2000);
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(15); 
  digitalWrite(trigPin, LOW);
  delayMicroseconds(10); 
  
  pingTime = pulseIn(echoPin, HIGH); 
  pingTime=pingTime/1000000; 
  pingTime=pingTime/3600; 
  targetDistance= speedOfSound * pingTime;  
  targetDistance=targetDistance/2; 
  targetDistance= targetDistance*63360; 
  
  Serial.print("The Distance to Target is: ");
  Serial.print(targetDistance*2.54);
  Serial.println(" CM  ");

  Serial.print("The Distance to Target is: ");
  Serial.print(targetDistance);
  Serial.println("  IN  ");
  
  
  servoAngle = (106./7.) * targetDistance + 37; 
  myPointer.write(servoAngle); 
  Serial.println(servoAngle);
  delay(100);

}

วิดีโอ

ความคิดเห็น

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

เทคนิคการอินเตอร์เฟส (Interfacing Techich)

ใบงานที่ 1 ไฟวิ่ง 8 ดวง

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