คู่มือเซ็นเซอร์อุณหภูมิ Adafruit MCP9808 ความแม่นยำ I2C
สร้างโดย Lady ADAปรับปรุงล่าสุดเมื่อ 2021-06-23 01:04:33 EDT
เกินview
เซ็นเซอร์อุณหภูมิแบบดิจิตอล I2C นี้เป็นหนึ่งในเซ็นเซอร์ที่แม่นยำ/แม่นยำกว่าที่เราเคยเห็น ด้วยความแม่นยำทั่วไปที่ ±0.25°C ในช่วง -40°C ถึง +125°C ของเซ็นเซอร์ และความแม่นยำที่ +0.0625°C ใช้งานได้ดีกับไมโครคอนโทรลเลอร์ที่ใช้ i2c มาตรฐาน มีหมุดที่อยู่ 3 อัน ดังนั้นคุณจึงสามารถเชื่อมต่อได้ถึง 8 บัส I2C เดียวโดยไม่มีการชนกันของที่อยู่ เหนือสิ่งอื่นใด เล่มกว้างtage range ทำให้ใช้งานได้กับลอจิก 2.7V ถึง 5.5V!
ไม่เหมือนกับ DS18B20 ที่เซ็นเซอร์นี้ไม่ได้มาในชุดทะลุผ่าน ดังนั้นเราจึงวางเซ็นเซอร์ขนาดเล็กนี้ไว้บนแผงวงจร PCB แบบฝ่าวงล้อมเพื่อการใช้งานที่ง่าย PCB ประกอบด้วยรูสำหรับยึดและตัวต้านทานแบบดึงลงสำหรับหมุดที่อยู่ 3 ตัว เรายังเขียนห้องสมุดเล็ก ๆ ที่น่ารักสำหรับ Arduino ที่จะทำงานร่วมกับ Arduino ใด ๆ ที่เข้ากันได้ คุณจะพร้อมใช้งานใน 15 นาทีหรือน้อยกว่า
เพื่อให้คุณดำเนินการได้อย่างรวดเร็ว เราจึงสร้าง PCB แบบสั่งทำพิเศษด้วย MCP9808 และวงจรที่รองรับ เช่น ตัวต้านทานและตัวเก็บประจุแบบดึงขึ้น ในรูปแบบ STEMMA QT (https://adafru.it/LBQ) ทำให้ง่ายต่อการติดต่อกับ ขั้วต่อ STEMMA QT (https://adafru.it/JqB) ด้านใดด้านหนึ่งเข้ากันได้กับ SparkFun Qwiic (https://adafru.it/Fpw) ตัวเชื่อมต่อ I2C สิ่งนี้ทำให้คุณสามารถเชื่อมต่อแบบไร้บัดกรีระหว่างบอร์ดพัฒนาของคุณและ MCP9808 หรือเชื่อมโยงกับเซ็นเซอร์และอุปกรณ์เสริมอื่นๆ มากมายโดยใช้สายเคเบิลที่เข้ากันได้ (https://adafru.it/JnB). ไม่รวม QT Cable แต่ทางร้านมีหลากหลาย (https://adafru.it/JnB).
- การควบคุม I2C อย่างง่าย
- มากถึง 8 บนบัส I2C เดียวพร้อมพินที่อยู่ที่ปรับได้
- ความแม่นยำทั่วไป 0.25°C ในช่วง -40°C ถึง 125°C (รับประกันสูงสุด 0.5 °C ตั้งแต่ -20°C ถึง 100°C)
- ความละเอียด 0.0625 องศาเซลเซียส
- พลังงาน 2.7V ถึง 5.5V และลอจิก voltagช่วงอี
- กระแสไฟที่ใช้งาน: 200 μA (ทั่วไป)
บอร์ดนี้มีสองเวอร์ชัน – เวอร์ชัน STEMMA QT ที่แสดงด้านบน และเวอร์ชันเฉพาะส่วนหัวดั้งเดิมที่แสดงด้านล่าง รหัสทำงานเหมือนกันทั้งคู่!
พินเอาต์
MCP9808 เป็นเซ็นเซอร์ที่ตรงไปตรงมามาก มาดูพินทั้งหมดกัน เพื่อให้คุณสามารถเข้าใจสิ่งที่คุณต้องเชื่อมต่อเพื่อเริ่มต้นใช้งาน
พินไฟฟ้า
- VIN (VDD ในเวอร์ชันส่วนหัวเท่านั้น) - นี่คือพินระดับพลังงานบวกและลอจิก อาจเป็น 2.75.5VDC ดังนั้นจึงเหมาะสำหรับใช้กับลอจิก 3 หรือ 5V Power VIN (VDD) กับระดับตรรกะที่คุณวางแผนจะใช้บนสาย i2c
- GND - นี่คือพินพลังงานกราวด์และขาอ้างอิงลอจิก
หมุดข้อมูล I2C
- SCL – นี่คือพินนาฬิกา I2C บนบอร์ดมี pull-up 10K อยู่แล้ว ดังนั้นให้เชื่อมต่อโดยตรงกับพินนาฬิกาหลัก i2c บนไมโครคอนโทรลเลอร์ของคุณ
- SDA – นี่คือพินข้อมูล I2C บนบอร์ดมีพูลอัพ 10K อยู่แล้ว ดังนั้นให้เชื่อมต่อโดยตรงกับพินข้อมูลหลัก i2c บนไมโครคอนโทรลเลอร์ของคุณ
- สเต็มมา คิวที (https://adafru.it/Ft4) – ตัวเชื่อมต่อเหล่านี้ช่วยให้คุณเชื่อมต่อกับบอร์ดพัฒนาที่มีตัวเชื่อมต่อ STEMMA QT หรือกับสิ่งอื่น ๆ ด้วยอุปกรณ์เสริมที่เกี่ยวข้องต่างๆ (https://adafru.it/Ft6).
พินเสริม
นี่คือหมุดที่คุณไม่จำเป็นต้องเชื่อมต่อเว้นแต่คุณต้องการ!
- เตือน – นี่คือพินอินเทอร์รัปต์/แจ้งเตือนจาก MCP9808 ชิปมีความสามารถในการ 'เตือน' คุณหากอุณหภูมิของชิปสูงกว่าหรือต่ำกว่าค่าที่ตั้งไว้ เอาต์พุตนี้สามารถทริกเกอร์เพื่อแจ้งให้คุณทราบ เป็นโอเพ่นคอลเลคเตอร์ ดังนั้นคุณจึงต้องใช้ตัวต้านทานแบบดึงขึ้นหากต้องการอ่านสัญญาณจากพินนี้
- A0 (เช่นเดียวกับ A1 และ A2 ในเวอร์ชันดั้งเดิม) – นี่คือหมุดเลือกที่อยู่ เนื่องจากคุณสามารถมีอุปกรณ์ที่มีที่อยู่ที่ระบุบนบัส i2c ได้เพียงเครื่องเดียว คุณจึงต้องมีวิธีปรับที่อยู่หากคุณต้องการใส่ MCP9808 มากกว่าหนึ่งเครื่องบนบัส i2c ที่ใช้ร่วมกัน หมุด A0/A1/A2 ตั้งค่าสามบิตด้านล่างของที่อยู่ i2c มีตัวต้านทานแบบดึงลงบนบอร์ด ดังนั้นให้เชื่อมต่อกับ VDD เพื่อตั้งค่าบิตเป็น '1' มีการอ่านค่าเมื่อเปิดเครื่อง ดังนั้นให้ยกเลิกการเปิดเครื่องและเปิดเครื่องอีกครั้งเพื่อรีเซ็ตที่อยู่
ที่อยู่เริ่มต้นคือ 0x18 และสามารถคำนวณที่อยู่ได้โดย 'เพิ่ม' A0/A1/A2 เข้ากับฐานของ 0x18
A0 ตั้งค่าบิตต่ำสุดด้วยค่า 1, A1 ตั้งค่าบิตกลางด้วยค่า 2 และ A2 ตั้งค่าบิตสูงด้วยค่า 4 ที่อยู่สุดท้ายคือ 0x18 + A2 + A1 + A0
ดังนั้นสำหรับอดีตampหาก A2 เชื่อมโยงกับ VDD และ A0 เชื่อมโยงกับ VDD ที่อยู่คือ 0x18 + 4 + 1 = 0x1D
หากผูก A0 กับ VDD เท่านั้น ที่อยู่คือ 0x18 + 1 = 0x19
หากผูก A1 กับ VDD เท่านั้น ที่อยู่คือ 0x18 + 2 = 0x1A
หากผูก A2 กับ VDD เท่านั้น ที่อยู่คือ 0x18 + 4 = 0x1C
ข้อมูลที่อยู่นี้ใช้กับการแบ่ง MCP9808 ทั้งสองเวอร์ชัน เวอร์ชัน STEMMA QT มีจัมเปอร์ที่ด้านหลัง ซึ่งคุณสามารถใช้ผูกหมุดที่อยู่กับ VDD ได้
รหัส Arduino
เตรียมแถบส่วนหัว:
ตัดแถบให้ยาวถ้าจำเป็น มันจะง่ายกว่าในการประสานถ้าคุณใส่ลงในเขียงหั่นขนม - หมุดยาวลง
เพิ่มกระดานฝ่าวงล้อม:
วางกระดานฝ่าวงล้อมไว้เหนือหมุดเพื่อให้หมุดสั้นทะลุแผ่นฝ่าวงล้อม
และประสาน!
ตรวจสอบให้แน่ใจว่าได้ประสานหมุดทั้งหมดเพื่อให้มีการสัมผัสทางไฟฟ้าที่เชื่อถือได้
(สำหรับเคล็ดลับในการบัดกรี โปรดอ่านคำแนะนำในการบัดกรีที่ยอดเยี่ยมของเรา (https://adafru.it/aTk-
คุณทำเสร็จแล้ว! ตรวจสอบข้อต่อบัดกรีด้วยสายตาและทำตามขั้นตอนต่อไป
การเดินสายไฟ Arduino
คุณสามารถต่อเซ็นเซอร์นี้กับไมโครคอนโทรลเลอร์ได้อย่างง่ายดาย เราจะใช้ Arduino
- เชื่อมต่อ VIN (Vdd) (สายสีแดงบน ต้นกำเนิด รุ่น QT) ไปยังแหล่งจ่ายไฟ 3V หรือ 5V ได้ ใช้เล่มเดียวกันtage ที่ตรรกะของไมโครคอนโทรลเลอร์ขึ้นอยู่กับ สำหรับ Arduinos ส่วนใหญ่ นั่นคือ 5V
- เชื่อมต่อ GND (สายสีดำบน ต้นกำเนิด รุ่น QT) สู่พลังงานทั่วไป/กราวด์ข้อมูล
- เชื่อมต่อพิน SCL กับพิน SCL นาฬิกา I2C บน Arduino ของคุณ (สายสีเหลืองบน ต้นกำเนิด รุ่น QT) บน Arduino ที่ใช้ UNO & '328 นี้เรียกอีกอย่างว่า A5 บนเมกะเป็นที่รู้จักกันว่าดิจิตอล 21 และบน Leonardo / Micro ดิจิตอล 3
- เชื่อมต่อพิน SDA กับพิน SDA ข้อมูล I2C บน Arduino ของคุณ (เปิดสายสีน้ำเงิน ต้นกำเนิด รุ่น QT) บน Arduino ที่ใช้ UNO & '328 นี้เรียกอีกอย่างว่า A4 บนเมกะเป็นที่รู้จักกันว่าดิจิตอล 20 และบน Leonardo / Micro ดิจิตอล 2
MCP9808 มีที่อยู่ I2C เริ่มต้นเป็น 0x18 แต่คุณสามารถตั้งค่าที่อยู่เป็น 8 ค่าระหว่าง 0x18 ถึง 0x1F ได้ ดังนั้นคุณจึงสามารถมีเซ็นเซอร์เหล่านี้ได้มากถึง 8 ตัวที่แชร์พิน SCL/SDA เดียวกันทั้งหมด
ดาวน์โหลด Adafruit_MCP9808
ในการเริ่มต้นอ่านข้อมูลเซ็นเซอร์ คุณจะต้องดาวน์โหลดไลบรารี Adafruit MCP9808 จากตัวจัดการไลบรารี Arduino
เปิดตัวจัดการห้องสมุด Arduino:
ค้นหา ไลบรารี Adafruit MCP9808 และติดตั้ง
เรายังมีบทช่วยสอนที่ยอดเยี่ยมเกี่ยวกับการติดตั้งไลบรารี Arduino ที่:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use (https://adafru.it/aYM)
โหลดเดโม
เปิดขึ้น File->อดีตamples->Adafruit_MCP9808->mcp9808test และอัปโหลดไปยัง Arduino ของคุณต่อสายเข้ากับเซ็นเซอร์
แค่นั้นแหละ! ตอนนี้เปิดหน้าต่างเทอร์มินัลอนุกรมที่ความเร็ว 9600 เพื่อดูอุณหภูมิแบบเรียลไทม์ คุณสามารถลองแตะนิ้วของคุณกับเซ็นเซอร์เพื่อดูอุณหภูมิที่เพิ่มขึ้น
Python & CircuitPython
ใช้งานง่ายเซ็นเซอร์ MCP9808 กับ Python หรือ CircuitPython และ Adafruit CircuitPython MCP9808 (https://adafru.it/zcr) โมดูล. โมดูลนี้ช่วยให้คุณเขียนโค้ด Python ที่อ่านอุณหภูมิจากเซ็นเซอร์ได้อย่างง่ายดาย
คุณสามารถใช้เซ็นเซอร์นี้กับบอร์ดไมโครคอนโทรลเลอร์ CircuitPython หรือคอมพิวเตอร์ที่มี GPIO และ Python ด้วย Adafruit_Blinka ไลบรารีความเข้ากันได้ของ CircuitPython-for-Python (https://adafru.it/BSN).
การเดินสายไมโครคอนโทรลเลอร์ CircuitPython
ขั้นแรก วางสาย MCP9808 เข้ากับบอร์ดของคุณตามที่แสดงในหน้าก่อนหน้าสำหรับ Arduino นี่คืออดีตampสายไฟของ Feather M0 กับเซ็นเซอร์:
- บอร์ด 3V ถึงเซ็นเซอร์ VIN (Vdd) (สายสีแดงในเวอร์ชัน STEMMA QT)
- บอร์ด GND ถึงเซ็นเซอร์ GND (สายสีดำในเวอร์ชัน STEMMA QT)
- บอร์ด SCL ไปยังเซ็นเซอร์ SCL (สายสีเหลืองในเวอร์ชัน STEMMA QT)
- บอร์ด SDA ไปยังเซ็นเซอร์ SDA (สายสีน้ำเงินในเวอร์ชัน STEMMA QT)
การเดินสายคอมพิวเตอร์ Python
เนื่องจากมีคอมพิวเตอร์/บอร์ด Linux หลายสิบเครื่องที่คุณสามารถใช้ได้ เราจะแสดงการเดินสายไฟสำหรับ Raspberry Pi สำหรับแพลตฟอร์มอื่นๆ โปรดไปที่คู่มือสำหรับ CircuitPython บน Linux เพื่อดูว่าแพลตฟอร์มของคุณรองรับหรือไม่ (https://adafru.it/BSN).
นี่คือ Raspberry Pi ที่ต่อสายกับ I2C:
- Pi 3V3 ถึงเซ็นเซอร์ VIN (สายสีแดงในเวอร์ชัน STEMMA QT)
- Pi GND ถึงเซ็นเซอร์ GND (สายสีดำในเวอร์ชัน STEMMA QT)
- Pi SCL ไปยังเซ็นเซอร์ SCK (สายสีเหลืองในเวอร์ชัน STEMMA QT)
- Pi SDA ไปยังเซ็นเซอร์ SDA (สายสีน้ำเงินในเวอร์ชัน STEMMA QT)
การติดตั้ง CircuitPython ของไลบรารี MCP9808
ต่อไปคุณจะต้องติดตั้ง วงจร AdafruitPython MCP9808 (https://adafru.it/zcr) ห้องสมุดบนบอร์ด CircuitPython ของคุณ
ขั้นแรก ตรวจสอบให้แน่ใจว่าคุณใช้ Adafruit CircuitPython เวอร์ชันล่าสุด (https://adafru.it/tBa) สำหรับบอร์ดของคุณ
ถัดไป คุณจะต้องติดตั้งไลบรารีที่จำเป็นเพื่อใช้ฮาร์ดแวร์ โดยทำตามขั้นตอนอย่างระมัดระวังเพื่อค้นหาและติดตั้งไลบรารีเหล่านี้จากชุดไลบรารี CircuitPython ของ Adafruit (https://adafru.it/zdx). สำหรับอดีตampในคู่มือ Circuit Playground Express มีหน้าที่ยอดเยี่ยมเกี่ยวกับวิธีการติดตั้งชุดไลบรารี (https://adafru.it/Bf2) สำหรับบอร์ดทั้งแบบด่วนและไม่ด่วน
อย่าลืมว่าสำหรับบอร์ดที่ไม่ใช่แบบด่วน เช่น Trinket M0, Gemma M0 และ Feather/Metro M0 พื้นฐาน คุณจะต้องติดตั้งไลบรารีที่จำเป็นจากบันเดิลด้วยตนเอง:
- adafruit_mcp9808.mpy
- adafruit_bus_device
ก่อนดำเนินการต่อ ตรวจสอบให้แน่ใจว่าโฟลเดอร์ lib หรือ root . ของบอร์ดคุณ fileระบบมี adafruit_mcp9808.mpy และ adafruit_bus_device files และโฟลเดอร์ที่คัดลอกมา
ถัดไป เชื่อมต่อกับ REPL . ของบอร์ด (https://adafru.it/pMf) ดังนั้นคุณอยู่ที่พรอมต์ CircuitPython >>>
การติดตั้ง Python ของไลบรารี MCP9808
คุณจะต้องติดตั้งไลบรารี Adafruit_Blinka ที่รองรับ CircuitPython ใน Python ซึ่งอาจจำเป็นต้องเปิดใช้งาน I2C บนแพลตฟอร์มของคุณและตรวจสอบว่าคุณกำลังใช้งาน Python 3 เนื่องจากแต่ละแพลตฟอร์มมีความแตกต่างกันเล็กน้อย และ Linux มีการเปลี่ยนแปลงบ่อยครั้ง โปรดไปที่คู่มือ CircuitPython บน Linux เพื่อเตรียมคอมพิวเตอร์ของคุณให้พร้อม (https://adafru.it/BSN)!
เมื่อเสร็จแล้วให้รันคำสั่งต่อไปนี้จากบรรทัดคำสั่งของคุณ:
Sudo pip3 ติดตั้ง adafruit-circuit python-mcp9808
หาก Python เริ่มต้นของคุณคือเวอร์ชัน 3 คุณอาจต้องเรียกใช้ 'pip' แทน ตรวจสอบให้แน่ใจว่าคุณไม่ได้พยายามใช้ CircuitPython บน Python 2 x ไม่รองรับ!
การใช้งาน CircuitPython & Python
เพื่อแสดงการใช้งานเซ็นเซอร์ เราจะเริ่มต้นและอ่านอุณหภูมิ ขั้นแรก เริ่มต้นการเชื่อมต่อ I2C และไลบรารีโดยเรียกใช้:
Importboanrd importbusIo ผลไม้นำเข้า _ MCP 9808
i2c = บูซิโอ I2C ( บอร์ด . SCL บอร์ด . SDA )
MCP = ผลไม้ _ MCP 9808 MCP 9808 ( i2c )
ตอนนี้คุณสามารถอ่านคุณสมบัติอุณหภูมิเพื่อดึงอุณหภูมิจากเซ็นเซอร์ในหน่วยองศาเซลเซียส: พิมพ์ ( ' Temperature : { }degreeC ' . form at ( MCP . temperature ) ) นั่นคือทั้งหมดที่มีเพื่ออ่านอุณหภูมิด้วยรหัส MCP9808 และ CircuitPython !
เต็ม Exampรหัส
#เอสพีดีเอ็กซ์-Fileลิขสิทธิ์ข้อความ: 2021 ladyada for Adafruit Industries
# SPDX-ใบอนุญาต-ตัวระบุ: MIT
เวลาการนำเข้า
นำเข้าบอร์ด
นำเข้า adafruit_mcp9808
i2c = บอร์ด I2C()
# ใช้ board.SCL และ board.SDA
# เพื่อเริ่มต้นโดยใช้ที่อยู่เริ่มต้น: mcp = adafruit_mcp9808.MCP9808(i2c)
# ในการเริ่มต้นโดยใช้ที่อยู่ที่ระบุ:
# จำเป็นเมื่อสำหรับเช่นample เชื่อมต่อ AO กับ VDD เพื่อสร้างที่อยู่=0x19
# mcp = adafruit_mcp9808.MCP9808(i2c_bus, address=0x19) ในขณะที่ True: tempC = mcp.temperature
tempF = tempC * 9/5 + 32
พิมพ์ ("อุณหภูมิ: {} C {} F ".format (tempC, tempF)) time.sleep (2)
เอกสาร Python
เอกสารหลาม (https://adafru.it/C3s)
ดาวน์โหลด
แผ่นข้อมูล & Files
แผ่นข้อมูล MCP9808 (https://adafru.it/dfL)
PCB EagleCAD fileบน GitHub (https://adafru.it/qib)
วัตถุ Fritzing ในห้องสมุด Adafruit Fritzing (https://adafru.it/c7M)
Schematic และ Fab Print สำหรับ STEMMA QT Version
Schematic และ Fab Print สำหรับเวอร์ชันดั้งเดิม
© Adafruit อุตสาหกรรม
https://learn.adafruit.com/adafruit-mcp9808-precision-i2c-temperature-sensor-guide
เอกสาร / แหล่งข้อมูล
![]() |
Adafruit MCP9808 เซ็นเซอร์อุณหภูมิ I2C ที่แม่นยำ [พีดีเอฟ] คู่มือการใช้งาน MCP9808, เซ็นเซอร์อุณหภูมิ I2C ที่แม่นยำ, เซ็นเซอร์อุณหภูมิ |