0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ADC 实战:如何精准读取传感器信号

信盈达 2025-11-24 19:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

很多开发者嵌入式项目中都会用到传感器采集信号,无论是温度、光照,还是电压电流测量,都离不开 ADC模数转换器)。但是,很多人对 ADC 的使用仍停留在“能读就行”的层面,忽略了精度、采样率、参考电压等关键因素。今天,我们就从原理到实战,带你搞懂 ADC,帮你精准读取传感器信号。

一、ADC 基础回顾

ADC(Analog-to-Digital Converter)是将连续的模拟信号转换为数字信号的模块,便于 MCU 处理。

  • 分辨率:ADC 能输出的数字位数。比如 12 位 ADC 的输出范围是 0~4095,对应参考电压范围。
  • 采样率:ADC 每秒能读取多少次信号,单位 Hz。
  • 参考电压(Vref):ADC 将模拟信号映射到数字值的参考电压。

二、如何选择 ADC 通道

STM32 等 MCU 的 ADC 通常带多个通道,用于采集不同的传感器信号。选择时要注意:

  1. 信号源的电压范围:确保传感器输出在 Vref 范围内。
  2. 通道干扰:避免高频信号或噪声信号靠近 ADC 引脚。
  3. 引脚复用:一些 ADC 引脚可能同时有其他外设功能,需要查看手册。

三、ADC 精度优化技巧

  1. 稳定参考电压:使用 LDO 或参考芯片,减少 Vref 波动。
  2. 信号滤波:在 ADC 输入端加 RC 滤波或低通滤波,降低高频干扰。
  3. 多次采样平均:通过软件对多次采样结果取平均,提高测量精度。
  4. 降低采样速率:在允许情况下,适当降低 ADC 采样率,减小噪声影响。

四、STM32 ADC 使用实战

假设我们要读取一个光敏电阻的电压值:

  1. #include"stm32f1xx.h"
  2. voidADC_Config(void){
  3. RCC->APB2ENR|=RCC_APB2ENR_IOPAEN;// GPIOA 时钟
  4. RCC->APB2ENR|=RCC_APB2ENR_ADC1EN;// ADC1 时钟
  5. GPIOA->CRL&=~GPIO_CRL_CNF1;// PA1 模拟输入
  6. GPIOA->CRL&=~GPIO_CRL_MODE1;
  7. ADC1->SQR3=1;// 第1个通道
  8. ADC1->SMPR2|=ADC_SMPR2_SMP1;// 采样时间
  9. ADC1->CR2|=ADC_CR2_ADON;// 开启 ADC
  10. }
  11. uint16_tADC_Read(void){
  12. ADC1->CR2|=ADC_CR2_ADON;// 启动转换
  13. while(!(ADC1->SR&ADC_SR_EOC));
  14. returnADC1->DR;
  15. }
  16. intmain(void){
  17. ADC_Config();
  18. while(1){
  19. uint16_tvalue=ADC_Read();
  20. // 处理采样值,例如转换为电压或亮度
  21. }
  22. }

五、多通道采样与 DMA

当你需要同时读取多个传感器信号时,单次轮询效率低,容易拖慢 MCU 主循环。此时可以使用 ADC 的扫描模式 + DMA:

  1. 配置 ADC 扫描模式,依次采集多个通道。
  2. 配置 DMA,将采样结果自动存储到内存数组中。
  3. MCU 只需在数据更新后处理数组,无需频繁轮询。

六、ADC 与实际传感器匹配

不同传感器信号特点不同,需要匹配 ADC 参数:

  • 高阻抗传感器(如光敏电阻电位器):需要合适的采样电阻或缓冲电路。
  • 低幅值信号(如温度传感器):可通过运放放大,提高 ADC 精度。
  • 快速变化信号(如加速度计):需要更高采样率或使用 DMA 结合中断。

七、常见坑点

  1. 忽略 Vref 稳定性:参考电压波动会直接影响采样精度。
  2. 采样时间太短:高阻抗输入在短采样时间下可能不稳定。
  3. 引脚干扰:ADC 输入邻近高频信号会引入噪声。
  4. 单次采样依赖性高:未做多次平均,导致测量抖动明显。

八、小结

通过今天的学习,你应该掌握了:

  1. ADC 的基本原理、分辨率和采样率
  2. 如何选择 ADC 通道并减少干扰
  3. 软件与硬件结合提高 ADC 精度的方法
  4. STM32 下 ADC 实战代码示例
  5. 多通道采样与 DMA 使用
  6. 不同传感器信号与 ADC 匹配策略

