树莓派资料
显示屏资料
系统下载
树莓派Pico
首页 动态 发帖 版块 我的
 退出
游客  
等级:
金币:
经验值:

ADC(模拟数字转换器)树莓派Pico RP2040【入门级教程】

  6448 
 0
 2
趣    

Image

一:ADC的基础介绍

1. 什么是ADC?

ADC(Analog-to-Digital Converter,模数转换器)是一种将连续变化的模拟信号(如电压)转换为离散的数字信号的电子元件。在嵌入式系统中,我们经常需要读取各种传感器(如温度传感器、光敏电阻、电位器等)的模拟输出,这些传感器输出的是连续变化的电压值,而微处理器只能处理数字信号(0 和 1 组成的二进制数据),因此需要通过 ADC 来完成这种转换。

2. ADC如何工作?

ADC 的转换过程主要包括以下步骤:

采样:按固定时间间隔测量模拟信号的瞬时值

量化:将采样得到的模拟值转换为最接近的离散值(数字量)

编码:将离散值转换为二进制代码

树莓派 Pico 的 RP2040 芯片内置了 3 个 12 位 ADC 通道,这意味着它可以将 0-3.3V 的模拟电压转换为 0-4095(2¹²-1)的数字值,转换精度为 3.3V/4096≈0.805mV


3. 树莓派Pico开发板ADC引脚

GP26(ADC0)

GP27(ADC1)

GP28(ADC2)

GP29(ADC3/Vsys)- 用于测量板载电压


二:示例代码,读取电位器值

1. 硬件连接

要运行此示例,你需要:一个 10kΩ 电位器,将电位器的三个引脚分别连接到:

中间引脚 → GP26

一端引脚 → 3.3V

另一端引脚 → GND

当你旋转电位器时,会看到打印的 ADC 值和电压值随之变化,这直观地展示了模拟信号到数字信号的转换过程。

2. 示例代码

下面是一个使用树莓派 Pico 读取电位器(可变电阻)值的示例,电位器可以提供 0-3.3V 的可变电压,适合演示 ADC 功能。

from machine import Pin, ADC
import time

# 初始化ADC,连接到GP26引脚(ADC0)
adc = ADC(Pin(26))

while True:
    # 读取ADC值(0-4095)
    adc_value = adc.read_u16() >> 4  # read_u16()返回0-65535,右移4位得到0-4095
    
    # 转换为电压值(0-3.3V)
    voltage = adc_value * 3.3 / 4095
    
    # 打印结果
    print(f"ADC值: {adc_value}, 电压: {voltage:.2f}V")
    
    # 延迟500ms
    time.sleep(0.5)

3. 代码说明

首先导入必要的模块:Pin用于引脚配置,ADC用于 ADC 操作,time用于延时

创建 ADC 对象,指定连接到 GP26 引脚(ADC0 通道)

在循环中:

使用read_u16()读取 16 位 ADC 值(0-65535),然后右移 4 位转换为 12 位值(0-4095)

将 ADC 值转换为对应的电压值(0-3.3V)

打印 ADC 值和对应的电压值

延时 500 毫秒后重复


标签:
作者签名:    楼主  2024-11-29 15:38:58
回复列表
Powered by RASPI _VERSION
© 2017-2025 树莓派极客版权
您的IP: 18.97.9.171 , 2025-11-12 20:27:59
Powered by RASPI _VERSION
© 2017-2025 树莓派极客版权