当前位置: 首页 > news >正文

模拟信号采集的硬件基石:高性能ADC设计的核心法则

在追求更高精度与更低延迟的应用需求下,ADC硬件设计需遵循科学的设计法则。

本文主要从硬件设计的角度,分享Air8101工业引擎ADC设计中的一些关键注意点,软件开发方面不做深入探讨。

一、Air8101外部ADC说明

1.1 外部ADC相关管脚

Air8101有10路外部ADC,相关管脚参考下图橙色方框标注:
image

注意这些ADC管脚存在复用功能:

除了可以作为ADC使用之外,还可以用作GPIO、UART、PWM、I2C、SPI、RGB等功能。

项目设计时,如果用作其他复用功能,就不能作为ADC使用。

Air8101管脚复用表下载:https://docs.openluat.com/air8101/product/shouce/

Air8101有ADC1、ADC2、ADC3、ADC4、ADC5、ADC6、ADC10、ADC12、ADC13、ADC14,一共10路外部ADC。

这10路ADC复用的对应关系为:

ADC1对应ADC10;

ADC2对应ADC12;

ADC3对应ADC13;

ADC4对应ADC14;

ADC5和ADC6,没有对应的其他ADC通道;

这里的对应关系如何理解呢?

以ADC1对应ADC10为例,意思是在Air8101内部,ADC1和ADC10是同一个ADC通道,ADC1和ADC10不能同时使用。

1.2 电压测量要点

Air8101的外部ADC分辨率为12bit;测量电压范围为0到2.4V,不支持内部分压。

1)测量不超过2.4V的外部电压时:

如果外接电路的被测电压不超过2.4V,被测电压可以直连ADC,不需要做任何电路处理;

2)测量超过2.4V的外部电压时:

如果外部电路的北侧电压超过2.4V,必须将外部电压使用电阻分压,使挂在ADC上的电压不超过2.4V。

那么,分压电阻怎么选择呢?

首先,取决于被测电压的值,测量最大电压5V和最大电压12V时的分压电阻肯定是不一样的;

其次,电阻一定要使用1%精度,这样才能尽可能的使分压比符合要求;

再次,可以在ADC输入处增加1个滤波电容,抑制高频噪声,避免ADC读数波动。

以上都是经验之谈,现在我们以被测外部电压为5V,分压后挂在ADC上的电压为1.5V,来举例说明:

▼ 分压电阻示例 ▼

image

分压比要求:

Vout/Vin=1.5V/5V=0.3,

即:R2=0.3×(R1+R2),

解得R1:R2≈2.33:1。

推荐电阻值:

上拉电阻 R1=2.4MΩ(±1%精度)

下拉电阻 R2=1.0MΩ(±1%精度)

实际分压比:

1.0MΩ/(2.4MΩ+1.0MΩ)≈0.294,

5V分压后为5V×0.294≈1.47V,满足量程不超过2.4V的要求;

相应的,假设通过ADC测得的电压值时1.47V,则可以换算出来被测电压值为:

1.47V/0.294=5V;

需要特别指出的是,即便使用MΩ级别的电阻,系统也会存在固定的功耗浪费:

总电流: I=5V/(2.4MΩ+1.0MΩ)≈1.47μA

总功耗: P=5V×1.47μA=7.35μW

功耗极低,适合电池供电的低功耗场景。

二、Air8101内部ADC说明

2.1 一路用于检测VBAT电压的ADC

Air8101内部占用了一路ADC,用于检测VBAT引脚的电压:

不需要外接任何硬件电路,直接通过软件API读取VBAT电压即可;

电压测量范围:2.5V-4.35V;

可以使用如下代码读取VBAT电压:

image

2.2 一路用于检测CPU温度的ADC

Air8101内部占用了一路ADC,用于检测CPU的温度:

不需要外接任何硬件电路,直接通过软件API读取即可;

温度测量范围:-40°C ~ +85°C;

可以使用如下代码读取CPU温度:

image

三、硬件设计参考

提供完整的Air8101硬件开发参考设计(以太网、摄像头、音频功放、RS485、RS232、ADC等),以及电源设计总体说明,可参考下方链接详细说明。

Air8101最新硬件参考设计资料下载:

https://docs.openluat.com/air8101/luatos/hardware/design/reference/

image

今天的内容就分享到这里了!

http://www.hskmm.com/?act=detail&tid=247

相关文章:

  • 你的测试又慢又不可靠-因为你测错了东西
  • WPS设置多级标题,一级标题为“一”、“二”、“三”,二级标题为“1.1”、“2.2”、“3.3”,三级标题为“1.1.1”、“2.2.2”、“3.3.3”
  • 你的部署流程已然落伍-热重启的失传艺术
  • 你的项目一团糟-不是你的错-是框架的锅
  • 超越-env-一份成熟的应用程序配置指南
  • 第一次作业
  • 第一周个人作业
  • 论文解读-《Prompt Engineering Through the Lens of Optimal Control》 - zhang
  • 在 AlmaLinux 9 上使用 Podman Quadlet 部署 MongoDB 6.0
  • 《电视软件安装包》
  • Modbus开发不头疼:极简指南,半小时搞定基础配置
  • 通过命令行生成.url链接文件
  • 麒麟V10安装docker
  • Go-Kratos 项目 SonarQube、Jenkins 与 K8s CI/CD 实践
  • 漏洞实战--java反序列化--用友NC UserAuthenticationServlet
  • 以工业级可靠性护航智能制造:深入解析工业主板的关键价值与选型指南
  • 用 PJMan 模板导入,3 分钟搞定专业甘特图,项目规划效率翻倍
  • 湾区杯网络安全大赛 WEB方向WP 全
  • 《dll错误修复工具》
  • 如何使用像素坐标和相机内参来计算夹角
  • 合并代码异常
  • 8th-hello world
  • Normalization 相关问题解惑(BN/LN/IN/GN)
  • Apisix Lua 插件开发规范及指引
  • nim整活-道歉程序
  • 《ai工具合集》14G
  • jmeter-BeanShell PostProcessor
  • Python 函数(Function)核心知识点
  • WPF中的坐标系统
  • 关于Genieacs的配置