Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Tertanam

Seberapa rendah (daya) yang bisa Anda gunakan?

Dalam posting terakhir saya, “Dasar-dasar mode daya rendah Arm Cortex-M”, kami menjelajahi dasar-dasar mode daya rendah yang dapat ditemukan di setiap prosesor Arm Cortex-M dan bagaimana kami dapat memanfaatkan instruksi WFI dan WFE untuk menempatkan prosesor tidur. Pertanyaan yang benar-benar tersisa adalah bagaimana mode daya rendah ini diimplementasikan pada mikrokontroler nyata dan bagaimana mode tersebut memengaruhi sistem tertanam kami? Dalam postingan ini, kita akan membahas lebih detail bagaimana kita dapat menidurkan mikrokontroler dan melihat berapa banyak energi yang membeli kita.

Eksperimen Mode Daya Rendah

Cara terbaik untuk menjelajahi mode daya rendah adalah dengan memilih mikrokontroler dan benar-benar menjalankan prosesor dalam berbagai mode daya rendah. Untuk posting ini, saya memutuskan untuk membersihkan papan NXP Kinetis-L Freedom yang saya coba dan benar yang tidak hanya saya coba tetapi juga telah digunakan di banyak produk, aplikasi, dan kursus. Saya juga memutuskan, benar atau salah, untuk mengukur tidak hanya jumlah energi yang diambil oleh mikrokontroler tetapi juga seluruh papan pengembangan. MCU biasanya merupakan salah satu perangkat yang paling haus daya di papan, tetapi saya sering menemukan bahwa mengukur seluruh arus sistem mengingatkan saya bahwa itu bukan satu-satunya konsumen energi di papan tulis. Mengoptimalkan mikrokontroler dapat membawa Anda jauh, tetapi itu tidak selalu satu-satunya perangkat yang mungkin memerlukan pengoptimalan energi.

Mulai dengan pengukuran dasar

Setiap kali saya bekerja untuk mengoptimalkan konsumsi energi suatu produk, pertama-tama saya mulai dengan melakukan pengukuran energi dasar. Ini biasanya dilakukan dengan membuat profil penarikan perangkat saat ini selama beberapa detik atau menit untuk memahami dari mana kita mulai. Untuk percobaan papan pengembangan saya, saya membiarkan Kinetis-L dalam mode berjalan tanpa penerapan tidur, semua periferal menyala dan mengatur papan untuk mengaktifkan LED secara berkala. Menggunakan IAR Embedded Workbench dengan debugger I-Jet dan I-Scope, saya dapat membuat profil baseline sederhana untuk papan saya ~16,9 mA saat LED mati dan ~18.0 mA saat LED menyala yang dapat dilihat di bawah ini Gambar 1. Seperti yang Anda lihat, penting untuk mencatat dari mana Anda melakukan pengukuran atau jika tidak, Anda dapat menyimpang secara signifikan dalam analisis Anda.

klik untuk gambar lebih besar

Gambar 1. Pengukuran arus papan pengembangan dengan sakelar LED sekali per detik. (Sumber:Penulis)

Mengoptimalkan Energi dengan Mode Tunggu dan Tidur Pulas

Cara tercepat untuk melihat penghematan energi adalah dengan menerapkan mode menunggu atau tidur nyenyak. Pemeriksaan lembar data untuk prosesor Kinetis-L menunjukkan bahwa mode tunggu menarik antara 3,7 dan 5,0 mA pada 3 volt. Dalam mode ini, CPU dan jam periferal dinonaktifkan tetapi lampu kilat berada dalam mode tidur yang memungkinkan prosesor tetap bangun dalam jangka waktu interupsi (12 – 15 siklus jam). Wait mode mudah diimplementasikan, kode untuk masuk ke wait mode bisa dilihat di bawah ini:

void Sleep_Wait(void)
{
      SCB_SCR &=~ SCB_SCR_SLEEPDEEP_MASK;
      asm(“WFI”);
}

Gulir atau seret sudut kotak ke perluas sesuai kebutuhan.

Dengan hanya dua baris kode tersebut, konsumsi papan pengembangan saat ini turun dari 18,0 mA menjadi 15,9 mA. Itu adalah penurunan 11,6% dalam konsumsi saat ini! Jika papan ditenagai oleh baterai 680 mA, masa pakai baterai perangkat akan berubah dari 37,8 jam menjadi 42,8 jam! Peningkatan lima jam dari hanya dua baris kode!

Apa yang hebat tentang mode daya tingkat tinggi ini adalah kita dapat dengan mudah mengambil langkah lebih jauh ini. Alih-alih menempatkan prosesor ke mode tunggu, kita dapat memindahkannya ke mode tunggu tidur nyenyak menggunakan kode berikut:

void Sleep_Deep(void)
{
      SCB_SCR |=SCB_SCR_SLEEPDEEP_MASK;
      asm(“WFI”);
}

Gulir atau seret sudut kotak ke perluas sesuai kebutuhan.

Yang kami lakukan hanyalah menyesuaikan satu bit dalam register SCB_SCR dan kami sekarang telah beralih dari penarikan arus 18 mA asli menjadi 14,8 mA. Itu adalah penurunan 17,8% dalam konsumsi saat ini! Sekali lagi, dengan asumsi papan ditenagai oleh baterai 680 mA, masa pakai baterai sekarang akan berubah dari 37,8 jam menjadi 46 jam! Ini adalah penghematan besar hanya dengan beberapa baris kode dan ini hanya puncak gunung es!

Memanfaatkan mode Stop dan VLLS untuk undian uA saat ini

Menggunakan mode berhenti memiliki potensi untuk lebih jauh menurunkan penarikan arus MCU hingga dua miliampere lainnya dengan menonaktifkan inti dan jam sistem. Apa yang akan Anda temukan adalah bahwa semakin rendah mode daya, semakin banyak kode yang diperlukan untuk mengimplementasikannya dan semakin kompleks kode untuk membangunkan sistem kembali. Kode untuk masuk ke mode stop pada Kinetis-L dapat dilihat di bawah ini:

void Sleep_Stop(void)
{
      volatile unsigned int dummyread =0;
      SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;
      SMC_PMCTRL |_ SMC_PMCTRL |_ STOPM_
      dummyread =SMC_PMCTRL;
      Sleep_Deep();
}

Gulir atau seret sudut kotak ke perluas sesuai kebutuhan.

Perhatikan bahwa mode berhenti dikendalikan melalui register kontrol manajemen daya dan setelah status disetel, fungsi Sleep_Deep dipanggil untuk menyelesaikan pengaturan mode daya dan menjalankan WFI.

Sampai saat ini, kita telah berbicara tentang gambar MCU 1 – 2 mA. Mikrokontroler modern akan memiliki mode daya yang dapat menarik microamps atau bahkan nanoamps! Prosesor Kinetis-L memulai debutnya kembali sekitar tahun 2013, dan mode Very Low Leakage Stop (VLLS) hanya menarik 135 hingga 496 microamp! Kode untuk menginisialisasi mode daya ini dapat dilihat di bawah ini:

void Sleep_VLLS1(void)
{
      volatile unsigned int dummyread =0;
      SMC_PMCTRL &=~ SMC_PMCTRL_STOPM_MASK;
     SMC_PMCTRL |=SMC_PMCTRL |=SMC_PMCTRL |
      SMC_VLLSTRL =SMC_VLLSCTRL_LLSM(1);
      dummyread =VLLS_CTRL;
      Sleep_Deep();
}

Gulir atau seret sudut kotak ke perluas sesuai kebutuhan.

Pada titik ini, mikrokontroler hampir tidak menggunakan energi sama sekali!

Pengaruh mode daya rendah pada latensi bangun

Seperti yang telah kita lihat sejauh ini, memindahkan prosesor ke mode daya yang lebih rendah dan lebih rendah adalah cara yang bagus untuk menghemat energi tetapi penghematan itu memerlukan biaya. Semakin rendah status energi prosesor, semakin banyak waktu yang dibutuhkan prosesor untuk bangun dan melakukan pekerjaan yang bermanfaat. Misalnya, jika saya menggunakan mode stop standar, dibutuhkan 2 us plus latensi interupsi agar prosesor bangun dan mulai mengeksekusi kode lagi. Lumayan. Namun, jika saya menggunakan salah satu mode VLLS pada Kinetis-L, saya akan memiliki latensi bangun untuk mem-boot prosesor ditambah lagi 53 hingga 115 mikrodetik! Ini mungkin tidak dapat diterima tergantung pada aplikasinya. Gambar 2 menunjukkan transisi tambahan dari mode daya rendah ke status berjalan pada Kinetis-L.

klik untuk gambar lebih besar

Gambar 2. Waktu transisi dari mode daya rendah ke berbagai mode pada Kinetis-L. (Sumber:Kinetis-L datasheet)

Kesimpulan

Semua mikrokontroler lengan akan memiliki mode daya rendah standar, tetapi setiap vendor silikon menyesuaikan mode daya rendah yang tersedia untuk pengembang. Seperti yang telah kita lihat, vendor silikon sering menawarkan beberapa mode yang bertindak sebagai buah gantung rendah yang memiliki efek minimal pada latensi bangun. Mereka juga menyediakan beberapa mode daya sangat rendah yang hampir mematikan prosesor dan hanya menarik beberapa ratus microamps atau kurang! Pengembang sering kali perlu menyeimbangkan jumlah energi yang ingin mereka gunakan dengan seberapa cepat mereka membutuhkan sistem mereka untuk bangun dan merespons peristiwa. Pertukarannya pasti khusus untuk aplikasi, jadi jangan berharap untuk dapat menjalankan mode daya terendah di setiap produk dan aplikasi.


Jacob Beningo adalah konsultan, penasihat, dan pendidik perangkat lunak tertanam yang saat ini bekerja dengan klien di lebih dari selusin negara untuk mengubah perangkat lunak, sistem, dan proses mereka secara dramatis. Jangan ragu untuk menghubunginya di [email protected], di situs webnya www.beningo.com, dan mendaftar untuk Buletin Bytes Tertanam bulanannya.


Tertanam

  1. Bagaimana Anda Dapat Memanfaatkan Pemantauan printer 3D Untuk Menskalakan Manufaktur Aditif?
  2. Bagaimana Anda Dapat Menskalakan Produksi Aditif Serial dengan Aditif MES?
  3. Bagaimana data IIoT dapat meningkatkan profitabilitas dalam lean manufacturing
  4. Berapa Banyak Realitas yang Dapat Anda Miliki dalam Otomasi Industri?
  5. Bagaimana Pemadaman Listrik Dapat Merusak Pasokan Listrik Anda
  6. Penyebab Faktor Daya Rendah
  7. Pelajari Cara Mengelas Kuningan Angkatan Laut
  8. Bagaimana Cara Mengisi Kapasitor?
  9. Bagaimana Menyesuaikan PDP Dapat Menghemat Uang Anda
  10. Bagaimana cara membuat hidraulik lebih kuat?