产品选型

单片机ad采集 分享最近做的一个Arduino采集AD的小项目

小编 2024-11-24 产品选型 23 0

分享最近做的一个Arduino采集AD的小项目

最近做了一个AD采集的相关项目,要动态检测物体所受应力的大小,然后通过液晶屏显示出来,当应力大于某个阈值时,要发出一个开关量信号。

应力检测系统

这个项目需求简单,大体的思路就是用单片机进行AD采集,然后通过串口液晶屏显示读数,再通过控制一个继电器模块实现开关量的通断。正好手里有一块闲置的Arduino Promini,资源完全够用,唯一的缺点是AD的精度偏低。

Arduino Promini

客户选用的压力传感器AD输出为0~5V,对应拉力范围是0~5000N,要求精度达到1N,也就是说0.001V,而Arduino Promini的AD分辨率为10位,5/1024=0.00488V,显然精度是达不到要求的。

没办法,这就要借助专门的高精度AD模块来实现了,简单查了一下某宝,发现AD(TM)7705模块的各项指标均能满足要求:16位精度,0.003%的非线性误差,SPI串行总线读写。Ok,下单,买模块,接线,调程序,很快完成需求。

AD(TM)7705模块

这里着重说一下Arduino控制AD(TM)7705的方法,首先是接线,模块上的CN28根针都要接线:

与单片机接口

引脚对应关系如下:

///7705控制引脚/////////////////////////////

#define T7705_RST 9

#define T7705_CS A1

#define T7705_DRDY A0

#define T7705_MOSI 11

#define T7705_MISO 12

#define T7705_SCK 13

接下来是写代码,卖家提供的AD770X库文件里有AD7706的例子,当时没有细看7706和7705的区别(其实就是差了一个输入通道),于是就把另一个单片机的例子代码移植了过来,主要是通过SPI对AD7705的寄存器进行读写的过程,其中读写的时序如下:

AD7705写时序

AD7705读时序

要注意,读取的时候,要等DRDY信号变低才能读到有效值。

关键是下面两个函数:

AD7705初始化函数

AD7705读取AD值函数

希望我的分享为大家带来帮助,欢迎大家多评论多交流!

(需要代码的朋友可以私信小编)

单片机如何采样电流?

单片机工程师在面试的过程中,经常会碰到一些相同的问题,笔者总结了十个提问率较高的问题,供大家参考。现在我们来分析单片机工程师常遇面试问题之三:单片机如何采样电流?

单片机的AD模块转换原理我这里就不做讲解了,有兴趣的小伙伴可以找度娘了解,百度都有很详细的介绍。需要注意的是,想要通过AD口来检测信号,必须先要把这个信号转换成电压信号,这样单片机才能识别。

我们来看一下单片机采样电压电路图(1),AIN_Vbat接单片机AD检测口,需要检测的电压Vbat经过电阻R31和R37分压,分压得到的电压送给单片机AD口来检测,分压是是因为需要把Vbat映射到单片机AD口采样范围内,比如Vbat最高电压为90V,单片机AD模块参考电压为3.3V,那么我们就需要把0-90V映射到0-3.3V。因为这是直接检测电压信号,所以不需要转换直接送到单片机AD口即可,图种R31和R37用来分压,C30和R32用来滤波防干扰。

图(1)电压采样

言归正传,单片机如何采样电流呢?如之前所说,单片机AD模块识别的是电压信号,那么要采样电流就需要先把电流信号转换成电压。一般的做法是在负载端增加一颗电流采样电阻,比如选择一个0.05Ω的电阻,当电流为2A的时候,那么该电阻两端的压差就是V=I*R=0.05*2=0.1V;这样就可以把这个电压信号传送给单片机AD口进行检测。但是这个电压只有0.1V,单片机AD口资源得不到充分利用,检测误差会很大,所以我们要把这个电压进行放大。

能不能增大采样电阻呢?显然是不行的,因为增大采样电阻会增加电路损耗。比如增加采样电阻为1Ω,那么当电流为2A的时候,电阻上消耗的功率为P=I2*R=2*2*1=4W。这样的损耗是不允许的。所以我们只能加放大器来对这个小电压信号进行放大。图(2)是一个电流采样电路,R100为电流采样电阻,阻值0.05欧姆。该电路放大倍数为N=120K/5.1K=23.5倍。电路中使R29=R30,R24=R35,放大倍数即为N=R24/R29=R30/R35。具体原理作者将在后续文章为您分解。

图(2)电流采样

如果文章对你有帮助,欢迎关注作者,后面作者将为你推送更有价值的文章,谢谢!图(3)是作者做的电流电压自动excel自动计算表格,如小伙伴需要,请关注作者并在评论区留言即可,作者会把地址发给你。

图(3)excel计算表格

相关问答

单片机 如何处理ADC采样数据?

通过AD转换单片机可以把模拟信号转换为数字信号单片机通过AD输入口可以采集到外界的电压值。根据I=U/R的关系,可以用于测量电流;使用NTC和固定电阻进行分压,...

AD 采样电流 单片机 控制?

这样好像是实现不了的,只能从0到20A,无法从15-20A。如果ADC是5V的输入范围,那就是说明参考源是5V的,在这种情况下使用串联在回路中的电阻来分得5V电压才能测...

一般 单片机 信号 采集 AD 转换的话, 采集 的是什么信号?电流还是电压?为什么?还有为什么需要放大?

因为ADC的核心是电压比较器。如果被采集的信号很弱,比如最大幅度低于参考电压的10%,那就需要适当放大来减少误差了。如果输入电压大于...肯定采集电压信号...

单片机 并行 AD 实验思考题如何实现多路模拟信号 采集 ?

普通单片机实现多路模拟量的数据采集、显示需要:外部连接一个多通道输入的ADC芯片,单片机按照一定的周期驱动模拟开关切换到不同的模拟通道,设计模数转换控制...

怎样确定 AD 采样频率,跟转换时间有关吗。在 单片机 中如何设置采样频率?

要确定采样频率,应该根据被测模拟量的变化动态以及测量需求决定。对于特定的硬件环境以及转换位数来说,转换时间是确定的,也就是说在确定的主频、分频系数以...

51 单片机 如何 采集 电阻?

要使用51单片机采集电阻,首先需要将电阻与单片机的引脚连接。可以使用一个电阻分压电路,将电阻与一个已知电阻串联,然后将串联电阻连接到单片机的模拟输入引脚...

AD 采样电路? 单片机 3.3V ADC采样口,能采样电源为5V的模拟信号吗?

这样就可以把5V电平转到3.3V了.再问:直接比例运算?怎么有人说先电压跟随再分压呢?再答:跟随的话加一级运放跟随器就可以了,适用于高阻抗的输入,...

单片机AD 检测,电压不共地单片机自带 AD 检测,但是检测电压和单...

[最佳回答]1.最简单共地测量(有些场合,可以共地的);2.若不想共地既然隔离,必须用数字通信方式传递模拟量,必定目标板有将电压信号转换为数字信号装置;目标板增...

STC的 单片机 内部集成 AD 但是没有参考基准,参考基准是VDD,如何确保 AD 的精度呢?

STC内部的AD精度不高,使用VDD做基准问题不大。如果要提高精度,可以外接一个2.5V基准电压源到AD的一个输入端,在采样前、后分别对基准电压源进行AD转换,用得...

51 单片机 带几个 ad ?

51单片机现内部本身就含有AD模块了,一般有几路到几十路不等,要求精度高时才采用专业芯片。51单片机是对所有兼容Intel8031指令系统的单片机的统称。该系列单...

猜你喜欢