STM32. Latihan penurunan berat badan atau diet untuk pengontrol



Omong kosong macam apa, beberapa pembaca mungkin akan berpikir ketika mereka melihat judul publikasi. Apakah penulis membuat kesalahan pada sumber daya? Atau apakah sudah direncanakan untuk meletakkannya di hub "Geek Health"? Dan mereka akan sebagian benar, tetapi hanya sebagian ... Di bawah potongan, kita akan berbicara tentang metode untuk mengurangi dan mengoptimalkan konsumsi energi perangkat elektronik.


Beberapa waktu yang lalu, papan X-NUCLEO-LPM01A jatuh ke tangan saya, yang untuk sementara waktu menganggur sampai saya memutuskan untuk mempelajari konsumsi daya dari satu perangkat yang dirancang dengan daya otonom.



Papan ini dikembangkan oleh STMicroelectronics dan diposisikan sebagai "Perisai daya, papan ekspansi Nuklir untuk pengukuran konsumsi daya". Saya tidak menemukan penjelasan bahasa Rusia yang jelas di jaringan untuk bekerja dengan devkit ini dan memutuskan untuk mencari tahu sendiri, tetapi pada saat yang sama berbagi informasi dengan komunitas habro yang disegani.


Jika kami menyoroti yang utama, papan ekspansi adalah sumber daya yang dapat diprogram dari 1,8 hingga 3,3 volt dengan kemampuan untuk mengukur arus beban dalam waktu nyata (dalam mode dinamis hingga
50 mA) dengan frekuensi pengambilan sampel hingga 100 kHz. Perangkat dapat beroperasi baik secara mandiri maupun sebagai bagian dari kompleks perangkat keras-perangkat lunak. Untuk menampilkan secara grafis nilai yang diukur, utilitas STM32Cube MonitorPower digunakan . Perangkat lunak ini juga memungkinkan Anda untuk mengatur semua parameter yang diperlukan dan melakukan pemrosesan pada saat terjadinya suatu peristiwa (pemicu peluncuran). X-NUCLEO-LPM01A diasah untuk bekerja dengan papan Nucleo-32 (64, 144), Arduino Nano (Uno), untuk tujuan ini perisai yang sesuai ditempatkan di atasnya, tetapi dimungkinkan untuk bekerja dengan papan yang sewenang-wenang. Foto di bawah ini menunjukkan koneksi perangkat yang sedang dipelajari ke salah satu konektor di papan tulis.




Selain perangkat lunak aplikasi, X-NUCLEO-LPM01A mendukung mode perintah, yang mana program terminal mana pun harus bekerja. (Di sini saya tampaknya sedikit bersemangat, HTerm mendapat luka dengan setengah tendangan, tapi saya harus bermain sedikit dengan ZOC favorit saya). Selain itu, dilihat dari deskripsi, melalui penggunaan driver VCP, perangkat dapat menuangkan data ke port COM dengan kecepatan hingga 3686400 baud. Kecepatan tinggi semacam itu dipastikan khususnya dengan mentransmisikan aliran data biner (untuk frekuensi sampling di atas 50 KHz), untuk karakter ASCII kecepatannya sedikit lebih rendah.


Lebih khusus, tugas yang akan saya coba pecahkan menggunakan X-NUCLEO-LPM01A adalah:

  1. Untuk mendapatkan informasi tentang konsumsi daya dinamis dari simpul yang diminati dalam produk yang dirancang menggunakan pemicu pemicu X-NUCLEO-LPM01A di tempat yang dipelajari dari kode program.

  2. Dalam proses operasi perangkat yang berkelanjutan untuk mengatur akumulasi fragmen yang diperlukan untuk analisis umum selanjutnya.


Tangkapan layar di bawah ini menunjukkan log saat ini dari kartu SD selama perekaman data.




STM32Cube MonitorPower tidak hanya memungkinkan secara kualitatif, tetapi juga secara kuantitatif mengevaluasi konsumsi energi perangkat yang diteliti. Nilai minimum, maksimum, rata-rata dari arus yang dikonsumsi dan nilai energi terintegrasi ditunjukkan di bagian bawah gambar. Data tersebut tersedia untuk seluruh pengukuran dan untuk fragmen yang dipilih.


Dalam manual Pengguna, dicatat bahwa pemicu pemicu pengukuran dilakukan oleh impuls pada kaki perisai arduino D7. Ternyata, hanya satu awal proses dengan pekerjaan perekaman kontinu berikutnya. Upaya untuk mengatur mode mulai-berhenti untuk merekam arus (di kedua sisi pulsa) tidak berhasil. Artinya, setelah mulai merekam di tempat yang tepat di depan naik, tidak mungkin untuk memperlambat proses dengan jatuh depan pulsa. Dan ini tidak seperti yang saya harapkan dari perangkat ini.


Mode start-stop yang sepenuhnya dikontrol dapat diatur menggunakan urutan perintah dari program terminal

tim

deskripsi

htc

menangkap kontrol host

volt 3300-03

tegangan suplai pada saluran yang diukur 3300 mV

acqtime 0

pengukuran terus menerus tanpa batas waktu

freq 10000

frekuensi sampling 10 kHz

mulai

mulai dari pengukuran

...

pengukuran (data dituangkan ke terminal)

