Termometer untuk mengukur suhu tinggi pada mikrokontroler. Termometer dua saluran berbasis mikrokontroler ATmega8 dan sensor DS18B20

Saya ingin segera mencatat bahwa papan sirkuit tercetak dan desainnya dirancang dengan harapan dapat menghasilkan perangkat kompak yang dapat dipasang di dinding.

Perangkat dikendalikan menggunakan satu tombol. Program untuk mikrokontroler ditulis dalam C, dilengkapi dengan komentar, dan pengguna dapat memodifikasinya agar sesuai dengan tugas spesifik mereka, atau memperluas fungsionalitasnya. Untuk mengontrol indikator LCD, perpustakaan Peter Fleury yang sudah jadi digunakan (arsip yang dapat diunduh tersedia di bagian unduhan). Selain itu, data dapat ditampilkan dalam Celsius atau Fahrenheit. Ada beberapa mode untuk mengontrol lampu latar indikator.

Perlu juga diperhatikan poin penting lainnya: perangkat dapat melakukan transmisi data nirkabel melalui protokol Bluetooth menggunakan modul khusus (opsional).

Diagram skematik

Dari sudut pandang desain sirkuit, perangkat ini sederhana, dan kami akan mempertimbangkan elemen komponennya secara terpisah.

Catu daya termometer dibuat berdasarkan pengatur tegangan terintegrasi dalam sambungan standar (dengan kapasitor filter yang sesuai). Regulator tegangan 3,3 V AMS1117 sudah termasuk dalam rangkaian, namun dapat digunakan jika menggunakan modul Bluetooth, karena Seringkali catu daya untuk modul tersebut adalah 3,3 V.

Indikator yang digunakan pada perangkat ini adalah indikator dua garis standar pada pengontrol HD44780. Transistor dirancang untuk mengontrol lampu latar indikator dengan sinyal logis dari mikrokontroler atau sinyal PWM dari mikrokontroler. Resistor R3 membatasi arus yang melalui basis transistor, resistor R1 menarik basis ke potensial nol.

Termometer didasarkan pada mikrokontroler yang beroperasi pada frekuensi 8 MHz dan mengontrol semua periferal di sekitarnya.

Sensor DHT-11 adalah sensor suhu dan kelembaban relatif berbiaya rendah yang digunakan dalam proyek sebagai sensor luar ruangan. Hal ini tidak ditandai dengan kecepatan dan akurasi yang tinggi, tetapi digunakan dalam proyek radio amatir karena biayanya yang rendah. DHT-11 terdiri dari sensor kelembaban kapasitif dan termistor. Selain itu, sensor berisi ADC sederhana untuk mengubah nilai analog kelembaban dan suhu.

Karakter utama:

  • biaya rendah;
  • tegangan suplai 3 V - 5 V;
  • transmisi data melalui bus 1-Wire pada jarak hingga 20 m;
  • penentuan kelembaban 20-80% dengan akurasi 5%;
  • konsumsi arus maksimum 2,5 mA;
  • penentuan suhu 0...50° dengan akurasi 2%;
  • frekuensi polling tidak lebih dari 1 Hz (tidak lebih dari sekali setiap 1 detik);
  • dimensi 15,5 × 12 × 5,5 mm;

Perlu dicatat bahwa Anda dapat menemukan sensor DHT-22 yang dijual, yang memiliki antarmuka yang sama, tetapi karakteristiknya lebih baik.

Sensor dihubungkan ke mikrokontroler melalui bus 1-Wire (konektor JP3 pada diagram) menggunakan resistor pull-up pada jalur data dan kapasitor pemblokiran pada catu daya.

Sensor internal adalah sensor suhu analog yang banyak digunakan LM35 IC5, yang dihubungkan ke saluran 1 mikrokontroler ADC.

Konektor J1 dari antarmuka pemrograman dalam sirkuit mikrokontroler memungkinkan Anda dengan cepat mengubah kode program atau memperbarui perangkat lunak. Untuk menghubungkan termometer melalui antarmuka UART, digunakan konektor JP1. Tombol kontrol SW1 dihubungkan ke masukan interupsi eksternal mikrokontroler; masukan ini dihubungkan ke catu daya melalui resistor internal port.

