kelas ADCAll -- akses semua kanal ADC¶
ADCAll mengekspos setiap kanal ADC pada MCU melalui satu objek -- baik pin input analog eksternal maupun kanal internal untuk suhu chip, referensi 1,21 V, dan VBAT. Berguna untuk memantau rel suplai MCU dan sensor on-chip tanpa membuat instans ADC per pin.
Contoh:
import pyb
# 12-bit resolution, internal channels only (temp + VBAT + VREF).
adcall = pyb.ADCAll(12, 0x70000)
temp = adcall.read_core_temp()
vbat = adcall.read_core_vbat()
vref = adcall.read_core_vref()
vdda = adcall.read_vref()
Konstruktor¶
- class pyb.ADCAll(resolution: int, mask: int = 0xffffffff)¶
Menyediakan akses simultan ke setiap kanal ADC pada MCU, termasuk kanal internal untuk suhu chip, referensi internal 1,21 V, dan
VBAT. Konstruksi objek ini mengalihkan semua pin ADC eksternal yang ter-mask ke mode input analog.resolutionadalah resolusi konversi ADC dalam bit (biasanya8,10, atau12).maskadalah bitmask 32-bit yang memilih kanal mana yang akan diaktifkan; bitNmengaktifkan kanalN. Defaultnya adalah0xffffffff(semua kanal). Kanal internal berada di bit16(suhu),17(VBAT), dan18(VREF), sehingga untuk mengaktifkan hanya kanal internal, lewatkan0x70000.
Sensor suhu on-chip dikalibrasi di pabrik dan akurat hingga sekitar ±1 °C, tetapi mengukur suhu chip -- yang biasanya puluhan derajat di atas suhu sekitar ketika MCU aktif. Pembacaan hanya bermakna sebagai proksi untuk suhu sekitar pada board yang baru saja diaktifkan.
Peringatan
Tegangan input analog tidak boleh melebihi tegangan suplai aktual.
Metode¶
- read_channel(channel: int) int¶
Membaca kanal ADC yang diberikan. Kanal eksternal (
0--15) mengembalikan nilai mentah tanpa skala pada resolusi yang dikonfigurasi; kanal internal (16--18) juga mengembalikan nilai mentah, tetapi helper khusus di bawah ini mengonversinya ke tegangan.
- read_core_temp() float¶
Mengembalikan suhu on-die dalam derajat Celsius, dihitung dari kanal suhu internal dan nilai kalibrasi pabrik yang tersimpan dalam MCU.
- read_core_vbat() float¶
Mengembalikan tegangan baterai cadangan dalam volt. Pembacaan diambil melalui pembagi tegangan on-chip (sehingga headroom tidak membatasi rentang input ADC) dan diskalakan kembali ke tegangan baterai aktual. Pembagi hanya aktif selama konversi ADC, sehingga drain standby pada baterai cadangan dapat diabaikan.
- read_core_vref() float¶
Mengembalikan tegangan referensi internal 1,21 V (nominal) dalam volt, diukur dengan suplai MCU sebagai referensi ADC. Ini adalah hasil konversi mentah.
- read_vref() float¶
Mengembalikan tegangan suplai MCU dalam volt. Dihitung dengan mengukur referensi tegangan internal dan melakukan back-scaling menggunakan nilai kalibrasi pabriknya. Dengan rel 3,3 V yang sehat, pembacaan akan mendekati
3.3. MCU terus beroperasi -- dan konversi ADC tetap bermakna -- dengan suplai serendah sekitar 2 V, asalkan pengaturan clock MCU, kecepatan akses flash, dan mode pemrograman yang sesuai dipatuhi.