STM32F107 :: ขอทราบวิธีการนับความยาวของ Pulse

Started by mrfreeman, August 21, 2013, 09:47:15 PM

Previous topic - Next topic

mrfreeman

สวัสดีครับ

ผมใช้บอร์ด ET-STM32F ARM KIT ซึ่งเป็นตัว STM32F107 ครับ และอยากจะต่อกับโมดูลวัดระยะแบบ Ultrasonic ตัว HC-SR04 เท่าที่ผมอ่านใน Datasheet ของตัว HC-SR04 จะต้องมีการส่งสัญญาณ Trigger 10 uS และนับระยะเวลาที่ได้รับกลับมาจากสัญญาณ Echo ว่ามีค่าเป็น High เป็นระยะเวลากี่ mS และนำระยะเวลาที่ได้มาหารกับ 2.9 จะได้ระยะความยาวไปกลับแบบมิลลิเมตร และทำการค่าที่ได้หาร 2 อีกที จะได้ระยะห่างระหว่าง Module และวัตถุ

แต่ผมไม่ทราบว่าจะ นับระยะเวลาจาก Pulse ที่ได้รับกลับมายังไงครับ ผมขอทราบหลักการและตัวอย่างโค๊ดครับ
ผมใช้งานบน keil ครับ

tha

ลองดูตัวอย่างนี้ครับทำไว้นานแล้วชักจะจำไมได้ หลักการนับเวลาหลังจาก trig แล้วมีสัญญาณ echo กลับ การคำนวณก็ดูตามตัวอย่างกับ data sheet ครับ อีกอย่างขา echo ต้องทนไฟ 5V (5V telarance) นะครับ เพราะ HC-SR04 ใช้ไฟ 5V

tha

อีกหนึ่งตัวอย่างๆนี้วัด echo pulse output นะครับไม่เหมือนตัวอย่างแรกที่วัดระยะระหว่าง trig กับ echo จะใช้ PWM Input Mode ของ TIM3 ในการวัดความกว้างของ pulse ที่ขา echo นะครับ หลังจากที่ trig แล้ว echo pulse output ก็จะเกิดขึ้น proportion กับระยะห่างและก็จะเป็นค่า duty cycle ของ PWM Input แล้วก็จะเก็บค่าไว้ใน register CCR1 (ส่วนค่า period จะเก็บไว้ใน CCR2 แต่เราไม่ได้ใช้ ใช้เฉพาะ duty cycle) เมื่อ interupt เราก็จะอ่านค่า CCR1 (echo pulse output) แล้วนำค่ามาคำนวณอีกทีนึงครับ
http://www.electoday.com/index.php?topic=10007.0


mrfreeman

ขอบคุณมากครับ  ;D
เดี๋ยวผมขอลองดูก่อนครับ

tha