Modul Bluetooth untuk transfer data nirkabel, yang ditunjukkan dalam diagram sebagai IC3, GP-GC021 juga terhubung ke antarmuka UART mikrokontroler dan memungkinkan Anda mentransfer data ke PC, ponsel, atau server web. Papan sirkuit tercetak menyediakan ruang untuk memasang modul. Bagian download berisi deskripsi modul, proses interaksi dan perintah.

Indikator LCD dipasang di bagian depan papan sirkuit tercetak di konektor, sehingga menyembunyikan komponen yang dipasang di papan utama, dan kami mendapatkan perangkat yang ringkas. Tempat pemasangan modul Bluetooth ada di bagian belakang papan sirkuit tercetak (lihat foto papan).

Penampilan papan sirkuit cetak yang sudah jadi untuk termometer


Gambar PCB di Eagle CAD

Papan dengan modul Bluetooth terpasang

Unduhan

Diagram skematik dan papan sirkuit tercetak (Eagle), perangkat lunak (kode sumber, firmware) -
Perpustakaan untuk bekerja dengan indikator LCD pada pengontrol HD44780 -
Deskripsi teknis untuk modul Bluetooth GP-GC021 -

Atau analognya. Perangkat ini memiliki akurasi yang baik, kekebalan terhadap kebisingan, dan, dibandingkan dengan solusi analog, menyederhanakan rangkaian secara signifikan. Batas suhu yang diukur oleh sensor tersebut biasanya dibatasi pada kisaran -55 hingga 125 ºС. Apa yang harus dilakukan jika Anda perlu mengukur suhu di atas 125 °C? Tentunya Anda perlu menggunakan sensor analog yang kisaran suhunya bisa mencapai +300 °C. Perlu diperhatikan bahwa dalam hal ini keakuratan pengukuran akan menurun. Namun seringkali, ketika mengukur suhu tinggi, tidak perlu mengetahui nilai pastinya, dan kesalahan beberapa derajat dapat diterima, dan ketika ditampilkan pada skala analog, misalnya, pada garis LED, kesalahan tersebut akan sama sekali tidak terlihat. .

Untuk pengoperasian normal perangkat pada suhu 0...250 °C, sensor analog dipilih, rentang pengoperasiannya adalah -40+300 °C. Parameternya disesuaikan dengan kisaran suhu yang dipilih. Mikrokontroler (MK) bertanggung jawab untuk pengolahan data. Tentu saja, yang lain bisa digunakan, tetapi menurut penulis MK ini adalah salah satu yang paling mudah diakses dan populer. Bit sekering tertinggal dari pabrik. Saat memecahkan masalah, kriteria pengukuran yang akurat dikesampingkan. Kesalahan dalam beberapa derajat sudah cukup memuaskan.

Tampilan digital hasil pengukuran

Layar LCD digunakan untuk menampilkan data secara digital. Jika diinginkan, perangkat dapat ditingkatkan dengan memodifikasi kode program. Ada cukup port I/O gratis untuk ini. Layar LCD terhubung melalui bus 4-bit (Gambar 1). Digit orde tinggi dari indikator D4 - D7 dihubungkan ke digit orde rendah D0 - D4 dari mikrokontroler. Karena tidak ada pengaturan waktu yang tepat pada perangkat ini, resonator kuarsa master eksternal tidak diperlukan. Pin kontrol tampilan terhubung ke port PB6 dan PB7. Seperti yang Anda lihat, semua garis kontrol tampilan keluar dari satu sisi casing MK, yang menyederhanakan penelusuran papan sirkuit tercetak.

Perhitungan nilai suhu

Dari Gambar 1 terlihat bahwa sensor suhu analog dihubungkan langsung dengan input ADC mikrokontroler. Jika digunakan penguat operasional, kesalahan pengukuran akan lebih kecil. Tegangan disuplai ke ADC melalui pembagi yang dibentuk oleh termistor dan resistor variabel. Untuk akurasi penyetelan yang lebih baik, resistor variabel dipilih menjadi multi-putaran.

