Microchip’s TC74 เป็นเซ็นเซอร์อุณหภูมิดิจิตอลราคาไม่แพงพร้อมอินเตอร์เฟส I2C ขั้นพื้นฐาน มีความละเอียด 1 องศาเซลเซียสและความหลากหลายของ -40 ถึง +125 องศา นี่เป็นวิธีที่ง่ายในการเพิ่มการวัดอุณหภูมิให้กับงานโดยไม่มีอะนาล็อกเป็นตัวแปลงดิจิตอล เราจะแสดงวิธีใช้ประโยชน์จาก TC74 ด้านล่าง
Microchip TC74 เซ็นเซอร์อุณหภูมิดิจิตอล (การค้นหา Octopart เริ่มต้นที่ $ 0.88)
TC74 มีให้บริการในแพคเกจ Hole Through-Hole และ Surface Mount ให้ดูแผ่นข้อมูล TC74 (PDF) เราไม่พบรอยเท้า Cadsoft Eagle สำหรับส่วนใดรุ่นนี้หากคุณรู้หนึ่งโปรดลิงค์ไปยังความคิดเห็น
รุ่นต่าง ๆ ของ TC74 ถูกปรับเทียบสำหรับแรงดันไฟฟ้าบางอย่าง แต่ทำงานได้จาก 2.7-5Volts TC74A5 ที่เราใช้มีความแม่นยำมากเมื่อทำงานที่ 5volts แต่เราขับเคลื่อนจากอุปทาน 3.3volt การเชื่อมต่อ I2C ต้องการตัวต้านทานแบบดึงขึ้น 2 ตัวที่จะถือบัสสูง (R1, R2), 2k-10k ต้องทำงาน C1 เป็นตัวเก็บประจุ 0.1uf decoupling
เราใช้อินเตอร์เฟซ Serial Serial Bus Pirate Universal ในโหมด I2C เพื่อทดสอบไดรฟ์ TC74 แต่อาจใช้หลักการเดียวกันกับไมโครคอนโทรลเลอร์ใด ๆ เราขับเคลื่อน TC74 จากการจัดหา 3.3volt ของรถบัสโจรสลัดและใช้ตัวต้านทานแบบดึงขึ้นบนกระดานเพื่อรองรับรถบัส I2C สูง
สั่งการ
ค่า
เลือกการลงทะเบียนอุณหภูมิ
0x00
เลือกการลงทะเบียนการกำหนดค่า
0x01
ที่อยู่ในการเขียนของ TC74 คือ 0x9A และที่อยู่ที่ตรวจสอบแล้ว 0x9b มันมีสองการลงทะเบียนหนึ่งไบต์ ลงทะเบียนที่อยู่ 0 ถือการอ่านอุณหภูมิลงทะเบียน 1 ถือการตั้งค่าการกำหนดค่า
การกำหนดค่าการลงทะเบียน
Bit 6 ของการลงทะเบียนการกำหนดค่าคือ 0 ที่ Power-on และการปรับเปลี่ยนเป็น 1 เมื่อมีการอ่านอุณหภูมิที่ถูกต้องครั้งแรก Bit 7 สามารถเขียนได้และวาง TC74 ในโหมดสแตนด์บายการประหยัดพลังงาน การอ่านการลงทะเบียนรวมถึงสองขั้นตอน: ใช้คำสั่งเขียนบางส่วนเพื่อเลือกการลงทะเบียนจากนั้นใช้คำสั่งที่ตรวจสอบแล้วเพื่อดึงค่า
I2C> {0x9A 1}
210 I2C สภาพเริ่มต้น
220 i2c เขียน: 0x9a got ack: แน่นอน <-write ที่อยู่
220 i2c เขียน: 0x01 Got ACK: แน่นอน <-Select Config ลงทะเบียน
240 เงื่อนไขหยุด i2c
ก่อนอื่นเราเลือกการลงทะเบียนการกำหนดค่าด้วยคำสั่งเขียนบางส่วน นี่ไม่ใช่การเขียนค่าจริง ๆ มันจะเลือกการลงทะเบียนเพื่อตรวจสอบและเขียน {สร้างเงื่อนไขการเริ่มต้น I2C ปฏิบัติตามด้วยที่อยู่ของ TC74 Compose (0x9A) และคำสั่งเลือกการกำหนดค่าการลงทะเบียน (0x01) } ปัญหาสภาพ I2C หยุดและสิ้นสุดการทำธุรกรรม
ตอนนี้เราสามารถตรวจสอบเนื้อหาของการลงทะเบียน
i2c> {0x9b r}
210 I2C สภาพเริ่มต้น
220 i2c เขียน: 0x9b ได้ ack: แน่นอน <-read ที่อยู่
230 I2C อ่าน: 0x40 <- ค่าการลงทะเบียน (01000000)
240 เงื่อนไขหยุด i2c
I2C>
ที่อยู่ที่เช็คเอาต์ (0x9b) ส่งคืนค่าการลงทะเบียนไบต์หนึ่งไบต์ (R) ค่าการลงทะเบียนการกำหนดค่า, 0x40 หรือ 01000000 แสดงให้เห็นว่าอุปกรณ์หมดสแตนด์บาย (บิต 7 = 0) และการอ่านอุณหภูมิที่ถูกต้องพร้อมใช้งาน (บิต 6 = 1)
TC74 มีโหมดสแตนด์บายพลังงานต่ำ เปิดใช้งานโดยการเขียน 1 ถึงบิต 7 ของการลงทะเบียนการกำหนดค่า
I2C> {0x9A 1 0B10000000}
210 I2C สภาพเริ่มต้น
220 i2c เขียน: 0x9a got ack: แน่นอน <-write ที่อยู่
220 i2c เขียน: 0x01 Got ACK: แน่นอน <-Select Config ลงทะเบียน
220 I2C เขียน: 0x80 ได้รับ ACK: แน่นอน <-Value เขียน (01000000)
240 เงื่อนไขหยุด i2c
I2C>
การลงทะเบียนเขียนด้วยคำสั่งสามไบต์เดียว ครั้งแรกที่เราส่งที่อยู่เขียน (0x9a) ปฏิบัติตามโดยลงทะเบียนให้เลือก (0x01) และในที่สุดค่าในการเขียน (0x80) เพียงเล็กน้อย 7 ของการลงทะเบียนการกำหนดค่าที่เขียนได้ค่าของบิต 6-0 จะถูกละเว้น
อ่านการลงทะเบียนอีกครั้งเพื่อยืนยันว่าคำสั่งทำงาน
i2c> {0x9A 1} {0x9b r}
210 i2c สภาพเริ่มต้น <-first ชุดคำสั่งลงทะเบียน
220 i2c เขียน: 0x9a got ack: แน่นอน <-write ที่อยู่
220 i2c เขียน: 0x01 Got ACK: แน่นอน <-Config Register (1)
240 I2C หยุดเงื่อนไข <-End คำสั่งแรก
210 I2C เริ่มสภาพ <-Begin คำสั่งที่สอง
220 i2c เขียน: 0x9b ได้ ack: แน่นอน <-read ที่อยู่
230 I2C อ่าน: 0x80 <- ค่าการลงทะเบียน (10000000)
240 i2c หยุดเงื่อนไข <- ขั้นตอนที่สอง
I2C>
มูลค่าการลงทะเบียน, 10,000,000 ตอนนี้แสดงให้เห็นว่าอุปกรณ์อยู่ในโหมดสแตนด์บาย (บิต 7 = 1) สังเกตว่าบิต 6 คือตอนนี้ 0 ไม่มีข้อมูลอุณหภูมิ
ชัดเจนบิต 7 เพื่อออกจากสแตนด์บายจากนั้นรอสักครู่ 6 เพื่อกลับไปที่ 1 ก่อนอ่านการลงทะเบียนอุณหภูมิ
I2C> {0x9A 1 0B00000000}
210 I2C สภาพเริ่มต้น
220 i2c เขียน: 0x9a got ack: แน่นอน <-write ที่อยู่
220 I2C เขียน: 0x01 ได้ ack: ใช่ <-select config ลงทะเบียน
220 I2C เขียน: 0x00 Got ACK: ใช่ <-Value เพื่อแต่ง (00000000)
240 เงื่อนไขหยุด i2c
I2C>
ข้อมูลอุณหภูมิเตรียมเมื่อค่าการลงทะเบียนการกำหนดค่ากลับไปที่ 0x40 (01000000)
อุณหภูมิ
การลงทะเบียนอุณหภูมิจะถูกตรวจสอบในสองขั้นตอน ครั้งแรกคำสั่งเขียนบางส่วนเลือกการลงทะเบียนอุณหภูมิ (0) จากนั้นลำดับที่ตรวจสอบแล้วส่งคืนเนื้อหา
i2c> {0x9a 0} {0x9b r}
210 I2C สภาพเริ่มต้น
220 i2c เขียน: 0x9a got ack: แน่นอน <-write ที่อยู่
220 I2C เขียน: 0x00 Got ACK: แน่นอน <- เลือกทะเบียนอุณหภูมิ
240 เงื่อนไขหยุด i2c
210 I2C สภาพเริ่มต้น
220 i2c เขียน: 0x9b ได้ ack: แน่นอน <-read ที่อยู่
230 i2c อ่าน: 0x18 <-Grab หนึ่งไบต์
240 เงื่อนไขหยุด i2c
I2C>
อุณหภูมิเป็นค่าจำนวนเต็มขององศาเซลเซียสตัวเลขลบจะแสดงเป็นส่วนเสริม TWOS ค่าบวกจาก 0 ถึง 127 องศาเซลเซียสเป็นตัวแทนของค่านั้น อุณหภูมิเชิงลบมีบิต 7 ชุดและความหลากหลายจาก -1 ถึง -65 (255-128) ดูตารางที่ 4.4 ในหน้า 8 ของแผ่นข้อมูล ค่าเลขฐานสิบหก 0x18 เท่ากับ 24 เป็นทศนิยมดังนั้นการอ่านอุณหภูมิคือ 24C (75F)
ชอบโพสต์นี้ไหม ตรวจสอบบทความชิ้นส่วนที่คุณอาจพลาดไป