Daya Baterai untuk Perangkat MySensors

Musik ini akan bertahan selamanya jika saya mengganti baterai (C)



Opus ini didedikasikan untuk penelitian saya tentang kekuatan perangkat nirkabel otonom yang merupakan bagian dari sistem rumah pintar MySensors.


Pertama ada lithium ...


Sebaliknya, baterai lithium-ion dan lithium-polimer.


Untuk waktu yang lama, baterai dari gadget lama ini terakumulasi dalam sebuah kotak. Saya pikir - ini dia, kekuatan universal untuk semua mikrokontroler berukuran kecil. Selain itu, tegangan 3.3-4.2V sangat baik untuk AVR, serta untuk semua jenis ESP dan STM. Untuk keandalan, Anda dapat menempatkan stabilisator LDO dari daya yang diperlukan dan mendapatkan 3,3 stabil untuk MK dan seluruh perangkat.



Tapi ternyata, tidak semuanya baik-baik saja.


  1. Baterai perlu diisi. Untuk melakukan ini, Anda perlu membuatnya dapat dilepas, atau menambahkan modul pengisian daya ke perangkat Anda, yang, pada gilirannya, memberi tambahan biaya, dimensi, dan lubang pengisian daya pada case. Dan tidak selalu nyaman untuk mengisi daya perangkat, misalnya, sensor cuaca di luar jendela.
  2. Baterai lithium (seperti kebanyakan catu daya pada umumnya) tidak cocok untuk digunakan pada suhu rendah. Pada sensor cuaca yang terpasang pada jendela, di musim dingin, baterai langsung tenggelam dalam cuaca beku.
  3. Selama operasi jangka panjang, jika tegangan baterai tidak dipantau tepat waktu, Anda dapat melepaskannya "ke nol", yaitu, di bawah nilai yang diizinkan, yang dijamin dapat membunuhnya. Jadi, Anda perlu perlindungan terhadap kelebihan muatan.
  4. Berbagai ukuran dan kapasitas baterai secara signifikan membatasi pengulangan perangkat dalam penutup yang identik. Dan cadangan baterai lama dengan cepat berakhir - sebagai akibatnya, perlu untuk membeli di tempat yang baru. Dan, ternyata, biaya sumber daya seperti itu ternyata sangat sedikit dan menambahkan setidaknya $ 2 untuk biaya masing-masing perangkat (dan memperhitungkan papan pengisian dan banyak lagi). Terlebih lagi, tidak ada penghematan dari daya isi ulang, karena sebagian besar pengendali otonom mengkonsumsi sangat sedikit energi dan dapat bekerja selama berbulan-bulan tanpa pengisian ulang.

NiMH dan baterai AA / AAA lainnya bahkan lebih buruk. Mereka perlu diisi dalam pengisi daya khusus, mereka memiliki "efek memori" dan tegangan awalnya rendah (1,2-1,3V), dan ketika dihubungkan secara seri karena perbedaan dalam resistansi internal, salah satu baterai dapat habis lebih dari yang lain, yang lagi-lagi menyebabkan pembusukan.


Dan lagi, lithium ...


Sekarang ada baterai lithium 3.0V bulat berukuran kecil, yang saya memutuskan untuk meninggalkan baterai yang berubah-ubah dan mahal.


Baterai CR2032 digunakan di sejumlah besar komputer BIOS, meter listrik, dan perangkat lain dengan RTC, jam tangan, kalkulator, dan berbagai mainan. Dengan dimensi kecil dan harga murah, mereka memiliki tegangan 3.0V, yang cukup memadai untuk MK dan kapasitas yang layak 200-250mA / jam untuk dimensi mereka.



Tapi sekali lagi, masalah. Faktanya. bahwa arus searah baterai tersebut hanya 0,4mA. Jika Anda memuatnya dengan arus yang lebih tinggi, tegangan baterai akan turun, meskipun kemudian sebagian atau sepenuhnya pulih. Mode tidur khas Mysensor mengkonsumsi beberapa microamp. Tetapi dalam mode transfer - sudah sekitar 15-20mA. Pada saat yang sama, versi baru dari pustaka MySensors memaksa perangkat untuk mengirim banyak paket - ping, salam, presentasi, mencari gateway atau router, yang menghasilkan pengoperasian modul radio yang panjang, kadang-kadang beberapa detik. Pada tegangan sekitar 2V, NRF24L01 Cina murah mulai gagal, dan kadang-kadang bahkan tidak mungkin untuk membuatnya menjadi mode sleep () sleep dari MySensors.


