Suhu optimal di rumah atau cara memasang termostat di ruang belakang secara nirkabel


Bagi banyak orang, jauh dari rahasia bahwa perangkat seperti termostat mingguan membantu memastikan suhu kamar optimal di rumah, selain menghemat sumber daya energi yang dihabiskan untuk pemanasan. Untuk pengoperasian perangkat yang benar, biasanya ditempatkan di ruang terjauh, di mana suhu terendah. Tetapi sebagian besar termostat membutuhkan koneksi kabel ke boiler untuk kontrol dan jauh dari selalu mungkin untuk meletakkan kabel ini. Solusi untuk masalah ini akan dibahas dalam artikel ini. Siapa pun yang tertarik untuk meminta kucing ...

Saya harus menghadapi tugas yang sama. Pembangunan rumah saya cukup panjang, dan pemasangan termostat yang benar, saya perlu merentangkan lebih dari 50 m kabel melalui kamar dengan perbaikan yang sudah dilakukan, alternatifnya adalah meletakkan pada fasad, tetapi saya segera membuangnya. Selain itu, untuk mendapatkan kabel dari jalan ke boiler juga bermasalah, dan saya tidak ingin merusak tampilan fasad dengan kawat lain, tanpa itu ada cukup banyak. Ketel itu sendiri dipasang di dapur dan menempatkan termostat di sebelah keran adalah ide yang buruk. Akibatnya, saya sampai pada kesimpulan bahwa termostat masih harus dipindahkan ke ruang jauh, dan sinyal harus ditransmisikan ke udara. Proses mengembangkan kerajinan saya berikutnya dimulai seperti biasa dengan pernyataan masalah. Jadi mari kita mulai ...

TK


Tetapkan persyaratan untuk perangkat untuk menyelesaikan masalah.
  • Desain perangkat harus berukuran kecil dan ditempatkan dalam wadah estetika berwarna putih atau hitam.
  • Modul penerima dan pemancar harus diberdayakan oleh sepasang baterai AA.
  • Umur modul dari satu set baterai harus setidaknya satu tahun.
  • Koneksi ke termostat dan boiler gas harus dilakukan menggunakan antarmuka standar tanpa membuat perubahan desain.
  • Perangkat harus dirakit di pangkalan perangkat keras yang terjangkau dari pemasok lokal.


Perangkat keras


Ketika kami telah memutuskan persyaratan dasar, mari beralih ke desain. Mari kita mulai dengan perangkat kerasnya.
Berdasarkan spesifikasi teknis, persyaratan dasar untuk elemen dasar adalah: kemampuan untuk bekerja dalam rentang tegangan dari 1,8 hingga 3 volt. Serta kemampuan untuk beralih ke mode tidur, atau mematikan periferal ketika tidak diperlukan. Saya memutuskan untuk memulai jalur pilihan saya dengan pemilihan transceiver. Saya menganggap solusi paling sederhana dalam bentuk modul MX-FS-03V dan MX-05V, harganya tentu sangat menarik, tetapi kualitas ulasannya mengerikan, dan jangkauan komunikasi tidak begitu panas. Dan dalam kasus saya perlu mengirimkan sinyal melalui 4 dinding. Selain itu, ia awalnya bermaksud untuk membuat konfirmasi pengiriman, sehingga koneksi diperlukan dua arah, yang akan membutuhkan dua set. Modul LoRa dan berbagai modul seri HC juga dipertimbangkan. Kisaran itu masih terbatas pada apa yang dijual secara lokal. Akibatnya, setelah mempertimbangkan semua opsi yang tersedia, saya memutuskan untuk memilih modul SI4432 yang sudah jadi. Dalam hal rasio harga-kinerja, menurut saya mereka adalah yang terbaik.
Modul ini memiliki kemampuan teknis yang luas, dan juga sangat ekonomis dengan pengaturan yang dipilih dengan benar. Kemampuan untuk mengontrol daya keluaran juga sangat bermanfaat, karena Anda dapat memilih yang terbaik, sehingga mengurangi konsumsi daya baterai. Ini adalah tabel dengan spesifikasi dari dokumentasi.


