|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
+ u- m" m. r+ b) K
单片机AD转换方法 为什么要AD转换?所有单片机一般只能处理数字信号。可是当单片机需要获取电路上的某一点电压值的时候,就必须使用AD转换。如果你直接把单芯片的引脚连接到电路的点上,单片机只知道这个点的电压是低的或高的,怎样才能得到它的电压值呢?比如数字万用表,它测量电压,先将AD转换电路,将电压值转换为一个值,然后将此值发送到单片机,单片机经过计算处理后,再将电压值显示到屏幕上。但现在有一些强大的单片机,其内部AD转换器已经集成,不需要你连接AD转换芯片。
: B9 W/ O+ O, t& p, g4 G+ X
+ j b% I# l! i0 ?- q1 n4 i2 UA是模拟信号的意思,D是数字信号的意思,AD转换就是模数转换,顾名思义,就是把模拟信号转换成数字信号,例如把电压值转化为数字信号。
3 V& V, ?% `% L- p, v$ h' D
& h4 {# b' O) e1、分辨率$ s9 z9 D3 x0 J6 h7 ^6 a
6 A2 |, u8 C( `% z举个简单的例子,8位芯片只能转换最小到0.01V的电压,而12位的芯片却能转换最小到0.001V的电压,如果一个电压为3.359V,8位芯片转出来后的数值是3.35V,12位芯片转换出来后是3.359V,精度比8位就高一个档次了。(注:这里数值不是正确的数值,举例用,切勿实际使用)' v* G" ~8 ?1 Q' F# R8 ^
4 S6 g# _ _# H2、8位16位的ad转换芯片是什么意思; f+ F$ P! v a" ?2 P
- Y8 ~0 A l% f8 I& D. `* a
8位,16位就代表了AD转换芯片的转换分辨率,数字越大,分辨率越高,同时也反映了它的精度,数字越大,精度相对也越高。8位算是最低了,有些单片机里集成的AD转换器一般是10位的。12位和16位的芯片价格就比较贵了。
+ Y- u4 ?9 E+ _2 L) e
( N' S; ^7 L8 s! N% n4 ?6 S3、精度) d( M( ^. G; T; K1 P
2 T5 A& |$ r4 }7 ~0 U) v% U( D+ i精度是AD芯片的一个重要参数,表示采集到的数据和真实值之间的相差的程度。例如单片机转换出来的结果是0.3V,而实际可能是0.31V,这样就相差了0.01V。这种误差是不可避免无法消除的。这和在第3点中提到的位数有关,位数越高,这样的误差越小。( t! K; e1 ^- a0 \; _. B0 o
# k$ M2 a" W+ E
单片机ad转换处理方法8 k0 r2 i6 H w; o+ E5 m
) C3 D) F( \8 S" x7 ] g4、采样
2 F+ j8 @$ I' \ q" t/ X ^" m, b6 E( A$ |6 n; ] a
采样是AD转换的速度性能指标,通俗的说就是每秒里能采样多少次,采样次数越高芯片性能越好。如果对采样不理解,也可以用另一种方式理解,就是一个AD转换芯把电压值转换成数字值这个过程所需要的时间,时间越短越好。
' E9 s; l! i6 R. S+ c
& t% l3 {3 E2 k% X. a单片机内集成的A/D转换,一般都有相应的特殊功能寄存器来设置A/D的使能标志,参考电压,转换频率,通道选择,A/D输入口的属性(模拟量输入还是普通的I/O口),启动,停止控制等。有了这些寄存器,使得我们控制单片机的模拟量采集变得非常方便。
: O% ~6 ]8 w$ M4 H6 ~5 O) C# t7 l/ q f2 a- U4 P+ p9 {
A/D转换的基本原理是:将参考电平按最大的转换值量化,再利用输入模拟电平与参考电平的比例来求得输入电平的测量值(V测=V参*(AD量化值/AD转换的最大值))。有些mcu A/D转换的参考电平可以选择由一个外部引脚输入,这样使得用户可以对A/D转换进行更好的控制。值得注意的一点就是A/D转换的输入电平必须比参考电平低或相等,不然测试的结果就会有很大的偏差。
5 L3 l% i+ _ K0 v/ a9 F- s
$ E3 i7 v6 b6 C1 a下面以参考电平为5V,转换的精度为8位为例来说明如何取得实际的测量值是多少。如果AD量化值为128,则V测= 5*128/256=2.5V。因为V测=V参*(AD量化值/AD转换的最大值)=AD量化值*(V参/AD转换的最大值),而针对具体的硬件电路,“V参/AD转化的最大值”是一个固定的系数。而这个系数,就相当于测试的精度了。对于10位的A/D,5V的参考电压的测试精度约5毫伏,而用2.048伏的参考电压,精度就可以达到2毫伏。当然测试的电压范围相应的也减小了。我曾经就用这种减小测量范围来提高精度,使用PIC16F76做A/D测量,使得正负误差不超过5毫伏的高精度测试电源。当误差超过5毫伏时,电路发出报警声,提示操作员,重新调解电压到规定范围内。
* _6 ^( u& ~( c
% A% q2 E: ?- D/ [/ a ?% A然而,即使使用同样一款MCU,不同的软硬件设计者,使得A/D转换的效果相差也甚远。主要是很多新手在处理上有些不当,不是直接把一次转换后的结果拿来处理并做相应的显示,就是对参考电平不做处理。所以使得显示效果老是变化不定,给人一种不稳定的感觉。3 I8 Q6 Q7 W: g+ [1 Z
& z* ]8 E% O8 w
针对参考电平设在单片机内部的MCU,主要是要对A/D的量化值做数字滤波处理,比如多次间隔采样,再求平均等。而针对参考电压可以从外部输入脚引入的,最好单独设置一组高稳定度的参考电压,如TL431等。这样,即使MCU的主电源有些波动也不会导致A/D转换值的漂移。其实在没有高精度参考电压的情况下,或者A/D量化值很不稳定的情况下,5 ^3 R$ r/ P% I* g2 U) q8 C
1 l% x2 ?& R5 @' x/ A, x
我们依然可以通过软件的方法将与A/D转换有关的显示或其他的驱动做得非常稳定。这就要看程序员的设计经验了。
) R% t. Z* x e; L4 W, i/ C' c
2 q$ @, s' G9 ~9 k& k1 n+ J |
|