掌握这些内容后,你就能在嵌入式项目中精准读取各种传感器信号,为数据处理和控制算法提供可靠输入。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20151

    浏览量

    328917
  • adc
    adc
    +关注

    关注

    100

    文章

    7407

    浏览量

    553820
  • 传感器信号
    +关注

    关注

    0

    文章

    22

    浏览量

    4969
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何读取LPC55S28温度传感器

    我正在尝试读取芯片温度传感器。 我尝试使用 LPADC 组件来读取传感器。我意识到我必须禁用掉电、启用 kclock_adc0 并为其附加一
    发表于 04-04 06:46

    关于传感器信号的修正

    本帖最后由 wiselylxm 于 2016-11-30 22:22 编辑 本人从事的是实验室设备的软件开发工作,所以对数据的精度要求比较高,我们知道传感器在理论上输出信号与实际值是线性的对应
    发表于 08-30 20:27

    ADIS的传感器接线和信号读取问题

    CLM-112-02的连接,这个连接引出的端口是直接焊接吗?我看距离太近了焊接技术不够啊。或者说原来传感器的接口直接有线可以接吗?另这个传感器
    发表于 06-15 18:42

    Micropython TPYBoard读取芯片上的温度传感器

    过高或者过低了 则马上睡眠或者停止运转. 可以保证您的设备工作的可靠性。 STM32内部温度传感器参数1.STM32内部温度传感器ADC的通道16相连,与ADC配合使用实现温度测量。
    发表于 03-30 09:07

    arduinoUNO怎么读取采用UART的传感器传入的信号

    我初学Arduino,买了传输数字信号传感器模组,采用的是UART。老板给出了下面的信息:实在是搞不明白怎么读取信号,请教一下各位大神!万分感谢
    发表于 05-03 21:09

    怎样提高霍尔传感器测量的精准

    精准度虽然好但是霍尔传感器测量的精准度对于用于来说是非常重要的,如果有提高霍尔传感器精准度的方法那是更加好的,今天小编就来为大家介绍一下方
    发表于 08-15 10:29

    请问传感器信号要怎么处理才能满足ADC的量程?

    如图所示,重量传感器的电压是10-15V ,ADC芯片的电压都是5v,传感器出来的信号超出了ADC的量程,把重量
    发表于 08-14 04:35

    ADC读取芯片内部温度传感器的方法有哪几种

    ADC读取芯片内部温度传感器的方法有哪几种?分别是什么?
    发表于 09-24 06:04

    如何去读取ADC1内部温度传感器及内部参照电压

    单片机为:STM32F103RCT6软件:STM32CubeMX,MDK功能:不使用DMA,不使用中断,读取ADC1内部温度传感器及内部参照电压VREFINT的值描述:温度传感器和通道
    发表于 12-10 07:39

    怎样驱动板载的ADC读取一个模拟的角度传感器

    本次例程驱动了板载的ADC读取一个模拟的角度传感器,大家可以在ADC读取中断里面换成其他的计算,具体引脚见程序代码。
    发表于 02-15 07:50

    如何正确配置温度传感器并通过ADC进行转换并读取数字结果?

    供电。温度传感器仍然没有任何反应。使用 SEQA_CTRL 寄存访问序列 A。按照第 45 章读取温度传感器读数的步骤。谁能告诉我如何正确配置温度
    发表于 03-29 07:50

    接触式图像传感器信号读取与补偿技术

    图像传感器是利用光电转换原理将图像数据装换为一系列电子信号的一种装置。接触式图像传感器CIS是80年代末初相是一种新型图像传感器,是以CMOS技术为主的一种光电扫描器件
    发表于 06-25 10:39 27次下载

    接触式图像传感器信号读取与补偿技术

    接触式图像传感器信号读取与补偿技术 图像传感器是利用光电转换原理将图像数据转换为一系列电子信号的一种装置。接触式图像
    发表于 02-09 10:00 740次阅读
    接触式图像<b class='flag-5'>传感器</b>的<b class='flag-5'>信号</b><b class='flag-5'>读取</b>与补偿技术

    传感器模拟信号输入ADC701 SHC702电路图

    传感器模拟信号输入ADC701 SHC702电路图
    发表于 06-27 16:48 972次阅读
    <b class='flag-5'>传感器</b>模拟<b class='flag-5'>信号</b>输入<b class='flag-5'>ADC</b>701 SHC702电路图

    STM32使用ADC获取内部温度传感器数据输出(直接读取/DMA两种方式实现)

    STM32使用ADC获取内部温度传感器数据输出(直接读取/DMA两种方式实现)前言一、内部温度传感器的使用?二、代码操作讲解1.直接读取2.
    发表于 12-02 18:36 34次下载
    STM32使用<b class='flag-5'>ADC</b>获取内部温度<b class='flag-5'>传感器</b>数据输出(直接<b class='flag-5'>读取</b>/DMA两种方式实现)