Mari kita perhatikan secara lebih rinci indikator konsumsi energi dalam berbagai mode dari tabel. Kami akan membutuhkan data ini nanti untuk menghitung masa pakai baterai perangkat.

Dalam kasus kami, sudah dapat diterima untuk menggunakan mode Tidur, belum lagi shutdown lengkap oleh fungsi Shutdown.
Awalnya, saya seharusnya mengambil ATMega 8 sebagai prosesor sentral, tetapi setelah mempelajari dokumentasi lebih detail, saya menyadari bahwa itu tidak termasuk dalam kisaran tegangan suplai saya. Akibatnya, saya memilih ATMega 328P, sebagai Dia sepenuhnya memenuhi semua persyaratan saya. Ke depan, saya akan mengatakan bahwa fakta bahwa saya menemukan bootloader siap pakai untuknya, tetapi lebih lanjut tentang itu nanti, juga dimainkan untuknya.
Pertimbangkan pengontrol secara lebih rinci dalam hal konsumsi daya dan clocking inti.
Mari kita berurusan dengan pengaturan waktu terlebih dahulu. Karena kami memiliki rentang tegangan kerja hingga 3 volt, maka pilihan resonator kuarsa juga terbatas, dan grafik berikut memberi tahu kami tentang hal ini


Seperti yang kita lihat pada 8 MHz kita tidak bisa mendapatkan operasi yang stabil, oleh karena itu, kita akan menggunakan kuarsa pada 4 MHz.
Sekarang mari kita lihat konsumsi daya dalam berbagai mode operasi. Berikut adalah tabel dari dokumentasi yang menggambarkan karakteristik konsumsi daya.


Jadi, jika Anda mentransfer controller ke mode Power-Down, maka konsumsi mikrokontroler itu sendiri turun menjadi 44 uA dengan pemesanan tertentu, tentu saja.
Selain elemen yang sudah dipilih, kami akan menambahkan LED merah dengan arus kerja 1 mA.
Ini melengkapi komponen umum untuk penerima dan pemancar.
Pertimbangkan komponen tambahan untuk penerima.
Pada output termostat ruang konvensional terdapat kontak relai dengan kemampuan switching yang baik (250 V 5 A), jadi tidak masalah apa yang dikontrolnya, oleh karena itu, menurut kerangka acuan, receiver kami harus memiliki output relai yang sama. Tetapi bagaimana memastikan konsumsi daya relai yang rendah dalam mode hidup, karena koil bahkan relai terkecil mengkonsumsi puluhan miliamp, dan termostat pabrik bekerja dari satu set baterai normal tanpa berlebihan selama setidaknya 2 musim pemanasan. Saya memikirkan tugas ini selama beberapa hari, dan tiba-tiba selama perbaikan salah satu perangkat yang saya sadari, hanya ada estafet yang tahan lama. Dan mengapa selama perbaikan, tetapi karena mereka digunakan dalam perangkat yang sedang diperbaiki. Jenis relay ini mampu mempertahankan kondisinya untuk waktu yang tak terbatas tanpa konsumsi energi. Agar relai mengubah kondisinya, cukup untuk menerapkan pulsa ke koil yang diperlukan, dalam kasus dua relai gulungan, atau pulsa dalam polaritas terbalik, dalam kasus relai dengan satu belitan. Jadi, kami memutuskan jenis relay, tetapi apa yang harus dilakukan dengan model tertentu? Setelah mencari sedikit di Internet, saya sampai pada kesimpulan bahwa mendapatkan relay tegangan rendah akan menjadi masalah bagi saya, saya harus memikirkan relay 24V saya Takamisawa ALD24W-K. Tetapi solusi ini menimbulkan masalah baru - di mana mendapatkan 24 V?
Jawabannya ditemukan dengan cepat, mungkin itu bukan yang paling benar, tetapi tetap saja. Saya memutuskan untuk menginstal boost converter dan menaikkan tegangan hingga 20 V, itu sudah cukup untuk switching relay yang andal. Konverter mengambil dari modul yang cukup umum berdasarkan MT3608. Ini adalah solusi kerja yang saya uji lebih dari sekali, termasuk desain obeng listrik (Anda dapat membacanya di sini di Habré). Output EN memungkinkan Anda untuk mengontrol operasi konverter, yang secara signifikan mengurangi konsumsi daya. Sebenarnya, inilah data dari dokumentasi.


Setelah mengumpulkan semua informasi yang diterima bersama, saya menggambar diagram dari kedua perangkat:
Pemancar

Penerima


Setelah selesai dengan perangkat keras proyek, mari beralih ke algoritma dan implementasi perangkat lunak mereka.

Algoritma


Mari kita mulai dengan mengembangkan konsep dan algoritma kerja umum untuk perangkat kita. Gambar di bawah ini menunjukkan diagram urutan umum untuk semua perangkat yang terlibat dalam proses.


Seperti yang Anda lihat, algoritme tidak rumit, saya akan membuat presentasi naratif (well, saya terlalu malas untuk menggambar diagram alur, permisi). Mari kita mulai dengan pemancar, sebagai ini adalah yang paling sederhana dari sudut pandang algoritma. Mikrokontroler pemancar melakukan urutan berikut:
- Periksa status pengisian baterai, jika daya baterai rendah, debitnya ditunjukkan oleh LED bawaan.
- Menginterogasi status input.
- Mentransmisikan keadaan ini melalui udara.
- Menempatkan pemancar ke mode tidur dan tertidur selama 1 menit.
- siklus berulang dari awal.

Dengan penerima, hal-hal sedikit lebih rumit. Mikrokontroler bekerja sesuai dengan algoritma berikut:
- Periksa status pengisian baterai, jika daya baterai rendah, debitnya ditunjukkan oleh LED bawaan.
- kami menunggu paket dari pemancar, jika dalam 2 menit sinyal belum diterima, kami tertidur selama 59 detik, setelah itu siklus dimulai dari awal.
- jika sebuah paket tiba, kami mendapatkan status relai baru.
- jika keadaan relai baru berbeda dari yang disimpan sebelumnya, kemudian nyalakan konverter boost dan alihkan relai ke keadaan yang diinginkan.
- tertidur selama 59 detik
- ulangi siklus pertama
Jadi, ketika Anda pertama kali menghidupkan penerima, ia menunggu sinyal dari pemancar, segera setelah menerimanya, ia membuat perubahan dalam keadaan relai dan tertidur 1 detik kurang dari pemancar. Akibatnya, pada saat pengiriman baru, penerima sudah beroperasi dan menunggu pengiriman baru, yaitu seolah disinkronkan oleh pemancar. Akibatnya, konsumsi energi bisa dihemat dengan baik. Jika sinyal dari pemancar tidak diterima, maka kami menunggu maksimal 2 menit, interval seperti itu dipilih untuk menjamin bahwa sinyal ditangkap terlepas dari waktu pemancar dihidupkan. Tetapi ini sangat tidak ekonomis dan dimaksudkan hanya untuk sinkronisasi perangkat.

Waktu hidup


Ketika sudah jelas dengan algoritma, mari kita coba menghitung masa pakai baterai.
Mari kita beralih sedikit ke teori yang diperlukan untuk mendapatkan angka yang akurat ketika menghitung waktu pengoperasian sensor dari satu set baterai.
Jadi, pertama-tama kita akan melihat kapan dan berapa energi yang dihabiskan.
Pertimbangkan prosedur pengiriman lebih detail.
Untuk mentransmisikan keadaan relai, kita perlu membentuk paket dan mengirimkannya ke udara. Secara umum, struktur paket tersebut adalah sebagai berikut:


Saya menggunakan parameter pemancar default, yaitu FSK, No Manchester, Rb = 2.4kbs, Fd = 36kHz. Jumlah data yang dikirimkan dalam paket adalah 3 byte. Pembukaan akan berukuran 40 bit dari tabel:


