ESP32 3.2.3 ADC/DAC

2020-07-038275
AI 快速预览详细 收起
本文介绍了ESP32的ADC和DAC功能。ADC部分详细讲解了如何在专用引脚上读取模拟电压值,包括设置衰减比和数据宽度。DAC部分则展示了如何在专用引脚上输出特定电压。综合示例中,通过设置IO36为模拟输入口,读取并打印10次模拟电压值,每次间隔0.5秒。此外,还展示了如何创建一个DAC对象并输出特定电压。

ADC

注意:ADC在专用引脚上可用,可用引脚有:A2/IO34、A3/IO35、A0/IO36、A1/IO39,可测电压范围为0~3.3V。

class machine.ADC(pin)

pin:I/O引脚
    Pin(34)、Pin(35)、Pin(36)、Pin(39)

定义ADC对象

示例:

from machine import ADC, Pin

adc = ADC(Pin(34))

函数

1. ADC.read()

函数说明:读取ADC并返回读取结果。
示例:

x = adc.read()
print(x)

2. ADC.atten(db)

函数说明:设置衰减比(即满量程的电压,比如11db满量程时电压为3.3V)。

db:衰减比
    ADC.ATTIN_0DB、ADC.ATTN_2_5_DB、ADC.ATTN_6DB、ADC.ATTN_11DB

示例:

adc.atten(ADC.ATTN_0DB)

3. ADC.width(bit)

函数说明:设置数据宽度。

bit:
    ADC.WIDTH_9BIT、 ADC.WIDTH_10BIT、ADC.WIDTH_11BIT、 ADC.WIDTH_12BIT

衰减比

  • ADC.ATTN_0DB   = 0    — 满量程:1.2v
  • ADC.ATTN_2_5DB   = 1    — 满量程:1.5v
  • ADC.ATTN_6DB   = 2    — 满量程:2.0v
  • ADC.ATTN_11DB   = 3    — 满量程:3.3v

数据宽度

  • ADC.WIDTH_9BIT   = 0    — 9位数据宽度, 即满量程0x1ff(511)
  • ADC.WIDTH_10BIT   = 1    — 10位数据宽度,即满量程0x3ff(1023)
  • ADC.WIDTH_11BIT   = 2    — 11位数据宽度,即满量程0x7ff(2047)
  • ADC.WIDTH_12BIT   = 3    — 12位数据宽度,即满量程0xfff(4095)

综合示例

from machine import ADC, Pin
import time

adc = ADC(Pin(36))            #设置IO36为模拟IO口
adc.atten(ADC.ATTN_11DB)      #设置衰减比
adc.width(ADC.WIDTH_12BIT)    #设置12位数据宽度
for i in range(0, 10):
  print("adc0 =", adc.read()) #读取IO口模拟电压值
  time.sleep(0.5)

DAC

注意:DAC在专用引脚上可用,可用引脚有:IO25/D2、IO26/D3,电压范围为0~3.3V。

class machine.DAC(pin)

pin:I/O引脚
    Pin(25)、Pin(26)

定义DAC

示例:

from machine import DAC, Pin

dac = DAC(Pin(26))

函数

DAC.write(value)

函数说明:设置输出电压(0~3.3V)。

value:
    0 ≤ value ≤ 255(对应0~3.3V)

示例:


dac.write(255)

综合示例

from machine import DAC, Pin

dac = DAC(Pin(25))  #创建一个DAC对象
dac.write(245)      #输出电压

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -