- โมดูลนี้ใช้สำหรับวัดระยะห่างจากวัตถุหรือสิ่งกีดขวาง โดยส่งสัญญาณเสียงความถี่สูง
- ใช้แรงดันไฟเลี้ยง +5V
- ในการสื่อสารกับไมโครคอนโทรลเลอร์ จะมีขา TRIG และ ECHO รับสัญญาณ Pulse ที่ขา TRIG และส่งสัญญาณเอาต์พุตออกที่ขา ECHO
- ระยะห่างจากวัตถุให้คำนวณจากความกว้างช่วง HIGH ของสัญญาณ ECHO
- สำหรับ Arduino จะใช้คำสั่ง PulseIn() เพื่อวัดความกว้างในหน่วยเป็นไมโครวินาที (microseconds)
โจทย์ 1.1
- ทดลองใช้งานโมดูล HC-SR04
- เขียนโค้ด Arduino โดยไม่ใช่คำสั่ง PulseIn() ของ Arduino แต่ให้ใช้ Timer1 เพื่อวัดความกว้างของช่วงเวลา (ใช้ Timer1 สร้างฐานเวลาในการนับ)
- ใช้ External Interrupt 0 หรือ 1 และใช้ ISR ที่เกี่ยวข้องอ่านค่าเวลา 2 ครั้ง (ขอบขาขึ้นและขอบขาลงของสัญญาณ ECHO) แล้วนำมาคำนวณช่วงกว้างของ HIGH แล้วนำค่าที่ได้ไปคำนวณระยะห่างจากสิ่งกีดขวาง
- ใช้ออสซิลโลสโคปดูสัญญาณ ทั้ง TRIG และ ECHO
- ต่อวงจรใช้งานโมดูล 16x2 LCD เพื่อแสดงผล
Timer1
- เป็นตัวนับขนาด 16 บิต นับได้ตั้งแต่ 0 ถึง 65535
- การใช้งานกับ Arduino Uno ใช้ในการสร้างสัญญาณ PWM (Servo) และทำงานในโหมด Phase Correct PWM
Phase Correct PWM (Count 0>>255, 255>>0)ใช้วิธีนับขึ้น (BOTTOM to TOP) แล้วตามด้วยการนับลง (TOP to BOTTOM) ต่อหนึ่งคาบ
- เริ่มนับจาก BOTTOM ไปยัง TOP จากนั้นจะนับถอยหลังไปยัง BOTTOM
- Timer/Counter Overflow Flag (TOV0) ถูกเซตให้เป็น 1 เมื่อนับถึง BOTTOM และใช้สร้างอินเทอร์รัพท์ได้
โจทย์ 1.2
- เหมือน 1.1 แต่เปลี่ยนไปใช้ Pin Change Interrupt แทน External Interrupt
ไม่มีความคิดเห็น:
แสดงความคิดเห็น