Agar tidak menyelidiki hutan konfigurasi modul dan operasi perpustakaan, kami akan menerima parameter yang tersisa sebagai batas maksimum yang diizinkan. Sebagai hasilnya, kita mendapatkan ukuran paket total 5 byte + 4 byte + 4 byte + 1 byte + 3 byte + 2 byte = 19 byte, mis. 152 bit. Bahwa pada kecepatan 2400 bps, waktu transmisi akan sekitar 64 ms.
Kita beralih ke tabel konsumsi energi oleh modul di awal artikel dan mengambil darinya nilai arus selama transmisi dengan daya output 13 dBm. Jadi, saat mengirim data, modul menghabiskan 30 mA.
Dalam mode terima, modul akan secara statis mengkonsumsi 18,5 mA berdasarkan tabel yang sama.
Saya masih tidak bisa menerjemahkan modul ke mode Shutdown, untuk beberapa alasan saya tidak bisa mengeluarkannya dari koma, akibatnya saya membatasi diri saya ke mode Sleep, di mana modul tersebut menghabiskan 1 uA.
Juga, saat menerima dan mentransmisikan paket, saya menyalakan LED merah yang terhubung melalui resistor 1 kΩ menjadi 3,3 volt, ia mengkonsumsi sekitar 1 mA.
Mikrokontroler dalam mode bangun mengkonsumsi 2,4 mA, dan dalam mode tidur dengan WDT on - 44 uA. Data diperoleh dari tabel di atas.
Penerima juga memiliki kebocoran parasit saat termostat ditutup melalui pull-up resistor ke tanah (lihat diagram pemancar), jadi 3,3 V / 10 kOhm = 33 uA mengalir melaluinya. Menurut saya jumlah yang besar, jadi di sirkuit saya mengubah nilai resistor menjadi 100 kOhm, tetapi di setrika masih dirakit dengan 10 kOhm, jadi kami akan menganggapnya seperti itu.
Penerima memiliki lebih banyak konsumen. Pertama, ini adalah konverter boost 20 volt. Dalam mode tidur, ia mengkonsumsi 1 uA. Dalam operasi siaga, konsumsi akan menjadi 2,2 mA, dalam program ini saya menunggu 100 ms untuk memulai konverter. Relay coil bertindak sebagai beban bagi kami, karakteristiknya ditunjukkan di bawah ini:


Jadi, ternyata kumparan dengan tegangan 20 volt akan mengkonsumsi 20 V / 1920 Ohm = 11 mA. Sekarang kita beralih ke grafik ketergantungan efisiensi pada konsumsi saat ini oleh beban untuk menilai total konsumsi konverter dengan koil relay yang terhubung.


Seperti yang Anda lihat, dengan konsumsi seperti itu, grafik tidak mencerminkan efisiensi, tetapi anggaplah grafik itu juga bergerak ke bawah secara linear, dan dalam kasus terburuk, efisiensinya akan sekitar 85%. Akibatnya, konsumsi saat ini adalah 11 mA / 0,85 = 13 mA. Perlu diakui bahwa, pada kenyataannya, arus puncak saat startup konverter akan setidaknya 1A, dan proses operasi dan start-up yang kompleks, dan saya bukan orang yang dapat menyatakannya dengan benar, jadi saya akan kehilangan mereka dan menyederhanakan proses sedikit.
Waktu pulsa yang dihasilkan oleh relai switching adalah 20 ms.
Sekarang kita telah mengetahui siapa yang mengkonsumsi energi dan berapa banyak, kita akan menghitung umur teoritis baterai AA. Sekali lagi, pertimbangkan penerima dan pemancar secara terpisah.
Mari kita mulai seperti biasa dengan pemancar. Mari kita ambil sebagai dasar algoritma pekerjaan yang diberikan di atas. Waktu bangun controller akan sedikit lebih lama dari waktu transmisi, dan dengan mempertimbangkan biaya pemasangan modul, polling input dan mengukur tegangan baterai akan menjadi 70 ms, maka controller akan dimasukkan ke mode sleep selama satu menit. Dengan demikian, dalam satu siklus operasi, controller akan mengkonsumsi 0,07 s * (30 mA pemancar + 1 mA LED + 2,4 mA MK) + 60 s * (44 uA MK + 1 pemancar uA + 33 masukan masukan resistor) = 2,338 mA * s + 4,68 mA * s = 7,018 mA * s. Membagi nilai yang diperoleh 60,07 detik, kami memperoleh nilai rata-rata saat ini untuk satu detik - 0,117 mA. Kapasitas rata-rata satu baterai ukuran AA adalah 2800 mA * h (saat dihubungkan secara seri, total kapasitas baterai tidak meningkat, jika tiba-tiba seseorang tidak tahu) - ini adalah 2800 * 3600 = 10080000 mA * s. Akibatnya, waktu operasi teoritis pemancar dari satu set baterai adalah 10080000 mA * s / 0,117 mA / 3600 s / 24 jam = 997 hari.

