1、什么是ADC?
ADC是一种将模拟信号转换成数字信号的电路,称为模数转换器(简称A/D转换器或ADC,Analog to Digital Converter),其作用是将时间连续、幅值也连续的模拟信号转换为时间离散、幅值也离散的数字信号。
2、ADC转换的基本原理?
其基本原理是将输入的模拟信号按照规定的时间间隔进行采样,并与一系列的标准电压进行比较,使其对应的二进制数值逐次收敛,直至输入电压与内部电压一致时为止,然后该输出代表该电压的二进制值。
3、常见ADC的分类?
逐次逼近型ADC:是逐个产生比较电压,逐次与输入电压分别比较,以逐渐逼近的方式进行模数转换的。
特点:速度中等,精度较高,较为常见。
并联比较型ADC:由于并联比较型ADC采用各量级同时并行比较,各位输出码也是同时并行产生,所以转换速度快是它的突出优点,同时转换速度与输出码位的多少无关。
缺点:成本高、功耗大。
优点:速度较快,精度较低,适用于高速、低分辨率的场合。
machine.ADC(id) #为ADC对象构造函数,其作用为初始对应的ADC通道。id可以使用为GPIO对象,也可以使用ADC通道,当id使用为GPIO对象时,其所指定的GPIO对象需要支持ADC功能。
ADC.read_u16(id) #读取对应的通道ADC数值。返回数值不是直接返回ADC读取的数值,而是经过处理的数值。返回的数值范围的0-65535
电压计算公式为: V = (3.3*ReadData)/65535
#这里我们所展示的效果是当电压高于1.4V时,Pico上的LED灯会点亮,电机停止转动。反之,则相反。
#同时会测量电机处的引脚电压。
from machine import Pin,PWM,ADC
import utime
led = Pin(25,Pin.OUT)
motor = Pin(26,Pin.OUT)
p1 = PWM(motor)
adc_voltage = ADC(Pin(26))
temp = ADC(4)
def cw():
led.value(1)
p1.duty_u16(0)
def ccw():
led.value(0)
p1.duty_u16(65535)
def start(ratation):
p1.freq(1000)
if ratation <= 1.4:
cw()
elif ratation >1.4:
ccw()
while True:
read_voltage = adc_voltage.read_u16()*3.3/65535
read_temp_voltage = temp.read_u16()*3.3/65535
temperature = 27-(read_temp_voltage-0.706)/0.001721
start(read_voltage)
print("ADC voltage = {0:.3f}V \t\t temperature = {1:.3f}°C \r\n".format(read_voltage,temperature))
utime.sleep(1)
|