How can we help you today?
【感測】供電電壓 | dual2s-mini | MPY-LLM
簡介:
dual2s-mini開發板具有內建供電電壓偵測電路,GPIO腳位為36。
準備:
材料與工具
本文範例使用【DUAL22-2s開發板】為示範。
GPIO與電路
dual2s-mini開發板內建供電電壓感測電路接於【G36】腳位。此接腳採用分壓電路輸入,如圖所示。
韌體範例
基本偵測架構(需要調整)
from machine import ADC, Pin
import time
# 初始化ADC物件,將G36設為輸入腳位
adc = ADC(Pin(36))
adc.atten(ADC.ATTN_11DB) # 設定電壓範圍為 0V 到 3.6V
while True:
# 讀取ADC值並將其轉換為電壓
raw_value = adc.read()
voltage = raw_value / 4095 * 3.6 # 4095是12位ADC的最大值,3.6是電壓範圍
# 將電壓值輸出到串列埠
print("Voltage: {:.2f} V".format(voltage))
# 每3秒檢測一次
time.sleep(3)
分壓電阻考量
ESP32電壓感測腳位G36,分壓電阻:偵測電壓端阻值為100K、接地端阻值為33K。提供MPY範例程式:每3秒偵測一次,並將電壓值輸出於串列埠上。
由於電壓感測引腳的最大輸入電壓為3.3V,透過使用100K和33K的分壓電阻,可以偵測較高的電壓(約13.6V的範圍),以下程式碼已考慮了此分壓比(100K / (100K + 33K) ≈ 0.25)。
from machine import ADC, Pin
import time
# 初始化G36為ADC引腳
adc = ADC(Pin(36))
adc.width(ADC.WIDTH_12BIT) # 設定解析度為12位元 (範圍 0-4095)
adc.atten(ADC.ATTN_11DB) # 設定輸入範圍為 0 - 3.6V
# 分壓比常數計算 (100K / (100K + 33K))
DIVIDER_RATIO = (100 + 33) / 33
while True:
# 讀取ADC值
adc_value = adc.read()
# 計算實際電壓值
voltage = (adc_value / 4095) * 3.3 * DIVIDER_RATIO
# 輸出電壓到串列埠
print("Voltage: {:.2f} V".format(voltage))
# 每3秒偵測一次
time.sleep(3)
執行續導入
from machine import ADC, Pin
import time
import _thread
# 初始化G36為ADC引腳
adc = ADC(Pin(36))
adc.width(ADC.WIDTH_12BIT) # 設定解析度為12位元 (範圍 0-4095)
adc.atten(ADC.ATTN_11DB) # 設定輸入範圍為 0 - 3.6V
# 分壓比常數計算 (100K / (100K + 33K))
DIVIDER_RATIO = (100 + 33) / 33
# 電壓偵測函式
def voltage_monitor():
while True:
# 讀取ADC值
adc_value = adc.read()
# 計算實際電壓值
voltage = (adc_value / 4095) * 3.3 * DIVIDER_RATIO
# 輸出電壓到串列埠
print("Voltage: {:.2f} V".format(voltage))
# 每3秒偵測一次
time.sleep(3)
# 啟動電壓偵測執行緒
_thread.start_new_thread(voltage_monitor, ())
# 這裡可以繼續控制其他元件,不會被電壓偵測影響
while True:
# 假設其他控制程式放在這裡
# 比如控制馬達、LED等其他任務
print("Running other tasks...")
time.sleep(1)