Sekarang tentang penerima. Kami juga akan mengambil sebagai dasar algoritma operasi yang dijelaskan di atas, tetapi dengan satu peringatan, kami menyalakan penerima dan pemancar hampir secara bersamaan, dan, oleh karena itu, penerima segera disinkronkan dengan pemancar.
Untuk itu, waktu bangun maksimum pengontrol akan menjadi jumlah waktu tunggu paket (penerimaan juga akan masuk ke dalamnya, karena interupsi oleh modul akan dihasilkan hanya setelah paket telah sepenuhnya diterima), menghapusnya dari modul, memulai konverter dan mengatur keadaan relay baru, serta mengukur tegangan baterai. Setelah meringkas semua data, kita dapatkan - 1,126 s, maka controller akan dimasukkan ke mode sleep selama 59 detik. Tapi sejak itu Karena siklus kerja lebih rumit daripada di penerima, perhitungan akan terdiri dari lebih banyak negara. Untuk satu siklus operasi, pengontrol akan mengkonsumsi 1,006 s * (penerima 18,5 mA + 2,4 mA MK) + 0,1 * (0,1 s * (penerima 18,5 mA + 1 mA LED + 2,4 mA MK + konverter 2,2 m pada XX) + 0,02 s * (18,5 penerima mA + 1 mA LED + 2,4 mA MK + 13 mA converter)) + 59 s * (44 uA MK + 1 penerima uA + 1 konverter uA) = 21,0254 mA + 0,1 * (2,41 mA + 0,698 mA) + 2,714 mA = 24.0502 mA * s. Koefisien 0,1 mencerminkan fakta bahwa hanya dalam satu dari 10 siklus kita mengganti relai. Membagi nilai yang diperoleh 60,126 s, kami memperoleh nilai rata-rata saat ini untuk satu detik - 0,4 mA. Kami akan menghitung masa pakai baterai. Akibatnya, waktu operasi teoritis penerima dari satu set baterai adalah 10080000 mA * s / 0,4 mA / 3600 s / 24 jam = 291 hari, dengan ketentuan bahwa kami mengubah status relai setiap 10 menit.
Jelas bahwa dalam perhitungan ini semua waktu selama lebih dari dua tahun tidak disadari karena karakteristik kimiawi dari perangkat baterai. Baterai AA tidak dapat bekerja selama lebih dari dua tahun dengan catu daya perangkat yang konstan, bahkan dengan arus yang dapat diabaikan, meskipun faktanya kapasitasnya harus cukup. Tetapi segala sesuatu yang berusia kurang dari dua tahun sudah akan menjadi batasan kapasitas. Sayangnya, hasil perhitungan untuk masa pakai penerima tidak sepenuhnya sesuai dengan spesifikasi teknis, tetapi dalam situasi ini, saya menjadikan diri saya sebagai konsesi.

Implementasi Kode


Jujur, saya skeptis terhadap Arduino dan IDE-nya yang serupa. Saya mulai memahami pemrograman mikrokontroler di C dan bekerja dengan register lebih mudah dipahami dan diprediksi bagi saya daripada panggilan terselubung ke fungsi tingkat tinggi. Meskipun secara umum saya telah mempelajari platform itu sendiri dan beberapa proyek kecil, saya masih melakukannya. Jadi kali ini kemalasan juga menguasai saya. Saya disuap oleh ketersediaan perpustakaan siap pakai untuk modul SI4432 untuk Arduino dan tidak benar-benar ingin membuang waktu mencoba porting ke CVAVR. Dan sisa kodenya sangat sederhana. Setelah menghabiskan beberapa malam mempelajari perpustakaan untuk bekerja dengan modul, serta mode tidur mikrokontroler, versi pertama sketsa penerima dan pemancar siap cukup cepat. Selanjutnya, perlu untuk merakit perangkat keras dan sudah melanjutkan pengembangan dengan perangkat keras nyata.