Tabel 1. Ketergantungan resistensi pada suhu.

Suhu ºС

Resistansi Ω

Dengan membuat grafik di Mathcad berdasarkan Tabel 1 (Gambar 2), Anda dapat melihat ketergantungan resistansi sensor analog pada suhu yang diterapkan. Sumber data tabel diambil dari uraian teknis KTY84_130. Fungsinya hampir linier, dengan hanya sedikit penyimpangan pada suhu tinggi.

Pada suhu terukur 0 ºС, resistansi termistor adalah 498 Ohm. Tegangan pada keluaran pembagi adalah

  • U D - tegangan pada sensor suhu relatif terhadap tanah,
  • U PIT - tegangan suplai,
  • R D - resistansi sensor suhu,
  • R 1 - atur resistansi resistor variabel.

Pada suhu 0 ºС, tegangan pada input ADC harus 0,6 V. Untuk menghitung nilai suhu, penulis menggunakan rumus sebagai berikut:


  • ADC - Kode ADC digital 10-bit diambil dari sensor,
  • U OTC - nilai batas (60), sama dengan 0,6 V pada 0 ºС.

Kisaran suhu terukur dari 0 ºС hingga 250 ºС sesuai dengan tegangan input ADC yang berasal dari pembagi dari 0,6 hingga 1,8 V. Tegangan referensi ADC adalah 5 V, oleh karena itu, dengan nilai yang ditunjukkan, kode digital akan berada di berkisar antara 123 hingga 368. Nomor ini ditempatkan di register dan diubah menjadi kode ASCII tiga digit. Karena sensor KTY84_130 dirancang untuk suhu maksimum 300 ºС, lebih baik menyisakan sedikit margin dan membatasinya hingga 250 ºС.

Gambar 5 menunjukkan perangkat yang dirakit pada papan tempat memotong roti. Kode programnya terbuka, dan siapa pun dapat dengan mudah memodifikasinya sesuai kebutuhannya.

Perangkat lunak MK dan model virtual Proteus untuk LCD 16×2 -

Perangkat lunak MK dan model virtual Proteus untuk LCD 8×2 -

Deskripsi pengoperasian termometer

Tujuan termometer ini hanya untuk menunjukkan suhu. Perbedaan kecil dengan skema serupa lainnya hanya pada format keluaran suhu pada indikator LED yaitu CA04-41SRWA super terang 4 digit. DS18B20 digunakan sebagai sensor suhu pada sambungan normal dengan kabel listrik terpisah.

Rangkaian ini dirancang untuk ditenagai oleh baterai, sehingga ketika listrik dihidupkan, indikator tidak menunjukkan apa-apa. Program termometer mengalami inisialisasi dan segera masuk ke mode tidur. Mode tidur mikrokontroler memungkinkan Anda menghemat energi dari catu daya. Saat Anda menekan tombol yang terhubung ke PORTB0, indikasinya menyala.
Indikator menampilkan petunjuk:



Kemudian pembacaan suhu sendiri ditampilkan pada indikator.



Jenis keluaran bacaannya adalah sebagai berikut:






Bentuk keluarannya hanya berbeda untuk suhu positif rendah. Saat menunjukkan suhu seperti itu, tanda “C” ditambahkan ke simbol “derajat”. Artinya, derajat Celcius. Simbol “derajat” ada pada indikator pada setiap suhu yang diukur.

Sensor suhu DS18B20 mengukur suhu dengan resolusi 0,0625 derajat Celcius. Termometer membaca pembacaan dari sensor dan membulatkannya ke sepersepuluh derajat terdekat. Sepersepuluh derajat ditampilkan di semua mode tampilan, kecuali untuk suhu yang lebih rendah dari -10 derajat Celcius. Hal ini dilakukan agar pembacaan suhu negatif selalu memiliki tanda minus.

Pembacaan ditampilkan pada indikator selama 30 detik. Kemudian perangkat masuk ke mode tidur lagi dan indikator mati.


Memodelkan termometer di Proteus


Model Proteus memungkinkan untuk mengerjakan bagian perangkat lunak termometer tanpa merakit perangkat itu sendiri menjadi perangkat keras. Semua mode telah diuji. Tidak ada kegagalan simulasi dalam program ini.



