หน้าเว็บ

วันศุกร์ที่ 19 กันยายน พ.ศ. 2557

BMP085 with UNICON

UniconProject03-fig13

ตรวจสอบสภาพอากาศกับ Unicon และ BMP085 

<อ้างอิงจากวารสาร The Prototype Electronics ฉบับที่ 40>

เกี่ยวกับโมดูลวัดความกดอากาศ BMP085

    BMP085 เป็นตัวตรวจจับปริมาณของสภาพแวดล้อมที่พัฒนาขึ้นจากเทคโนโลยีเปียโซ-รีซิสตีฟ (Piezo-resistive technology) เป็นผลงานของ BOSCH หนึ่งในผู้ผลิตตัวตรวจจับคุณภาพสูงในวงการอุตสาหกรรมระดับโลก ใช้ไฟเลี้ยงในย่าน +1.8 ถึง +3.6V เชื่อมต่อกับไมโครคอนโทรลเลอร์ผ่านทางบัส I2C มีคุณสมบัติที่น่าสนใจดังนี้
    • วัดความกดอากาศได้ในช่วง 300 ถึง 1100 hPa (hPa คือหน่วย hecto Pascal โดยที่ hecto หมายถึง 100)
    • มีความผิดพลาดในการวัดต่ำสุด +2.5hPa
    • ไฟเลี้ยงย่าน 1.8 ถึง 3.6V กินกระแสไฟฟ้าเฉลี่ย 3mA ที่อัตราการเปลี่ยนแปลงของข้อมูล 1Hz
    • ติดต่อกับไมโครคอนโทรลเลอร์ผ่านบัส I2C
    • ให้ค่าของอุณหภูมิในพื้นที่ที่ตรวจวัดสัมพันธ์กับค่าความกดอากาศในช่วงเวลาและสภาพแวดล้อมเดียวกัน ทำให้นำผลการตรวจจับไปคำนวณเพื่อหาค่าตำแหน่งความสูงจากระดับน้ำทะเล (altitude) ของสถานที่ที่ติดตั้งตัวตรวจจับนี้ได้
    • มีจุดต่อ 6 จุด มีระยะห่าง 0.1 นิ้ว หรือ 2.54 มม.
    • ขนาด 0.65 x 0.65 นิ้วหรือ 16.5 x 16.5 มม

    ในรูปที่ 1 แสดงหน้าตาของโมดูล BMP085 และบอร์ดเชื่อมต่อ ADX-BMP085 ที่นำมาใช้เชื่อมต่อกับบอร์ด Unicon ในมินิโปรเจ็กต์ที่ 3 นี้ สำหรับบอร์ด ADX-BMP085 ได้เคยแนะนำให้สร้างและตีพิมพ์ใน TPE ฉบับที่ 23 บทความการใช้งานแผงวงจรเชื่อมต่อ BMP085 ตัวตรวจจับความกดดันอากาศ 
รูปที่ 1
รูปที่ 1 โมดูล BMP085 และบอร์ดเชื่อมต่อ ADX-BMP085 พร้อมสายสัญญาณ JST3AA-8 สำหรับเชื่อมต่อกับบอร์ด Unicon

การต่อวงจรเพื่อใช้งานกับบอร์ด Unicon

    การเชื่อมต่อกับบอร์ด Unicon ของ BMP085 ทำได้ไม่ยาก เพียงต่อขา SDA ของ BMP085 เข้าที่ขา 2 (SDA) และขา SCL เข้าที่ขา 3 (SCL) ของบอร์ด Unicon โดยติดตั้งโมดูล BMP085 ลงบนบอร์ด ADX-BMP085 จะทำให้การเชื่อมต่อง่ายขึ้นมาก อีกทั้งยังช่วยให้ใช้งาน BMP085 กับบอร์ด Unicon ที่ใช้ไฟเลี้ยง +5V ได้ ดังรูปที่ 2 เนื่องจากบอร์ด ADX-BMP085 มีวงจรควบคุมไฟเลี้ยงคงที่ +3.3V เมื่อได้ไฟเลี้ยง +5V จากบอร์ด Unicon ก็จะควบคุมให้เหลือคงที่ที่ +3.3V สำหรับเลี้ยงโมดูล BMP085 ได้
รูปที่ 2
รูปที่ 2 การเชื่อมต่อเพื่อทดลองใช้งานโมดูล BMP085 กับบอร์ด Unicon
    สำหรับวงจรของบอร์ด ADX-BMP085 แสดงในรูปที่ 3 ท่านที่มีโมดูล BMP085 อยู่แล้ว ก็สามารถต่อวงจรขึ้นมาเองได้เลย 
รูปที่ 3
รูปที่ 3 วงจรของบอร์ดเชื่อมต่อ ADX-BMP085

 