Itu hidup ...


Layanan online EasyEDA mengembangkan proyek dengan sirkuit dan papan sirkuit cetak. Saya tidak peduli dengan papan dua sisi, jadi saya meletakkan jumper di sisi belakang.
Ini adalah foto dari papan pemancar yang sudah selesai ...


... dan penerima.

Untuk baterai, saya membeli dudukan, dan juga membeli kasing. Jujur, saya menginginkannya dalam warna putih, tetapi kami tidak memiliki satu dalam stok, jadi saya harus mengumpulkannya dalam warna hitam.
Perakitan papan pertama kali dilakukan tanpa modul, karena Anda harus mengisi programer controller bootloader pertama. Dan karena modulnya 3,3 volt, dan programmer 5 volt dan mereka menggunakan bus yang sama, lebih baik solder modul setelah firmware. Memeriksa daya, memprogram bootloader. Karena tidak ada topeng solder di papan, saya menempelkan sepotong kapton di bawah modul. Disolder modul dan mulai men-debug firmware.Segera menginjak penggaruk dalam bentuk modul membeku, semuanya ternyata sederhana, 3-volt stabilizer yang saya gunakan tidak memberikan arus yang diperlukan, setelah menghubungkan LBP ke penerima dan baterai ke pemancar, semuanya bekerja dengan stabil. Selain itu, saya memasang kapasitor elektrolitik di sekitar konverter pada rangkaian daya untuk memulainya secara normal. Saya hanya perlu menambahkan sisa logika yang dijelaskan di atas. Pada antena standar, koneksi ternyata sangat stabil. Secara struktural, penerima dan pemancar sepenuhnya pas di rumah yang dibeli. Papan dipasang ke rak standar menggunakan sekrup self-tapping di bagian bawah kasing, dan saya pasang dudukan baterai ke pita dua sisi di bagian atas. Kasingnya tertutup rapat, jadi saya tidak mengikatnya dengan sekrup,dan lebih mudah untuk mengganti baterai. Sebagai hasil dari beberapa malam lagi dihabiskan untuk penyempurnaan dan pengujian, saya mendapatkan hasil yang selesai.




Bootloader


Beberapa kata harus diucapkan secara terpisah dengan mengorbankan loader. Untuk Arduino tidak ada loader standar untuk kuarsa 4MHz, mereka perlu dirakit secara terpisah, tetapi saya beruntung, dalam mencari informasi sebelum memulai desain, saya menemukan sebuah artikel oleh satu orang, ia membuat stasiun cuaca pada modul yang sama dan menghadapi masalah yang sama. Saya akan meninggalkan tautan ke artikel di bagian akhir. Ngomong-ngomong, saya sarankan membaca, orang itu juga bekerja keras. Akibatnya, ia memiliki bootloader yang sudah jadi di repositori-nya, dan karena ia berada di domain publik, saya menggunakannya.

Kesimpulan


Sebagai hasil dari menghabiskan lebih dari satu malam, sebuah struktur yang berfungsi dengan karakteristik yang diperlukan dibangun. Sekarang perangkat telah bekerja selama lebih dari 3 minggu, sejauh ini tidak ada keluhan tentang operasinya, tetapi waktu akan memberi tahu seberapa benar perhitungan saya.
Bagi mereka yang mengatakan bahwa mungkin untuk menempatkan relay pada 3 volt dan tidak mengacaukan konverter, saya akan menjawab bahwa saya sepenuhnya setuju dengan mereka. Tetapi bagi mereka yang memutuskan untuk mengulangi desain akan ada kesempatan untuk memilih solusi mereka. Pada akhirnya, insinyur harus membuat, dan tidak hanya menyalin konstruksi selesai ...
Terima kasih kepada semua orang yang menguasai artikel ini sampai akhir, saya harap itu menarik. Untuk semua pertanyaan, saran, dan komentar Anda, silakan komentar.

Referensi:


  1. Artikel Stasiun Cuaca
  2. Repositori GitHub
  3. Skema dan papan. Penerima
  4. Skema dan papan. Pemancar

Source: https://habr.com/ru/post/id431272/


All Articles