上一篇:PWM
文章目录
- ADC是什么
- ESP32的ADC
- 代码
ADC是什么
ADC的英文全称是Analog / Digital Converter,是将模拟信号转换为数字信号的转换器,ADC是单片机读取传感器信号的常见方式。
我们日常生活中的信号,例如光照强度,声波,电池电压 这些都是模拟值。 如果我们想通过单片机对模拟信号(电压,光照强度,声波)进行测量,用数字信号进行表达,这个时候我们就需要ADC 模拟数字信号转换器。
简单来说,模拟量是连续的,我们需要转换成高低电平这样的离散值,单片机才能理解。
我们可以在烟雾传感器、光敏传感器上看到AO、DO的引脚,AO就是Analog output,DO是Digital Output,具体到读取的意义就是AO是光照强度,DO是有没有光照。
ESP32的ADC
在ESP32里面ADC一共有两组,分为ADC 1 还有ADC 2, 其中又因为ESP32的ADC2不能与WIFI联网同时存在,当连接WIFI的时候ADC 2的管脚就不能进行ADC采样,所以MicroPython-ESP32固件里面,并没有实现对ADC 2的支持。
ADC 类为模数转换器提供了一个接口,并表示一个端点,可以对连续电压进行采样并将其转换为离散值。
用法示例:
import machine
adc = machine.ADC(pin) # create an ADC object acting on a pin
val = adc.read_u16() # read a raw analog value in the range 0-65535
构造函数
classmachine.ADC(id)
访问与id标识的源关联的 ADC 。这个 id可以是一个整数(通常指定一个通道号)、一个 Pin对象或底层机器支持的其他值。
方法
ADC.read_u16()
获取模拟读数并返回 0-65535 范围内的整数。返回值表示 ADC 获取的原始读数,按比例缩放,最小值为 0,最大值为 65535。
代码
from machine import Pin, ADC
import time
DO = Pin(32, Pin.IN)
AO = ADC(Pin(33), atten = ADC.ATTN_11DB)
while True:
print('DO = ', DO.value())
print('AO = ', AO.read())
sleep(5)