Modelnya sendiri dapat diunduh dari link: termo_i_v2.DSN

Diagram skema termometer


Sirkuit digambar berdasarkan desain papan sirkuit tercetak. Pertama, pengkabelan papan sirkuit tercetak dilakukan agar panjang konduktor dan letak bagian-bagiannya optimal, dan hanya setelah port mikrokontroler PIC16F628A pada papan sirkuit tercetak sesuai dengan pin indikator CA04-41SRWA, diagram sirkuit yang tepat telah dibuat.


Papan sirkuit termometer


Selamat siang, para pembaca yang budiman. Sesuai dengan judul artikelnya, kita akan membahas tentang termometer yang dirakit pada PIC. Jadi. Mengapa dan bagaimana semuanya dimulai?!
Saya memerlukan diagram termometer sederhana untuk ruang bawah tanah garasi. Saya mulai mencari skema yang cocok di Internet. Kriteria penting adalah penggunaan jumlah minimum elemen dalam rangkaian. Saya akan segera mengatakan bahwa ada banyak sekali rangkaian termometer online. Tetapi! Paling sering mereka dibuat pada AVR yang, dengan penyesalan terdalam saya, saya bukan teman. Jadi saya mulai mencari sirkuit PIC. Tapi bahkan di sini saya kecewa. Ada skema untuk termometer PIC. Tetapi mereka menggunakan transistor untuk indikator, atau kuarsa eksternal, atau hal lain yang memperumit rangkaian dan tidak dapat diterima dalam kasus saya. Akhirnya, setelah pencarian yang lama, skema yang cocok untuk saya ditemukan di sini:

http://www.labkit.ru/html/show_meter?id=38
Dan hal itu berhasil diulang beberapa kali. Semuanya bekerja dengan baik. (di situs web penulis sirkuit ini terdapat firmware dan papan sirkuit tercetak untuk mereplikasi termometer ini). Seiring berjalannya waktu. Dan suatu saat, kekurangan rangkaian ini pertama kali menjadi jelas dan saya juga perlu menggunakan indikator dengan Common Cathode (di situs penulis firmware hanya untuk Common Anode). Sekarang tentang kekurangan skema di sumber aslinya. Awalnya rangkaian penulis tidak memiliki resistor pull-up untuk sensor suhu. Artinya, tidak ada resistor 4,7K di rangkaian. Ya, memang, dengan desain rangkaian ini, termometer dapat berfungsi, tetapi hanya jika sensor suhu disolder langsung ke papan, atau panjang kabel tempat sensor berada tidak boleh melebihi panjang kabel satu meter. , satu setengah meter. Tidak lagi. Jika tidak, indikator akan mulai menunjukkan sesuatu yang tidak masuk akal, bukan suhu.
Pergantian peristiwa ini tidak membuat saya bahagia sama sekali. Karena saya membutuhkan panjang kabel dengan sensor minimal 10 meter.
Masalah ini diatasi dengan sangat sederhana dan cepat, yaitu dengan memasang resistor pull-up 4,7K pada sensor. Setelah itu sensor mulai bekerja secara stabil untuk semua panjang kabel. Tetapi bagaimana jika saya hanya memiliki indikator dengan katoda biasa! Dan firmware dibuat untuk anoda... Di sinilah Stanislav Dmitriev membantu saya. Untuk itu saya sangat berterima kasih padanya. Dia tidak hanya menulis firmware untuk common anode. Tetapi juga untuk katoda umum dan untuk berbagai jenis sensor suhu (DS18S20 atau DS18B20). Hal ini memungkinkan untuk lebih menyatukan skema ini. Dan merekomendasikannya untuk pengulangan. Dimungkinkan juga untuk menggunakan perangkat tujuh segmen empat-bit dan tujuh-segmen tiga-bit dalam rangkaian. Ini bukan hal yang besar, tapi tetap menjadi nilai tambah.
Sekarang sirkuitnya sendiri

Seperti yang Anda lihat, diagramnya tidak berbeda dengan yang disajikan di situs http://www.labkit.ru
Ini adalah bagaimana hal itu awalnya dimaksudkan. Satu-satunya perubahan pada rangkaian adalah pemasangan resistor tambahan. Saya tidak menggambar ulang diagram dari awal. Saya baru saja menambahkan elemen sirkuit yang hilang. Intinya, jika Anda ingin lebih menyederhanakan rangkaian dan Anda memiliki sumber daya 5V yang stabil, Anda dapat mengecualikan penstabil linier dari rangkaian. Dan nyalakan MK langsung dari 5V.
Sekarang mari kita bicara sedikit tentang cara menyesuaikan sendiri firmware untuk indikator atau sensor yang Anda perlukan. Semuanya sederhana di sini.

Setelah memuat file firmware ke programmer, Anda sendiri: berdasarkan apa yang Anda butuhkan dan melihat tangkapan layar ini, tulis parameter yang Anda perlukan ke dalam file firmware di bagian EPROM. Setelah itu Anda dapat mem-flash pengontrol.

Dalam papan sirkuit cetak versi saya, papan tersebut menyediakan ruang tidak hanya untuk penstabil linier, tetapi juga untuk jembatan dioda (yang memungkinkan rangkaian diberi daya dengan tegangan dari 7,5V hingga 12V. Papan juga menyediakan ruang untuk pemasangan. blok terminal, yang memungkinkan Anda untuk tidak menyolder sensor suhu ke papan, dan menjepitnya dengan klem. Ini berguna saat mengganti sensor, atau saat memasang sensor pada kabel panjang.

Gambar papan

Seperti yang Anda lihat, termometer dipasang pada dua papan. Yang satu dilengkapi dengan indikator tujuh segmen (tiga atau empat digit). Semua elemen sirkuit lainnya dipasang di papan kedua. Papan dihubungkan satu sama lain menggunakan sisir, atau, dalam kasus saya, dengan kabel..
Di bagian akhir adalah foto termometer saya yang sudah jadi.

Termometer digital, yang dirakit sendiri dari awal, tidak hanya akan berfungsi untuk tujuan yang dimaksudkan, tetapi, seperti segala sesuatu yang dibuat dengan tangan Anda sendiri, termometer ini akan meningkatkan harga diri Anda (dan mungkin dalam beberapa tahun akan menjadi berharga sebagai sebuah kenangan).

Tidak diragukan lagi, termometer digital di rumah tangga adalah barang yang berguna, tetapi tidak terlalu berfungsi: selain mengukur suhu, tidak berorientasi pada hal lain. Dalam hal ini, termometer pada mikrokontroler akan lebih berguna, karena memiliki kemampuan untuk menghidupkan dan mematikan beban apapun tergantung pada perubahan suhu.

Namun, jika Anda ingin melakukan sesuatu yang berharga dengan tangan Anda sendiri, maka, sebagai langkah pertama, desain seperti itu sepenuhnya dapat dibenarkan - pengalaman yang Anda peroleh sangat berharga.

Jadi, untuk memulainya, mari kita pilih rangkaian termometer paling sederhana yang dibangun pada mikrokontroler PIC16F84A, sensor suhu digital DS18B20 dengan akurasi pengukuran hingga 0,5 derajat, dan indikator LED empat digit dengan anoda umum. Dalam kasus saya, tampilan FYQ-3641BG-21E digunakan.

Keuntungan dari rangkaian ini adalah kesederhanaannya - dari elemen diskrit kita memerlukan selusin resistor, beberapa kapasitor, dan resonator kuarsa 4 MHz. Kerugian utamanya adalah, seperti semua perangkat elektronik, termostat memerlukan sumber listrik.

Penggunaan baterai membuat perangkat mobile, namun masa pakai satu set baterai hanya bisa 1-2 minggu. Memberi daya pada termometer dari sumber listrik “mengikatnya” ke stopkontak mana pun, yang tidak selalu nyaman.

Saya akan menambahkan bahwa diagram tidak menunjukkan sambungan daya ke mikrokontroler - daya plus disuplai ke pin 14, dan daya minus disuplai ke pin 5 sirkuit mikro.