ADC(电压测量)
前言
ADC(analog to digital conversion) 模拟数字转换。意思就是将模拟信号转化成数字信号,由于单片机只能识别二级制数字,所以外界模拟信号常常会通过ADC转换成其可以识别的数字信息。常见的应用就是将变化的电压转成数字信号实现对电压值测量。
实验平台
麦哲伦MicroPython开发套件、4.3寸RGB显示屏(电容触摸)。

实验目的
通过编程调用MicroPython的内置ADC函数,实现测量0-3.3V电压,并显示到LCD屏幕上。
实验讲解
麦哲伦主控的PA5引脚连接到了电位器,通过电位器的调节可以使得PA5引脚上的电压变化范围实现从0-3.3V。

本节使用machine内置的ADC对象,使用说明如下:
ADC对象
构造函数
adc = machine.ADC(pin)
构建ADC对象,ADC引脚对应如下:
pin:支持ADC的Pin对象,如:'A5'。
使用方法
adc.read_16()
获取ADC值,返回0-65535(对应电压0-3.3V)。返回值跟精度无关。
更多用法请阅读官方文档:
https://docs.01studio.cc/library/machine.ADC.html
熟悉ADC使用方法后,我们通过代码实现周期性测量引脚电压,代码编程流程图如下:
参考代码
'''
实验名称:ADC-电压测量
版本:v1.0
平台:麦哲伦开发板 + 4.3寸RGB屏(电容触摸)
作者:01Studio
说明:通过对ADC数据采集,转化成电压在显示屏上显示。电压0-3.3V。
'''
#导入相关模块
import machine,time
from tftlcd import LCD43R
#定义常用颜色
RED = (255,0,0)
GREEN = (0,255,0)
BLUE = (0,0,255)
BLACK = (0,0,0)
WHITE = (255,255,255)
########################
# 构建4.3寸LCD对象并初始化
########################
d = LCD43R(portrait=4) #竖屏
d.fill(WHITE)#填充白色
#构建ADC对象,引脚PA5
adc = machine.ADC('A5')
print(adc)
#显示标题
d.printStr('01Studio ADC', 100, 10, BLACK, size=4)
while True:
#电压采集
value = str(adc.read_u16()) #原始值
vol = str('%.2f'%(adc.read_u16()/65535*3.3)) #电压值,0-3.3V
#显示测量值和电压值
d.printStr('Vol:'+vol+" V", 10, 100, BLACK, size=4)
d.printStr('Value:'+value+" ", 10, 200, BLACK, size=4)
d.printStr("(65535)", 300, 200, BLACK, size=4)
print(value)
time.sleep_ms(500) #延时500ms
实验结果
在Thonny IDE运行代码, 可以看到下面的实验结果:
- 电位器顺时钟拧到尽头是0V

通过调节电位器,可以发现电压在不断变化。

警告
ADC测量输入电压请勿大于3.3V,有可能烧坏主控芯片。