MicroPython ESP32 ADC(模拟量转数字量)示例
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MicroPython ESP32 ADC(模拟量转数字量)示例相关的知识,希望对你有一定的参考价值。
MicroPython ESP32 ADC(模拟量转数字量)示例
ADC (模拟量转数字量)
在ESP32 ADC功能可用的引脚是32-39。注意,当使用默认配置时,ADC引脚上的输入电压在0~1V,超过1V虽然不至于烧但是度数就4095了 衰减输入还是有必要的,以适配弱的ADC.
- 本示例基于
Thonny
平台开发
ADC属于machine模块中类
查询
machine
相关内置的功能模块,
MicroPython v1.19.1 on 2022-06-18; ESP32 module with ESP32
Type "help()" for more information.
>>> import machine
>>> help(machine)
object <module 'umachine'> is of type module
__name__ -- umachine
mem8 -- <8-bit memory>
mem16 -- <16-bit memory>
mem32 -- <32-bit memory>
freq -- <function>
reset -- <function>
soft_reset -- <function>
unique_id -- <function>
sleep -- <function>
lightsleep -- <function>
deepsleep -- <function>
idle -- <function>
disable_irq -- <function>
enable_irq -- <function>
bitstream -- <function>
time_pulse_us -- <function>
Timer -- <class 'Timer'>
WDT -- <class 'WDT'>
SDCard -- <class 'SDCard'>
SLEEP -- 2
DEEPSLEEP -- 4
Pin -- <class 'Pin'>
Signal -- <class 'Signal'>
TouchPad -- <class 'TouchPad'>
ADC -- <class 'ADC'>
ADCBlock -- <class 'ADCBlock'>
DAC -- <class 'DAC'>
I2C -- <class 'I2C'>
SoftI2C -- <class 'SoftI2C'>
I2S -- <class 'I2S'>
PWM -- <class 'PWM'>
RTC -- <class 'RTC'>
SPI -- <class 'SPI'>
SoftSPI -- <class 'SoftSPI'>
UART -- <class 'UART'>
reset_cause -- <function>
HARD_RESET -- 2
PWRON_RESET -- 1
WDT_RESET -- 3
DEEPSLEEP_RESET -- 4
SOFT_RESET -- 5
wake_reason -- <function>
PIN_WAKE -- 2
EXT0_WAKE -- 2
EXT1_WAKE -- 3
TIMER_WAKE -- 4
TOUCHPAD_WAKE -- 5
ULP_WAKE -- 6
ADC功能相关的函数
>>> from machine import ADC
>>> help(ADC)
object <class 'ADC'> is of type type
init -- <function>
block -- <function>
read -- <function>
read_u16 -- <function>
read_uv -- <function>
atten -- <function>
width -- <function>
ATTN_0DB -- 0
ATTN_2_5DB -- 1
ATTN_6DB -- 2
ATTN_11DB -- 3
WIDTH_9BIT -- 9
WIDTH_10BIT -- 10
WIDTH_11BIT -- 11
WIDTH_12BIT -- 12
ADC.atten(attenuation)
:这个函数允许设置ADC输入的衰减量。这允许更大的输入电压范围,但代价是精度(现在相同的比特数代表更大的范围)。可能的衰减选项是:
ADC.ATTN_0DB: 0dB 衰减,最大输入电压为1v,这是默认配置
ADC.ATTN_2_5DB: 2.5dB 衰减, 最大输入电压约为1.34v
ADC.ATTN_6DB: 6dB 衰减, 最大输入电压约为2.00v
ADC.ATTN_11DB: 11dB 衰减, 最大输入电压约3.6v
ADC.width(width)
:这个函数允许设置ADC利用的位数,在ADC读取时返回使用,列表如下:
ADC.WIDTH_9BIT: 9 bit data
ADC.WIDTH_10BIT: 10 bit data
ADC.WIDTH_11BIT: 11 bit data
ADC.WIDTH_12BIT: 12 bit data - 这是默认的配置
ADC程序示例
from machine import Pin, PWM, ADC #引入ADC模块
from time import sleep
frequency = 5000
led = PWM(Pin(2), frequency)
pot = ADC(Pin(34)) #定义34脚为ADC脚(在32~39上可用),可以读取模拟电压
pot.width(ADC.WIDTH_12BIT) #读取的电压转为0-4096;ADC.WIDTH_9BIT:0-511
pot.atten(ADC.ATTN_11DB) #衰减设置范围:输入电压0-3.3v
while True:
pot_value = pot.read() //4 #使读取的电压变为0-1024
print(pot_value) #打印出读取到的电压以便调试
if pot_value < 15:
led.duty(0)
else:
led.duty(pot_value) #通过读取电位器的电压调节灯的占空比
sleep(0.1) #每100ms读取一次
shell调试窗口输出信息
以上是关于MicroPython ESP32 ADC(模拟量转数字量)示例的主要内容,如果未能解决你的问题,请参考以下文章
Arduino ESP8266 RF433数据传输实验二(传输ADC模拟量信号)
micropython(esp8266)adc采集通过tcp发送采集的数据
micropython(esp8266)adc采集通过tcp发送采集的数据