博客
关于我
MbedOS 设备中的模数转换(ADC)
阅读量:587 次
发布时间:2019-03-12

本文共 1521 字,大约阅读时间需要 5 分钟。

模拟量是指变量在一定范围内连续变化的量。在物理世界中,数据几乎全部是模拟量,例如温度、电流、电压、风速、振动等。要将模拟量转换为离散的数字值,通常需要采样。

传感器采集的数据大多数是模拟量。随着智能化设备的普及,未来趋势是大幅度增加各种智能数据采集设备和传感器。智能设备的核心功能是将物理世界的模拟数据通过本地处理后,采集并传输给数据分析系统。模拟数据的采集和网络连接是这一过程中非常关键的一环。

AI和大数据技术的基础是数据,这些数据主要是模拟数据。例如,在工业领域,需要检测机器的振动数据以预测设备健康状况。这种检测通常涉及电机、轴承、变速箱的振动数据和温度等模拟数据。通过神经网络技术或大数据统计分析,可以对这些数据进行分析并得出判断结果。因此,数据采集和测量技术越来越重要。

常见的物理模拟量包括:

  • 流量
  • 压力
  • 温度
  • 振动
  • 应变
  • PH值

模拟信号的调理是模数转换系统中的重要环节,通常包括信号隔离、增益放大器、滤波和输出驱动。

送入ADC的电信号需要遵循标准规范。常见的ADC输入信号有以下几种:

  • 标准电流:4~20mA 是工业标准,传感器模拟信号可通过变送器输出等效电流。
  • 标准电压:传送给ADC接口的信号通常为-10V至+10V的DC电压。

ADC技术主要分为以下几种:

  • 逐次逼近法(Successive Approximation, SAR):通过逐步逼近的方式进行量化。
  • ΔΣ(Delta-Sigma,ΔΣ):通过不断叠加小误差来实现量化。
  • 流水线法(Pipeline):通过多个阶段并行处理来提高转换速率。

三种方法各有优缺点,选择时需要根据具体需求权衡。

现代单片机通常内置ADC外围电路和多个模拟量输入端口。以STM32F429为例,其内置3个12位精度ADC,具有以下特点:

  • 12位精度,高达1M转换速率
  • 信号范围0~3.6V
  • 支持DMA模式
  • 单端输入,不支持差分输入

内置ADC的优点是成本低、转换速度快且便于集成,但分辨率通常为10~12位。通常用于闭环控制,而外置ADC则用于高精度数据采集。

Mbed OS提供了AnalogIn控制类,用于处理器内置ADC和DAC的接口。AnalogIn类的成员函数包括读取模拟数据的基本操作。以下是Mbed OS下的示例代码:

#include "mbed.h"AnalogIn Ain(ADC_TEMP);float ADCdata;int main() {    printf("ADC Data Values...\n\r");    while(1) {        ADCdata = Ain.read();        printf("%f\n\r", ADCdata);        wait(0.5);    }}

STM32内置模拟量信号包括ADC_TEMP(温度)、ADC_VREF(参考电压)、ADC_VBAT(后备电池电压)。

对于高精度需求,通常需要外接ADC芯片。TI公司的ADS1256是一款低噪声ADC芯片,具有24位分辨率,支持8路单端或4路差分输入,内置可编程增益放大器和SPI接口。

M2-ADS1256-20mA接口板基于ADS1256芯片,用于4~20mA电流环模拟量输入。该模块还支持4路数字输出和RS485接口,适合工业环境下的模拟量采集。

AD7689是Analog Device公司的16位分辨率ADC芯片,支持多路复用器和内置温度传感器。Mbed OS下的AD7689驱动类实现了芯片的核心功能,包括寄存器操作和数据读取。

通过以上技术,开发者可以根据具体应用需求选择合适的ADC方案,实现高精度模拟数据采集和处理。

转载地址:http://mazxz.baihongyu.com/

你可能感兴趣的文章
Lua-table 一种更少访问的安全取值方式
查看>>
虚函数
查看>>
Error:Cannot read packageName from AndroidManifest.xml
查看>>
斐波那契数列两种算法的时间复杂度
查看>>
【自学Flutter】4.1 Material Design字体图标的使用(icon)
查看>>
C++清空队列(queue)方法
查看>>
【换行符】什么时候用cin.get()吃掉输入流中的换行符
查看>>
【二叉树】已知后序与中序求先序
查看>>
解决Nginx 404 not found问题
查看>>
广东外语外贸大学第三届网络安全大赛Writeup
查看>>
hadoop 分布式文件系统的计算和高可用
查看>>
【Linux】VMware Workstation 不可恢复错误: (vcpu-0)
查看>>
VS中 fatal error LNK1123: 转换到 COFF 期间失败 的解决方法
查看>>
ant design pro v5去掉右边content区域的水印
查看>>
JavaScript——使用iterator遍历迭代map,set集合元素
查看>>
Course Schedule II
查看>>
Django ORM操作
查看>>
京喜小程序体验评分优化实践
查看>>
C#中文转换成拼音
查看>>
C++错误笔记
查看>>