- Teknik Hemat Daya untuk Mikrokontroler
- 1. Mode Tidur
- 2. Modifikasi Dinamis Frekuensi Prosesor
- 3. Struktur Firmware Interrupt Handler
- 4. Firmware yang Dioptimalkan Daya
- Kesimpulan
Seperti halnya gas (bensin / solar) yang penting untuk sepeda, truk, dan mobil (ya, tidak termasuk Tesla!) Untuk bergerak, begitu pula tenaga listrik untuk sebagian besar aplikasi elektronik dan lebih lagi, untuk aplikasi berbasis sistem tertanam yang biasanya menggunakan baterai (energi terbatas) bertenaga, mulai dari ponsel biasa hingga perangkat rumah pintar.
Sifat daya baterai yang terbatas menyiratkan kebutuhan untuk memastikan tingkat konsumsi daya perangkat ini harus wajar untuk mendorong adopsi dan penggunaannya. Apalagi dengan perangkat berbasis IoT di mana sebuah perangkat diperkirakan bisa bertahan selama 8 - 10 tahun dengan sekali pengisian daya tanpa penggantian baterai.
Tren ini telah membuat penerapan pertimbangan daya rendah dalam desain sistem tertanam dan selama bertahun-tahun, perancang, insinyur, dan produsen di beberapa titik telah mengembangkan beberapa cara cerdas untuk secara efektif mengelola daya yang dikonsumsi oleh produk, untuk memastikan bahwa mereka bertahan lebih lama pada a pengisian tunggal. Banyak dari teknik ini berfokus pada mikrokontroler, yang merupakan jantung dari sebagian besar perangkat. Dalam artikel hari ini, kita akan menjelajahi beberapa teknik ini dan bagaimana teknik tersebut dapat digunakan untuk meminimalkan konsumsi daya di mikrokontroler. Meskipun Mikroprosesor mengkonsumsi lebih sedikit daya tetapi dapat digunakan ditempatkan di Mikrokontroler di mana-mana, ikuti tautan untuk mempelajari bagaimana Mikroprosesor berbeda dari Mikrokontroler.
Teknik Hemat Daya untuk Mikrokontroler
1. Mode Tidur
Mode tidur (umumnya disebut sebagai mode daya rendah) bisa dibilang merupakan teknik paling populer untuk mengurangi konsumsi daya di mikrokontroler. Mereka umumnya melibatkan penonaktifan sirkuit atau jam tertentu yang menggerakkan periferal tertentu dari mikrokontroler.
Tergantung pada arsitektur dan pabrikannya, mikrokontroler biasanya memiliki jenis mode tidur yang berbeda, dengan setiap mode memiliki kemampuan untuk menonaktifkan lebih banyak sirkuit internal atau periferal dibandingkan dengan yang lain. Mode tidur biasanya berkisar dari mode tidur nyenyak atau nonaktif, hingga mode siaga dan istirahat.
Beberapa mode yang tersedia dijelaskan di bawah. Perlu dicatat bahwa karakteristik serta nama mode ini dapat berbeda dari pabrikan ke pabrikan.
saya. Mode Idle / Tidur
Ini biasanya yang paling sederhana dari mode daya rendah untuk diterapkan oleh desainer. Mode ini memungkinkan mikrokontroler untuk kembali ke operasi penuh dengan kecepatan yang sangat cepat. Oleh karena itu, ini bukan mode terbaik, jika siklus daya perangkat, mengharuskannya untuk sangat sering meninggalkan mode tidur, karena sejumlah besar daya ditarik, ketika mikrokontroler keluar dari mode tidur. Kembali ke mode aktif dari mode standby biasanya berbasis interupsi. Mode ini diimplementasikan pada mikrokontroler dengan mematikan clock tree yang menggerakkan sirkuit CPU sementara clock frekuensi tinggi primer MCU tetap berjalan.. Dengan ini, CPU dapat melanjutkan operasi segera setelah pemicu pengaktifan diaktifkan. Gerbang jam telah digunakan secara ekstensif untuk memotong sinyal dalam mode daya rendah untuk mikrokontroler dan mode ini secara efektif gerbang sinyal jam di seluruh CPU.
ii. Modus siaga
Mode Siaga adalah mode daya rendah lainnya, yang mudah diterapkan oleh desainer. Ini sangat mirip dengan mode siaga / tidur karena juga melibatkan penggunaan gerbang jam di seluruh CPU, tetapi satu perbedaan utama adalah memungkinkan perubahan konten ram yang biasanya tidak terjadi pada mode siaga / tidur. Dalam mode Standby, periferal berkecepatan tinggi seperti DMA (akses memori langsung), Port Serial, ADC, dan periferal AES tetap berjalan untuk memastikan periferal tersedia segera setelah CPU aktif. Untuk MCU tertentu, RAM juga tetap aktif dan dapat diakses oleh DMA sehingga data dapat disimpan dan diterima tanpa campur tangan CPU. Daya yang ditarik dalam mode ini bisa serendah 50uA / MHZ untuk mikrokontroler daya rendah.
aku aku aku. Mode Tidur Nyenyak
Mode tidur nyenyak, umumnya melibatkan penonaktifan jam frekuensi tinggi dan sirkuit lain di dalam mikrokontroler sehingga hanya menyisakan sirkuit jam yang digunakan untuk menggerakkan elemen penting seperti pengatur waktu pengawas, deteksi brown out, dan daya pada sirkuit reset. MCU lain dapat menambahkan elemen lain untuk meningkatkan efisiensi secara keseluruhan. Konsumsi daya dalam mode ini bisa serendah 1uA tergantung pada MCU tertentu.
iv. Mode Stop / OFF
Mikrokontroler tertentu memiliki variasi yang berbeda untuk mode tambahan ini. Dalam mode ini, osilator tinggi dan rendah biasanya dinonaktifkan dan hanya menyisakan beberapa register konfigurasi dan elemen penting lainnya.
Fitur dari semua mode tidur yang disebutkan di atas berbeda dari MCU ke MCU tetapi aturan umumnya adalah; semakin dalam tidur, semakin banyak jumlah periferal yang dinonaktifkan selama tidur, dan semakin rendah jumlah daya yang dikonsumsi, meskipun ini biasanya juga berarti; semakin tinggi jumlah energi yang dikonsumsi untuk membuat sistem kembali aktif. Dengan demikian, terserah desainer untuk mempertimbangkan variasi ini dan memilih MCU yang tepat untuk tugas tersebut tanpa membuat kompromi yang mempengaruhi spesifikasi sistem.
2. Modifikasi Dinamis Frekuensi Prosesor
Ini adalah teknik lain yang sangat populer untuk mengurangi jumlah daya yang dikonsumsi oleh mikrokontroler secara efisien. Sejauh ini, ini merupakan teknik tertua dan sedikit lebih rumit daripada mode tidur. Ini melibatkan firmware yang secara dinamis menggerakkan jam prosesor, bergantian antara frekuensi tinggi dan rendah karena hubungan antara frekuensi prosesor dan jumlah daya yang dikonsumsi adalah linier (seperti yang ditunjukkan di bawah).
Penerapan teknik ini biasanya mengikuti pola ini; ketika sistem dalam keadaan idle, firmware menyetel frekuensi clock ke kecepatan rendah yang memungkinkan perangkat menghemat daya dan ketika sistem perlu melakukan komputasi berat, kecepatan clock dinaikkan kembali.
Ada skenario kontraproduktif untuk memodifikasi frekuensi prosesor yang biasanya disebabkan oleh firmware yang dikembangkan dengan buruk. Skenario seperti itu muncul ketika frekuensi clock dijaga tetap rendah saat sistem melakukan komputasi berat. Frekuensi rendah dalam skenario ini berarti sistem akan membutuhkan lebih banyak waktu daripada yang diperlukan untuk melakukan tugas yang ditetapkan dan dengan demikian secara akumulatif akan mengonsumsi jumlah daya yang sama yang coba dihemat oleh perancang. Dengan demikian, kehati-hatian ekstra harus diberikan saat menerapkan teknik ini dalam aplikasi kritis waktu.
3. Struktur Firmware Interrupt Handler
Ini adalah salah satu teknik manajemen daya yang paling ekstrem di mikrokontroler. Hal ini dimungkinkan oleh beberapa mikrokontroler seperti, inti ARM cortex-M yang memiliki bit sleep-on-exit di register SCR. Bit ini memberikan mikrokontroler kemampuan untuk tidur setelah menjalankan rutinitas interupsi. Meskipun ada batasan jumlah aplikasi yang akan berjalan lancar dengan cara ini, ini bisa menjadi teknik yang sangat berguna untuk sensor lapangan dan aplikasi berbasis pengumpulan data jangka panjang lainnya.
Sebagian besar teknik lain menurut saya adalah variasi dari yang sudah disebutkan di atas. Misalnya teknik pencatatan jam kerja periferal selektif pada dasarnya adalah variasi dari mode tidur di mana perancang memilih periferal untuk dihidupkan atau dimatikan. Teknik ini membutuhkan pengetahuan yang mendalam tentang mikrokontroler target dan mungkin tidak terlalu ramah bagi pemula.
4. Firmware yang Dioptimalkan Daya
Salah satu cara terbaik untuk mengurangi jumlah daya yang dikonsumsi oleh mikrokontroler adalah dengan menulis firmware yang efisien dan dioptimalkan dengan baik. Ini secara langsung mempengaruhi jumlah pekerjaan yang dilakukan oleh CPU per waktu dan ini, dengan ekstensi berkontribusi pada jumlah daya yang dikonsumsi oleh mikrokontroler. Upaya harus dilakukan saat menulis firmware untuk memastikan ukuran dan siklus kode yang berkurang karena setiap instruksi yang tidak perlu dijalankan, adalah sebagian dari energi yang disimpan dalam baterai yang terbuang percuma. Berikut adalah beberapa tip umum berbasis C untuk pengembangan firmware yang dioptimalkan;
- Gunakan Kelas "Static Const" sebanyak mungkin untuk mencegah penyalinan runtime dari array, struktur, dll. Yang menghabiskan daya.
- Gunakan Pointer. Mereka mungkin adalah bagian bahasa C yang paling sulit untuk dipahami oleh para pemula, tetapi mereka adalah yang terbaik untuk mengakses struktur dan serikat secara efisien.
- Hindari Modulo!
- Variabel lokal di atas variabel global jika memungkinkan. Variabel lokal terkandung dalam CPU sementara variabel global disimpan dalam RAM, CPU mengakses variabel lokal lebih cepat.
- Tipe data yang tidak ditandatangani adalah teman terbaik Anda jika memungkinkan.
- Gunakan "hitung mundur" untuk loop jika memungkinkan.
- Alih-alih bidang bit untuk bilangan bulat tak bertanda tangan, gunakan bit mask.
Pendekatan untuk mengurangi jumlah daya yang dikonsumsi oleh mikrokontroler tidak terbatas pada pendekatan berbasis perangkat lunak yang disebutkan di atas, pendekatan berbasis perangkat keras seperti teknik kontrol tegangan inti, ada, tetapi untuk menjaga panjang posting ini dalam kisaran yang wajar, kami akan menghemat mereka untuk hari lain.
Kesimpulan
Menerapkan produk berdaya rendah dimulai dari pilihan mikrokontroler dan ini bisa sangat membingungkan ketika Anda mencoba untuk membahas beragam pilihan yang tersedia di pasar. Saat memindai, lembar data mungkin bekerja dengan baik untuk mendapatkan kinerja umum MCU, tetapi untuk aplikasi yang sangat membutuhkan daya, ini bisa menjadi pendekatan yang sangat mahal. Untuk memahami karakteristik daya mikrokontroler yang sebenarnya, pengembang harus mempertimbangkan spesifikasi kelistrikan dan fungsi daya rendah yang tersedia untuk mikrokontroler. Desainer seharusnya tidak hanya memperhatikan konsumsi saat ini oleh masing-masing mode daya yang diiklankan oleh lembar data MCU, mereka juga harus melihat waktu bangun, sumber bangun, dan periferal yang tersedia untuk digunakan selama mode daya rendah.
Penting untuk memeriksa fitur mikrokontroler yang akan Anda gunakan untuk memastikan opsi yang Anda miliki untuk implementasi daya rendah. Mikrokontroler telah menjadi salah satu penerima manfaat terbesar dari kemajuan teknologi dan sekarang ada beberapa mikrokontroler berdaya sangat rendah yang memastikan Anda memiliki sumber daya untuk membantu Anda tetap dalam anggaran daya. Beberapa dari mereka juga menyediakan beberapa alat perangkat lunak analisis daya yang dapat Anda manfaatkan, untuk desain yang efektif. Favorit pribadi adalah lini mikrokontroler MSP430 dari Texas Instrument.