Hasilnya, semuanya berfungsi dengan baik pada baterai baru, tetapi saat baterai habis, masalah komunikasi meningkat, modul radio mulai membanjiri lebih banyak di udara, meningkatkan pelepasan baterai. Pada akhirnya, tegangan turun ke titik di mana seluruh perangkat berhenti tidur, dan kemudian reboot siklus terjadi hingga baterai benar-benar habis.


Tergantung pada pabrikan dan "kesegaran" baterai, perangkat dapat bekerja dari beberapa hari hingga sebulan. Jika Anda membeli baterai murah di aliexpress, maka ada lotre. Transisi ke CR2450 dan CR2477 yang lebih luas menghemat sedikit, tetapi mereka tidak tahu bagaimana memberi arus lebih dari 0,5mA untuk waktu yang lama.


Untuk sementara saya bereksperimen dengan boost converter , yang memungkinkan baterai mempertahankan tegangan operasi normal untuk MK hingga remah-remah energi terakhir, tetapi mereka memiliki arus diam yang kecil, tetapi tidak nol, yang mengurangi masa pakai keseluruhan.


Jari kelingking - jari kelingking



Saatnya untuk tenang dan mengadopsi pengalaman China "maju", untuk memberi daya pada semua perangkat Anda dari tiga AAA (baterai tidak termasuk). Namun dia memutuskan untuk mencari solusi dengan setidaknya dua baterai 1,5 volt.


Saya berhenti pada skema seperti itu dengan stabilisator NCP1400 yang meningkat :



Dua baterai AAA alkaline yang terhubung seri pada awalnya memberikan 2.7-3.1V pada akhir periode produksi, mengurangi tegangan menjadi 1-2V


Ketika NCP1400 mati (level rendah pada input kontrol), daya baterai segera pergi ke MC melalui kumparan L1 dan Schottky diode D1 dengan penurunan tegangan minimum sekitar 0,1V. Jika level tinggi diterapkan pada input kontrol, maka penstabil NCP1400 akan dimulai dan memberikan tegangan 3,3V ke MK dengan total tegangan baterai 0,8V hingga 3,1V.


Algoritma operasi adalah sebagai berikut:


  1. Waktu utama controller berada di PowerDownMode, semua periferal, termasuk NRF24, dinonaktifkan atau juga dalam mode daya rendah.
  2. MC meninggalkan mode tidur dengan gangguan dari penghitung waktu atau oleh gangguan eksternal (misalnya, di sakelar dengan gangguan dari tombol), tegangan suplai VCC (fungsi bawaan pengontrol AVR) diukur.
  3. Jika tegangan suplai lebih besar dari 3V (atau tegangan lainnya cukup untuk operasi periferal yang stabil), maka NCP1400 tidak memulai dan semua pemrosesan dilakukan pada tegangan suplai ini sampai siklus tidur berikutnya.
  4. Jika tegangan lebih rendah dari 3V, stabilizer NCP1400 dinyalakan, tegangan suplai diatur ke 3.3V, semua pemrosesan rutin perangkat dilakukan, termasuk mengirim data melalui NRF24
  5. Selanjutnya, jika tegangan di atas 1,7V (tegangan yang cukup untuk keluar dari mode tidur MC), NCP1400 dimatikan sampai siklus bangun berikutnya.
  6. Jika tegangannya kurang dari 1,7 (tegangan minimum MK), maka NCP1400 tidak mati sampai pengontrol reboot atau sampai tegangan suplai turun di bawah 0.8V (voltase NCP1400)

