Uncategorized

Bagian: I2C Digital Thermometer (TC74)

Microchip’s TC74 adalah sensor suhu digital yang terjangkau dengan antarmuka I2C dasar. Ini memiliki resolusi 1 derajat Celcius, dan berbagai -40 hingga +125 derajat. Ini adalah metode yang mudah untuk menambahkan pengukuran suhu ke pekerjaan tanpa konverter digital analog. Kami akan menunjukkan kepada Anda cara memanfaatkan TC74 di bawah ini.

Microchip TC74 Digital Suhu Sensor (Pencarian Octopart, mulai dari $ 0,88)

TC74 tersedia dalam paket lima pin melalui-lubang dan permukaan mount, lihat TC74 Datasheet (PDF). Kami tidak dapat menemukan jejak CADSOFT EAGLE untuk versi apa pun dari bagian ini, jika Anda tahu satu tolong tautkan ke sana di komentar.

Versi TC74 yang berbeda dikalibrasi untuk voltase tertentu, tetapi semua bekerja dari 2,7-5Volts. TC74A5 yang kami gunakan adalah banyak akurat saat beroperasi pada 5VOLTS, tetapi kami menyalakannya dari pasokan 3.3Volt. Koneksi I2C membutuhkan 2 resistor pull-up untuk menahan bus tinggi (R1, R2), 2K-10K harus berfungsi. C1 adalah kapasitor decoupling 0.1uf.

Kami menggunakan bus bajak laut antarmuka serial universal dalam mode I2C untuk menguji drive TC74, tetapi prinsipal yang sama persis berlaku untuk mikrokontroler apa pun. Kami membereskan TC74 dari pasokan 3.3volt bus bajak laut, dan menggunakan resistor pull-up on-board untuk menahan bus I2C tinggi.

Memerintah
Nilai

Pilih Daftar Suhu
0x00.

Pilih Konfigurasi Daftar
0x01.

Alamat Compose TC74 adalah 0x9A, dan alamat check-out 0x9b. Ini memiliki dua, register satu byte. Register Alamat 0 Memegang Membaca Suhu, Daftar 1 Memegang Pengaturan Konfigurasi.

Konfigurasi Daftar

Bit 6 dari register konfigurasi adalah 0 saat power-on, dan modifikasi ke 1 ketika pembacaan suhu pertama yang valid tersedia. Bit 7 dapat ditulis, dan menempatkan TC74 dalam mode siaga penghematan daya. Membaca register mencakup dua langkah: Memanfaatkan perintah Compose parsial untuk memilih register, lalu gunakan perintah check inch out untuk mengambil nilai.

I2c> {0x9a 1}
210 I2C Mulai Kondisi
220 I2C Tulis: 0x9A Got ACK: Memang <-Write Alamat 220 I2C Tulis: 0x01 GOT ACK: memang <-select config register 240 i2c stop syarat Pertama, kami memilih register konfigurasi dengan perintah komposis parsial. Ini sebenarnya tidak membuat nilai, memilih register untuk check out dan menulis. {menghasilkan kondisi awal I2C, dipenuhi oleh TC74 Compose Alamat (0x9A) dan perintah configuration register Command (0x01). } Masalah kondisi berhenti I2C dan mengakhiri transaksi. Sekarang kami dapat memeriksa isi register. I2c> {0x9b r}
210 I2C Mulai Kondisi
220 i2c Write: 0x9b Punya ACK: Memang <-read Alamat 230 I2C Baca: 0x40 <- Nilai register (01000000) 240 i2c stop syarat I2C>

Alamat checked out (0x9b) mengembalikan nilai register satu byte (R). Nilai register konfigurasi, 0x40 atau 01000000, menunjukkan bahwa perangkat keluar dari standby (bit 7 = 0), dan pembacaan suhu yang valid tersedia (bit 6 = 1).

TC74 memiliki modus siaga daya rendah. Aktifkannya dengan menyusun 1 hingga bit 7 dari register konfigurasi.

I2c> {0x9a 1 0b10000000}
210 I2C Mulai Kondisi
220 I2C Tulis: 0x9A Got ACK: Memang <-Write Alamat 220 I2C Tulis: 0x01 GOT ACK: memang <-select config register 220 I2C Tulis: 0x80 GOT ACK: memang <-value untuk menulis (01000000) 240 i2c stop syarat I2C>

Register ditulis dengan perintah tiga byte tunggal. Pertama, kami mengirim alamat Compose (0x9A), dipenuhi oleh register untuk memilih (0x01), dan akhirnya nilai untuk menyusun (0x80). Hanya bit 7 dari register konfigurasi dapat ditulis, nilai bit 6-0 diabaikan.

Baca register lagi untuk mengonfirmasi bahwa perintah berfungsi.

I2c> {0x9a 1} {0x9b r}
210 I2C Mulai Kondisi <-first Kumpulan perintah register 220 I2C Tulis: 0x9A Got ACK: Memang <-Write Alamat 220 I2C Tulis: 0x01 GOT ACK: Memang <-config Register (1) 240 i2c stop syarat <-end perintah pertama 210 I2C Mulai Kondisi <-Begin perintah kedua 220 i2c Write: 0x9b Punya ACK: Memang <-read Alamat 230 i2c Baca: 0x80 <- Nilai register (10000000) 240 i2c stop syarat <-end perintah kedua I2C>

Nilai register, 10000000, sekarang menunjukkan bahwa perangkat dalam keadaan siaga (bit 7 = 1). Perhatikan bahwa bit 6 sekarang 0, tidak ada data suhu yang tersedia.

Clear bit 7 untuk keluar siaga, lalu tunggu sebesar 6 untuk kembali ke 1 sebelum membaca register suhu.

I2c> {0x9a 1 0b00000000}
210 I2C Mulai Kondisi
220 I2C Tulis: 0x9A Got ACK: Memang <-Write Alamat 220 I2C Tulis: 0x01 GOT ACK: Ya <-Select Config Register 220 I2C Tulis: 0x00 GOT ACK: Ya <-Value untuk menyusun (00000000) 240 i2c stop syarat I2C>

Data suhu disiapkan ketika nilai register konfigurasi kembali ke 0x40 (01000000).

Suhu

Daftar suhu diperiksa dalam dua langkah. Pertama, perintah komposisi parsial memilih register suhu (0), maka urutan check out mengembalikan konten.

I2c> {0x9a 0} {0x9b r}
210 I2C Mulai Kondisi
220 I2C Tulis: 0x9A Got ACK: Memang <-Write Alamat 220 I2C Tulis: 0x00 Mendapat ACK: Memang <-PilihDaftar Suhu 240 i2c stop syarat 210 I2C Mulai Kondisi 220 i2c Write: 0x9b Punya ACK: Memang <-read Alamat 230 I2C Baca: 0x18 <-Grab One byte 240 i2c stop syarat I2c>

Suhu adalah nilai integer dari derajat Celcius, angka negatif diwakili sebagai pelengkap dua. Nilai positif dari 0 hingga 127 derajat Celcius hanya diwakili oleh nilai itu. Suhu negatif memiliki bit 7 set, dan variasi dari -1 hingga -65 (255-128), lihat Tabel 4.4 pada halaman 8 dari lembar data. Nilai heksadesimal 0x18 sama dengan 24 dalam desimal, sehingga pembacaan suhu adalah 24C (75F).

Suka posting ini? Periksa bagian-barang bagian yang mungkin Anda lewatkan.