第一次接触单片机ADC 都会有这些问题
如何利用单片机的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引脚之前,加入电阻分压和放大器电路。
总结: 看完这篇文章,你是否会觉的,一切都只是基础知识的融合
小5带你飞(8)—AVR(ATmega 328P)单片机片内ADC的原理和使用(1)
ATmega328p内部集成了一个10位的逐次逼近的A/D转换器。该转换器与一个8通道的模拟多路复用器连接。它能够对来自端口A的8路单端输入电压进行采样。
ADC转换模块的原理图
看一下它的基本特性:
10位分辨率
0.5 LSB积分非线性
±2 LSB绝对精度
13 -~260µs转换时间
最高采样速率76.9 kSPS/s
6路可选的单端输入通道
2路额外多路复用单端输入通道(TQFP 、QFN/MLF)
温度传感器输入通道
ADC读取的结果可设置为左端对其
0~Vcc ADC输入电压范围
可选择1.1v ADC参考电压
自由连续转换模式和单次转换模式
在ADC转换完成时中断
睡眠模式噪音消除
ADC的供电和参考电压:
ADC由独立的专用的模拟电压引脚AVCC供电,AVCC和VCC的电压差别不能大于±0.3V。
ADC的参考电源可以是芯片内部的1.1v的参考电源,也可以是AVCC,也可以采用外部参考电源,使用外部参考电源的时候,外部参考电源可由引脚AREF接入,使用内部参考电压源的时候,可以通过在AREF引脚外部并接一个电容来提高ADC的抗噪性能。这个电容一般可为0.1uF
与ADC有关的寄存器:
ADMUX:多路复用选择寄存器
bit6、bit7 :ADC参考电压选择。如果在转换过程中改变了设置,则只有等待当前转换结束后才起作用。如果在 AREF引脚上施加了外部参考电压,则内部参考电压将不能被选择。这个参考电压的选择见下图:
还是解释一下:
00 :AREF,内部基准源关闭
01 :AVCC,AREF外接滤波电容
10 : 保留
11 :1.1v内部基准电压源,AREF外接滤波电容
bit5:转换结果对齐位。置位左对齐,清位右对齐
bit4:一个保留位
bit3~bit0:模拟通道选择位
就是选择连接到哪个通道上,这个没啥说的。看表就好了,如下:
2. ADCSRA:ADC控制和状态寄存器A
bit7:ADC使能位。置位则启动ADC功能,清位ADC功能关闭
bit6:ADC开始转换。
在单次转换模式下,该位置位将启动一次ADC转换,在连续转换模式下,该位置位,将启动首次转换
bit5:ADC自动触发使能位。
该位置位,则启动ADC自动触发功能。
bit4:ADC中断标志位
ADC转换结束且数据寄存器被更新后该位置位,如果ADIE及SREG寄存器中的全局中断使能位I被置位,
则ADC转换结束中断服务程序被执行,同时该位被硬件清零,也可以通过软件写1清零。
bit3:ADC中断使能位。如果该位及SREG寄存器中的全局中断使能位I被置位,则ADC转换结束中断将被使能。
bit2~bit0:ADC预分频器的选择。这三位决定ADC输入时钟与CPU时钟之间的分频系数,如下表:
3. ADCL 、 ADCH :ADC数据寄存器
分别是左对齐的和右对齐的数据
ADC转换结束后,转换结果将存在这两个寄存器当中。首先ADMUX寄存器当中的ADLAR和MUXn影响转换结果在寄存器中的存放形式。当ADCL被读取时,ADC数据寄存器在读取ADCH之前不会更新,如果转换结果为左对齐且只需要8位的精度,那么仅需要读取ADCH就可以了,否则需先读取ADCL然后读取ADCH。
4.ADCSRB :ADC控制和状态寄存器B
bit2~bit0:ADC自动触发源的选择
说明一下吧:
000:连续转换模式
001:模拟比较器
010:外部中断请求0
011:定时器/计数器0比较匹配A
100:定时器/计数器0溢出
101: 定时器/计数器0比较匹配B
110:定时器DIDR0数器1溢出
111:定时器/计数器1捕捉事件
5. DIDR0:数字输入禁用寄存器0
说明一下:
bit5~bit0 :当这些位置位,相应的ADC引脚的数字输入缓存区被禁止,相应的PIN寄存器读取的时候都为0,
模拟信号运用于ADC5~ADC0,是不需要这么做的,ADC6和ADC7是没有缓存区的。
下面来看看ADC的基本使用步骤:
ADC输入端口初始化
基准电压的设置,数据对齐方式的设置,通道的选择。(ADMUX寄存器的配置)
AD使能,启动装换,中断的设置(ADCSRA寄存器的设置)
触发源的选择(ADCSRB寄存器的设置)
选择中断号,编写中断服务程序,读取ADC的数据(ADCL 、 ADCH )
好的,关于ADC的寄存器就写这么多了,下一篇我们来写ADC的驱动程序。
更多内容请关注头条号:小5嵌入式
相关问答
单片机 与 adc 之间如何连接?单片机与ADC之间可以通过多种方式进行连接,包括并行接口、串行接口、SPI接口等。其中,最常用的方式是通过SPI接口进行连接,通过SPI接口可以实现快速、稳定的数...
单片机 请问 ADC 的基准指的是什么?ADC的基准电压是ADC转换电路里用于确定目标测量电压的最高范围。因此基准电压的选取对ADC转换的精度有所影响。例如:ADC0809的电源电压范围是4.75v-5.25v。...
ADC电路 组成?Adc电路就是指模数转换电路。也就是将模拟信号变为数字信号。一般用在数据采集方面。ADC,Analog-to-DigitalConverter的缩写,指模/数转换器或者模拟/数字转...
单片机 对 ADC 的控制有几种?这个东西和单片机有关的主要是D0~D7ADDA、ADDB、ADDCALESTARTEOCOE相应的作用看下面ADC0809芯片有28条引脚,采用双列直插式封装,下面说明各引脚功能。.....
单片机 如何处理 ADC 采样数据?通过AD转换单片机可以把模拟信号转换为数字信号单片机通过AD输入口可以采集到外界的电压值。根据I=U/R的关系,可以用于测量电流;使用NTC和固定电阻进行分压,...
单片机 中 ADC 是如何进行采集的?摘要:本文设计并实现了基于2.4GHzISM频段射频收发芯片nRF2401的计算机短距离无线数据采集系统。该系统采用PC作为系统控制中心,以C8051F021单片机...
单片机 AD和 ADC 的区别?单片机AD是指单片机内部集成的模数转换器,可以将外部模拟信号转换为数字信号。ADC是模拟-数字转换器,是一种独立的电路器件,用于将模拟信号转换为数字信号。区...
stm32 单片机adc 计算公式?ADC计算公式:^_^TCONV=采样时间+12.5个周期对于12位AD采集,固定为12.5个周期。其他采样时间可以由SMPx[2:0]寄存器控制。每个通道可以单独配置。000:1...ADC.....
12位 adc单片机 有哪些?1.C8051F020,集成了一个12bit的ADC和8bit的ADC,飞思卡尔十六位的单片机MSP430F5系列单片机;2.stm32f系列单片机;3.picf18系列单片机;等等。在使用的时...
请教各位大虾: 单片机 本身集成24位 ADC ,有何意义?没听说那款单片机本身集成24位ADC,24位的ADC精度极高,用途较少,单片机价格便宜,通用性强,集成这么高精度的ADC单片机价格很高,根本没有市场其价格肯定超过...