Micropython——关于PICO中ADC和PWM结合起来的使用

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(19,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)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAWGFfTA==,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xa_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值