berhenti

akhir pengukuran


Masalahnya adalah bahwa ini adalah kontrol manual yang tidak disinkronkan dengan peristiwa di pengontrol target. Tentu saja, Anda dapat mencoba untuk membentuk urutan perintah yang ditunjukkan pada sisi perangkat yang sedang dipelajari, bukan host, tetapi kemudian aliran output data dari X-NUCLEO-LPM01A juga akan memercikkan ke controller dan tidak jelas apa yang harus dilakukan dengan mereka, dan pengalihan output "somewhere_to_other_place_" juga tidak tersedia, ( meskipun ada UART Tx, pin Rx di papan tulis, mereka muncul sebagai "dipesan" dalam manual dan mungkin tidak terlibat dalam versi firmware saat ini). Saya keluar dari situasi ini sebagai berikut:


Urutan perintah berikut ini dibentuk di sisi host (komputer)

tim

deskripsi

htc

menangkap kontrol host

volt 3300-03

tegangan suplai pada saluran yang diukur 3300 mV

acqtime 1

durasi pengukuran
(kisaran 10 μs hingga 10 detik dapat digunakan)

trigsrc d7

sinkronisasi awal pengukuran dengan sisi yang naik
pulsa pada pin D7

freq 10000

frekuensi sampling 10 kHz

mulai

mulai dari pengukuran

...

pengukuran (data dimulai di tepi denyut nadi dan berhenti
tuangkan setelah waktu yang ditentukan dalam acqtime)


Sekarang data akan ditangkap dalam batch, bukan dalam aliran kontinu. Pendekatan ini memungkinkan Anda menjelajahi konsumsi sirkuit di berbagai tempat program dan pada interval waktu yang berbeda, yang cukup jauh satu sama lain. Artinya, jika ada kebutuhan untuk mengumpulkan informasi tentang konsumsi energi perangkat yang bekerja satu jam (hari, minggu), Anda tidak perlu menulis aliran kontinu, dan bahkan dengan laju pengambilan sampel maksimum, dan kemudian memahami kekacauan ini, tetapi cukup sediakan algoritma operasi di atas. Dan jika program terminal menulis penanda waktu ke log-nya, seperti yang ditunjukkan pada gambar di bawah ini, maka menguraikan kronologi peristiwa dari file seperti itu akan sangat sederhana.




Ini seperti perekam video dengan deteksi gerakan dan cap waktu.


Biarkan saya memberi Anda beberapa tangkapan layar yang diperoleh menggunakan X-NUCLEO-LPM01A . Yang pertama adalah konsumsi daya controller saat membaca data dari ADC built-in. 32 nilai dibaca oleh penghenti waktu dengan frekuensi 4 KHz dan disimpan dalam memori.




Pada yang kedua - pembacaan dan penyimpanan data yang serupa, tetapi hanya pengontrol "memungkinkan dirinya untuk tidur" setelah setiap pengukuran, sampai penghentian pengatur waktu berikutnya terjadi, menggunakan salah satu mode hemat energi yang tersedia.




Sebuah delta signifikan dalam konsumsi saat ini selama pengukuran, ~ 6 mA, segera terlihat. Dua contoh ini tidak mengklaim untuk mengoptimalkan konsumsi daya perangkat berdaya rendah, tetapi hanya menunjukkan kemampuan X-NUCLEO-LPM01A , yang mampu mengukur arus dari 1 nA.


Sebagai kesimpulan, saya akan mengatakan bahwa, menurut pendapat saya yang sederhana, devkit ini tampaknya menjadi alat yang sangat cocok yang dapat mengambil tempat yang selayaknya di sebelah osiloskop dan penganalisa sinyal logika pada tabel embedder. Dan penggunaan pendekatan yang dijelaskan akan memungkinkan tidak hanya untuk "memoderasi selera pengontrol" dalam pengembangan perangkat kritis daya, tetapi juga untuk lebih memahami dinamika proses dalam berbagai mode hemat energi yang secara aktif digunakan oleh pengembang perangkat elektronik modern.


Biaya papan - lebih dari 7000 rubel, membayangi pelangi gambar, tetapi dapatkah jumlah yang begitu kecil di zaman modern menghentikan geek sejati dari memiliki devkit yang indah ini?


NB Meskipun ada indikasi dalam UM bahwa UART dicadangkan untuk aplikasi masa depan, saya masih terjebak di dalamnya dan menemukan bahwa itu hidup sebagai antarmuka kedua (I / O diduplikasi dari VCP) pada kecepatan 921600 8N1 dan dapat digunakan sebagai perintah, membentuk mulai dan berhenti untuk awal - akhir pengukuran. Kelemahan dari pendekatan ini adalah ketersediaan wajib dari UART gratis di sisi controller yang diteliti, belum lagi fakta bahwa 921600 baud sering tidak mungkin pada frekuensi clock rendah.


PPS Sudah setelah menulis artikel, saya melihat perbedaan pada gambar terakhir ~ 2 mA di pintu masuk pengukuran dan di akhir. Saya mungkin tidak mematikan pencatatan jam kerja ADC, atau saya meninggalkan penghitung waktu untuk bekerja, tetapi ini, seperti yang suka dikatakan Leonid Kanevsky: "cerita yang sama sekali berbeda" ...


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


All Articles