从零开始的MicroPython(六)ADC

上一篇:PWM

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)
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值