打印
[经验分享]

第一次接触单片机ADC 都会有这些问题

[复制链接]
3507|54
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
abotomson|  楼主 | 2023-10-18 16:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如何利用单片机的ADC模块(或者独立的ADC芯片)得到接入ADC管脚上的实际电压值?

这个问题,是第一次接触ADC时候,大家都会遇到的问题。

会读到什么值

单片机会读到什么值?需要看一个特性,就是几位的ADC,在手册上就会给出,例如,STM32的ADC是12位的。另外,还有8位,10位,16位,24位等。

我先告诉你答案:STM32读到的ADC值,是从0到4095,当你把ADC引脚接了GND,读到的就是0,当你把ADC引脚接了VDD,读到的就是4095。

接下来告诉你为什么:前面提到,STM32的ADC是12位的,我们知道,8位的值是从0~255;16位的值,是从0~65535。这两个位的最大值,是我们最为熟悉的。

(怎么算出来的?这问题就又降低到另一个层面了,这里我们说的几位的值,每个位只能是0或者1,比如2位的值,可以表示为00 01 10 11四种不同的值,这是以2进制表示的,转换成十进制就是0 1 2 3,所以得出结论,2位的值可以表示从0~3。同理,3位的值,可以表示十进制的0~9,你可以展开计算一下。4位的值,可以表示0~16,5位的值,可以表示从0~31,同理,你可以得出任意位的值可以表示的范围。)

所以,12位的值,可以表示从0~4095,这就是先在感性上,认识了为什么12位的ADC的值,是从0~4095.

读到的值怎么换算成实际的电压值

前面提到了,我们输入GND,读到的值是0,输入VDD,得到的值是4095,那么,当你读到2035的时候,你知道输入电压多少V吗?这个问题,归根接地,就到了数学XY坐标,已知两点坐标值(0,0)(3.3,4095),给出任意X坐标值,求Y值的问题了吧?简单不简单?




参考电压是什么

讨论这个问题之前,你先拿万用表量一下你的VDDA的实际电压是多大?是不是标准的3.300V?应该不是吧?或许是2.296V,或许是3.312V。然后你把VDD连接到ADC引脚之后,得到的是4095,也就是,实际上,当你读出4095这个数据的时候,实际的电压值不是你想象中的3.300V。有些初学者,觉得几毫伏的电压差无所谓,但实际应用中,几毫伏就可能代表很大的实际工况,例如,在一个量程为50克的电子称上。

所以,这时候,芯片厂商就想了一个办法,给ADC模块中引入参考电压,由非常标准的参考电压芯片来接入参考电压引脚。标准的电压芯片,我们一般叫做参考电压芯片,或者叫做基准电压芯片。例如REF3133(输出3.300V) REF3025(输出2.500V)等等。

注意:STM32 的100脚以上(含100脚)有参考电压引脚。在没有参考电压引脚的单片机上,可以把基准电压芯片接入VDDA,但是VDDA和VDD的电压差不能超过0.3V,例如,VDD是3.3V的话,可以给VDDA接入一个3.3V的参考电压芯片或者3.0V的参考电压芯片,但是不能接入2.5V的参考电压芯片,后果就是芯片不能工作。

ADC引脚的输入电压范围是多大

一般情况下,ADC引脚的输入电压,是从0~VDD,如果有REF引脚,一般是0~Vref,也有0~2Vref的情况。

如果被测的电压大于ADC的输入电压,例如,要用STM32测量0~5V的电压的话,可以在输入ADC引脚之前,加入电阻分压和放大器电路。


使用特权

评论回复
沙发
tpgf| | 2023-11-3 17:01 | 只看该作者
我第一次接触的时候都不知道怎么配置

使用特权

评论回复
板凳
qcliu| | 2023-11-4 13:57 | 只看该作者
如果我们拿不到成品电路板 还得考虑如何画电路图的问题

使用特权

评论回复
地板
drer| | 2023-11-4 14:45 | 只看该作者
在 要求不高的前提下 基本上都ad调试起来还是比较顺利的

使用特权

评论回复
5
wiba| | 2023-11-4 15:30 | 只看该作者
能够顺顺当当的把adc调试通过就算不错了

使用特权

