เครื่องวัดระยะทางด้วยโมดูล HC-SR04 กับ PIC16F688

Started by ozuke, September 13, 2013, 01:05:14 AM

Previous topic - Next topic

ozuke

พอดีช่วงนี้เรียนไมโครโปรเซสเซอร์ แต่อาจารย์ให้ทำ Mini Project Micro controller
เลยรื้อของเก่ามาเจอะเจ้า PIC16F688 จำได้ว่าซื้อจากเว็ปนี้หล่ะนานแล้วจำไม่ได้ว่าใครเอามาขาย
ตอนแรกทำ MCS-51 ก็ใช้ได้แล้วครับ พอมาดูโจทย์ที่อาจารย์อีกที ทำ Display ผิดแบบเลยทำใหม่

การทำงานของโปรแกรมจะใช้การ Interrupt ของ External Interrupt ทั้งขอบขาขึ้นและขาลงซึ่งมันใช้ได้ทีละโหมด
จะสั่งเกตุได้จากโค้ดที่ผมเขียนเอาไว้นะครับตรง #INT_EXT ครับ
เมื่อเรา Trig สัญญาเข้าโมดูล HC-SR04 ไปแล้วโมดูลจะให้พลัส์ออกมาสัมพันธ์กับระยะทางตามสมการ

S = Time pulse on * 340 / 2 M.

เมือ Timer pulse on คือเวลาที่อ่านได้จากขา Echo ของโมดูล
340 คือความเร็วเสียงในอากาศ สามารถปรับเปลี่ยนตามความเหมาะสม
S คือระยะทางหน่วยเป็นเมตร
จากโค้ดที่ผมเขียนจะไม่ได้คำนวนเหมือนสมการข้างต้นเพราะผมจะให้ MCU ทำงานน้อยที่สุดเลยทำการคำนวนสมการไปบ้างแล้ว
โดยที่ค่าจากตัวแปร time ที่ผมอ่านมาจะต้องคำนวนเป็นเวลาจริงๆก่อนคือ

OSC = 8MHz
Timer 1 Prescell = 1

ดังนั้นจะได้ว่า

time = timer 1 value/(OSC/4) Sec.
        = timer 1 value/2000000 Sec.

เมื่อผมให้ MCU จับพัลส์จากขา Echo มาได้ผมก็จะเอามาหาค่าเวลาจริงแล้วนำไปหาระยะทางที่วัดได้โดยให้ตัว time คือค่าเวลา
ที่อ่านได้จากขา Echo โดยยังไม่ได้ผ่านการคำนวนเวลาจริง เมื่อผมนำสมการมารวมกันจะได้ว่า

S = (time/2000000) * (340/2) * 100 CM.
   = time * 0.0085 CM. (ซึ่งผมต้องการจุดทศนิยมอีกหนึ่งตัว ในโปรแกรมที่เขียนจริงจึงคูณ 10 เข้าไปอีกนะครับ
                                     และผมได้เฉลี่ยความเร็วเสียงขึ้นด้วยเลยไม่ตรงกับที่บอกนะครับ)

ที่เหลือก็แล้วแต่ท่านไหนจะเอาไปแสดงผลละครับ ส่วนผมเอาขึ้น LCD ด้วย BIG Numer Graphic
ของท่าน JENG ที่ทำไว้นานแสนนานแล้วแต่ก็ยังใช้งานได้ดีครับ

ผลที่ได้ก็ประมาณนี้ครับ







JENG

สามารถติดตาม electoday ได้ที่

Facebook
www.facebook.com/groups/coopmicro

Google+
https://plus.google.com/communities/103482067769375459277

☺☺☺ความรู้ และความฉลาด ไม่ใช่สิ่งเดียวกัน จะมีประโยชน์อะไร ถ้าฉลาดแต่อยู่ในกะลา☺☺☺

ozuke

MCS-51 ครับใช้ AT89C2051 ทำครับวัดตรงดีเหมือนกันครับ
มาพร้อมโค้ดกับวงจรครับ Crystal ผมใช้ 12MHz นะครับ




MiniProject.c
https://docs.google.com/file/d/0B9HppoQOVif0NDdicHZGYTU3RWc/edit?usp=sharing

Circuit
https://docs.google.com/file/d/0B9HppoQOVif0enZxUVJ6eHczQzQ/edit?usp=sharing


kidstuff

แจ่มครับ...sensor วัดได้ไกลเท่าไรหนอ

nont_peet

คนรักหุ่นยนต์


ozuke

Quote from: kidstuff on September 14, 2013, 09:29:32 AM
แจ่มครับ...sensor วัดได้ไกลเท่าไรหนอ

มันโฆษณาไว้ว่า 4 เมตรครับแต่วัดที่ 2 เมตรก็โอเคอยู่สำหรับที่โล่งๆนะ
แต่ว่าเลยนั้นไป มันมั่วครับ อิอิ

skytec

น้ำกำลังมาและท่วมหลายที่ น่าจะลองปรับไปวัดระดับนี้และส่งข้อมูลผ่าน NET แสดงให้คนเห็นเป็นสาธารณะครับ น่าจะดี ผมเห็นทาง รัฐให้ทุนโครงการบริหาจัดการน้ำ ลงทุน 3000 ล้าน ทำระบบข้อมูล เห็นแล้ว เศร้าๆ ครับ ปัจจุบัน update data ทุก 1 ชั่วโมง ผมว่าหากน้ำมาคงมิดหลังคาแล้วครับ Thailand Only....
"จินตนาการสำคัญกว่าความรู้ ความรู้มีข้อจำกัด จิตนาการไร้ขอบเขต " --อัลเบิร์ต ไอสไตน์