Sketsa algoritma ini
#define MY_RF24_CE_PIN 9 #define MY_RF24_CS_PIN 10 #define MY_RF24_POWER_PIN 8 #define MY_RADIO_NRF24 #include <MySensors.h> #define PIN_NCP1400 2 #define CHILD_ID_VCC 0 MyMessage msgVcc(CHILD_ID_VCC, V_VOLTAGE); bool low_power = false; int readVcc(); // void before(){ pinMode(PIN_NCP1400,OUTPUT); digitalWrite(PIN_NCP1400,HIGH); } void presentation(){ sendSketchInfo("NCP1400 test", "1.0"); present(CHILD_ID_VCC, S_MULTIMETER,"mV"); } // void loop(){ int vcc = 1000; if( low_power == false ){ vcc = readVcc(); digitalWrite(PIN_NCP1400,HIGH); //  NRF1400 } if( vcc < 1700 )low_power = true; //      NRF1400 send(msgVcc.set(vcc)); //  VCC if( low_power == false )digitalWrite(PIN_NCP1400,LOW); //  NRF1400 sleep( 300000 ); //      5  } /** *     VCC  */ int readVcc() { long result; // Read 1.1V reference against AVcc ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); delay(2); // Wait for Vref to settle ADCSRA |= _BV(ADSC); // Convert while (bit_is_set(ADCSRA,ADSC)); result = ADCL; result |= ADCH<<8; result = (1100L * 1023)/result; return((int)result); } 

Pengujian


Dan bagaimana kita menangani konsumsi saat ini dalam praktek? Saya menghubungkan sirkuit saya ke LBP dan melakukan pengukuran konsumsi arus dan tegangan output.



Pemalasan arus dengan NCP1400 dimatikan dan tegangan input 1-3 V adalah 0,3 μA. Bahkan lebih rendah dari yang dinyatakan oleh datasheet 0.5mkA (atau mungkin pada kisaran ini perangkat saya memberikan kesalahan besar). Tetapi dengan stabilizer dinyalakan tanpa beban, arus berubah menjadi besar secara tak terduga - lebih dari 0,3 mA. Ternyata pull-up resistor R1 menyebabkan konsumsi besar. Mengganti peringkat R1 dari 10K ke 150K, saya mendapat 30 μA pada tegangan input 3.0 V dan 44 μA pada 1.0 V.


Jika Anda benar-benar menghapus resistor R1, maka stabilizer jika tidak menghubungkan input ini ke MC akan terus mengkonsumsi dengan 2V yang masuk sekitar 11 μA.
Sekarang saya menghubungkan mikrokontroler dengan NRF24L01 dan sensor HUD21, bekerja sesuai dengan algoritma yang dijelaskan di atas:


  • Tegangan input 3.0V - mode aktif (NCP1400 aktif) 32mA, mode tidur (NCP1400 mati) 9mkA
  • Tegangan input 2.0V - mode aktif (NCP1400 aktif) 51mA, mode tidur (NCP1400 mati) 6mA
  • Tegangan input 1,7V - mode aktif (NCP1400 aktif) 63mA, mode tidur (NCP1400 mati) 5.6mA
  • Tegangan input 1.0V - NCP1400 terus menyala - mode tidur 197mkA
  • Tegangan input 0,5V - NCP1400 terus menyala - 397μA mode tidur

Konsumsi baterai aktif meningkat ketika daya berkurang. Tegangan 1,7V dipilih secara eksperimental. Di bawah nilai ini, mikrokontroler mungkin sudah tidak bekerja secara stabil. Ketika tegangan baterai turun di bawah ambang batas ini, stabilizer NCP1400 tidak lagi mati dan konsumsi dalam mode tidur cukup tinggi. Dalam mode ini, baterai tidak akan bertahan lama, tetapi akan ada cukup waktu untuk menggantinya.


Perwujudan di kelenjar


Dirancang papan daya universal untuk perangkat rumah pintar saya




Dan meskipun perangkat yang dibuat tidak sekompak baterai lithium, hasilnya cukup baik bagi saya. terutama mengingat biaya baterai alkaline di toko-toko Galomart, Kastorama, Leroyle, dll.



Saat ini, saya beroperasi di rumah lebih dari selusin perangkat berbeda untuk memantau suhu, kelembaban tanah, dll. Dalam sistem MuSensors / MajorDoMo.


Baca lebih lanjut di blog saya

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


All Articles