评论回复
6
kxsi| | 2023-11-4 22:54 | 只看该作者
如果是第一次接触adc 那么多adc的需要名词或者说参数就得弄的比较明白

使用特权

评论回复
7
coshi| | 2023-11-4 23:23 | 只看该作者
ADC如果采集干扰比较厉害的信号怎么处理呢

使用特权

评论回复
8
fengm| | 2023-11-11 13:47 | 只看该作者
在使用ADC之前,需要对其进行配置。例如,选择ADC的时钟源、采样速率、参考电压等参数。

使用特权

评论回复
9
sdlls| | 2023-11-11 15:23 | 只看该作者
在编程实现 ADC 转换时,首先需要设置好 ADC 的工作模式和参数,然后启动转换过程。一旦转换完成,就可以读取 ADC 输出的数据了。

使用特权

评论回复
10
robincotton| | 2023-11-11 16:59 | 只看该作者
ADC是将模拟信号转换为数字信号的电路。它通过采样、量化、编码等步骤,将模拟信号转换为计算机能够处理的数字信号。ADC的工作原理通常包括采样保持、量化、编码等步骤。

使用特权

评论回复
11
alvpeg| | 2023-11-12 09:27 | 只看该作者
偏移误差是指第一次实际转换和第一次理想转换之间的偏离。理想情况下,当模拟输入介于0.5 LSB和1.5 LSB之间时,数字输出应为1。但在实际转换中,第一次转换可能发生在0.5 LSB处,这种偏离就是偏移误差。

使用特权

评论回复
12
averyleigh| | 2023-11-12 10:48 | 只看该作者
一般来说,单片机的ADC输入电压范围是0V到VCC,其中VCC是单片机的电源电压。具体的输入电压范围还需要参考单片机的数据手册。

使用特权

评论回复
13
phoenixwhite| | 2023-11-12 11:02 | 只看该作者
校准ADC是为了确保其准确性和可靠性。通常需要进行零点校准和增益校准。零点校准是将ADC的输出值调整到零点,增益校准是将ADC的输出值调整到满量程。

使用特权

评论回复
14
zerorobert| | 2023-11-12 11:13 | 只看该作者
ADC 在进行转换时,会将其输入信号与一个固定的参考电压进行比较。这个参考电压通常是由外部电源提供的。

使用特权

评论回复
15
uiint| | 2023-11-12 11:28 | 只看该作者
在配置好ADC后,可以通过读取ADC寄存器中的值来获得实际电压值。

使用特权

评论回复
16
usysm| | 2023-11-12 13:37 | 只看该作者
ADC与单片机之间的连接主要包括模拟输入、数字输出和控制信号。模拟输入连接到ADC的输入端,数字输出连接到单片机的数字输入端,控制信号(如启动、停止、数据寄存器选择等)连接到单片机的相应控制引脚。

使用特权

评论回复
17
kkzz| | 2023-11-12 14:17 | 只看该作者
配置ADC的参数通常需要通过编写程序来实现。具体的配置方**根据单片机的型号和编程语言的不同而有所不同。一般来说,需要配置的参数包括输入通道的选择、分辨率的选择、采样率的选择等。

使用特权

评论回复
18
nomomy| | 2023-11-12 14:52 | 只看该作者
ADC的采样率是指其每秒能够采集的数据量,而精度则是指其测量结果的准确程度。一般来说,采样率越高,精度越高。但是,过高的采样率也会增加数据的处理难度和处理器的负担。

使用特权

评论回复
19
minzisc| | 2023-11-12 15:00 | 只看该作者
使用ADC读取数据通常需要通过编写程序来实现。具体的读取方**根据单片机的型号和编程语言的不同而有所不同。一般来说,需要读取的参数包括当前的输入电压、当前的输入电流等。

使用特权

评论回复
20
benjaminka| | 2023-11-12 16:03 | 只看该作者
ADC(模数转换器)的主要功能是将模拟信号转换为数字信号。它的工作原理通常包括采样、保持、量化和编码四个步骤。采样是将输入的模拟信号在某一时刻进行测量;保持是在采样后的一段时间内保持输入信号的值不变;量化是将采样后的模拟信号转换为离散的数字信号;编码则是将量化后的数字信号转换为特定的编码形式。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

1552

帖子

1

粉丝