เรื่องที่ควรทราบเกี่ยวกับรีจิสเตอร์ของ BMP085

    โมดูลวัดความกดอากาศ BMP085 มีรีจิสเตอร์เพื่อใช้ในการปรับแต่งตัวตรวจจับให้สามารถวัดค่าได้แม่นยำอยู่หลายตัวจะต้องนำค่ามาคำนวณร่วมกันเพื่ออ่านค่าอุณหภูมิและความกดอากาศ ดังมีข้อมูลโดยสรุปตามตารางที่ 1
ตารางที่ 1
ตารางที่ 1 แอดเดรสของรีจิสเตอร์ค่าสัมประสิทธิ์ที่ใช้ในการปรับแต่งสำหรับโมดูล BMP085
    สำหรับการอ่านค่าความกดอากาศจะอ่านค่าแบบ Oversampling (osrs) ได้ จึงเลือกอ่านค่าจากรีจิสเตอร์ควบคุมที่เกี่ยวข้องกับการอ่านค่าแบบ Oversampling ที่ต้องการได้ โดยเลือกได้ตั้งแต่ osrs0 ถึง osrs3 ดังแสดงในตารางที่ 2 โดยจะต้องอ่านค่าที่ได้จาก Oversampling 4 ระดับแล้วนำมาคำนวณเพื่อให้ค่าความกดอากาศออกมา
ตารางที่ 2
ตารางที่ 2 แสดงค่าของรีจิสเตอร์ควบคุมการอ่านค่าจากโมดูล BMP085 ค่าระยะเวลาที่ปรากฏใหน่วยเป็นวินาที
    สำหรับการใช้งานโมดูล BMP085 จะต้องมีการปรับแต่งตัวตรวจจับก่อนทุกครั้ง เพื่อให้ค่าที่วัดได้มีความแม่นยำ

เกี่ยวกับโปรแกรมควบคุม

   โปรแกรมควบคุมเพื่ออ่านค่าจากโมดูล BMP085 ของบอร์ด Unicon แสดงในโปรแกรมที่ 1 จะแล้วทำการอ่านค่าจากเซ็นเซอร์ BMP085 โดยจะนำค่าอุณหภูมิและความกดอากาศที่วัดได้มาแสดงบนจอ GLCD ของบอร์ด Unicon ตอนต้นของโปรแกรมในส่วนของ setup() จะต้องเรียกฟังก์ชั่น bmp085Calibration(); ก่อนเพื่อทำการปรับแต่งตัวตรวจจับให้พร้อมใช้งาน
    ในส่วนของการคำนวณค่าความกดดอากาศนั้นจะเป็นหน้าที่ของฟังก์ชั่น bmp085GetPressure() ที่นำค่าของ
รีจิสเตอร์ทั้งหมดของ BMP085 ที่อ่านค่าจากฟังก์ชั่น bmp085ReadUP(); มาทำการคำนวณ จนกระทั่งได้ค่าความกดอากาศมาเก็บไว้ในตัวแปร P เพื่อนำไปแสดงผลต่อไป
โปรแกรมที่ 1-1
โปรแกรมที่ 1-2

โปรแกรมที่ 1-3
โปรแกรมที่ 1 ไฟล์ Unicon_BMP085.ino สำหรับอ่านค่าจากโมดูล BMP085 ของบอร์ด Unicon

ทดสอบวัดความกดอากาศ

    สำหรับการทดสอบ BMP085 จะให้ได้ผลแบบชัดเจน ต้องวัดเปรียบเทียบระหว่างพื้นที่ที่มีความกดอากาศต่างกันมากๆ เช่น บนอาคารสูงกับห้องใต้ดิน จึงอาจทดสอบให้เห็นได้ไม่ง่ายนัก เนื่องจากโดยปกติพื้นที่ของประเทศไทยจะอยู่สูงจากระดับน้ำทะเลประมาณ 1.44 เมตร และภูมิประเทศเป็นที่ราบเสียส่วนใหญ่ ส่งผลให้ความกดอากาศปกติจึงไม่ต่างกันมากนักในแต่ละพื้นที่ จากการทดสอบในพื้นที่กรุงเทพมหานครโดยใช้โมดูล BMP085 วัดได้ 100,676 Pa หรือ 100.676 kPa (กิโลปาสคาล) เนื่องจากอยู่สูงกว่าระกับน้ำทะเลประมาณ 1 เมตร ค่าความกดอากาศจะลดลงเมื่ออยู่สูงจากระดับน้ำทะเล โดยที่ระดับน้ำทะเลจะมีค่าความกดอากาศ 1 atm หรือหนึ่งหน่วยบรรยากาศ หรือเท่ากับ 101.325 kPa หรือ 760 mmHg (มิลลิเมตรปรอท) 
 รูปที่ 4
รูปที่ 4 แสดงผลการทำงานของการวัดอุณหภูมิและค่าความกดอากาศด้วยโมดูล BMP085 และบอร์ด Unicon









ไม่มีความคิดเห็น: