找回密码
 注册
关于网站域名变更的通知
查看: 377|回复: 2
打印 上一主题 下一主题

利用片内比较器为单片机增加A/D转换器

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-8-15 15:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
许多单片机内部都有模拟比较器,利用该比较器可以构成不同精度的A/D转换器。本文介绍利用单片机片内比较器构成的三种A/D转换器。
0 x6 j4 S" f& U  M( |    一、经济型A/D转换器    6 L7 w9 E2 K" D5 i% |- t, L
    单片机片内比较器外加一只电阻和一只电容可方便地构成A/D转换器,其工作原理如图1所示。CPU为AT89C2051。当P1.5 为高电平时,幅值接近Vcc的电压通过电阻R对电容C充电,当C上的电压充至与P1.1脚的被测电压相等时,CPU内部的P3.6由低变高。从P1.5变高到P3.6变高的时间与被测电压的关系为Vc=Vcc(1-e-1/RC)。其中Vc为被测电压,Vcc为工作电压(通常为5V),t为充电时间。
" g+ d$ j8 u: ^0 c' `- ?/ p  由此构成的A/D转换器有以下缺点:1. 精度和线性度较低。受电源电压、逻辑电平的高低、程序执行时间、RC时间常数等的影响,精度、分辨率、线性度通常低于6~7位。2. A/D转换时间较长。充放电时间通常为10ms左右,且充电时间的延长不能换来A/D精度、线性度和分辨率的提高。3. 由于充电曲线为非线性指数函数,需用浮点计算。为简化软件设计,常采用查表法。表格中的数据与RC时间常数、程序执行时间相关,当RC的值发生变化时,与表中数据的对应关系受到影响,较难补偿。4. A/D转换的休止期较长,几乎和A/D转换时间相同。5. 数字逻辑电平的高低影响电容的充放电,直接影响A/D转换的精度。当用作比较粗糙的A/D时,此法不失为一个经济的方案。, @; d3 l1 _* s
    二、单积分式A/D转换器
0 @2 `* D$ k- G: R9 P    若对A/D的精度和线性度有更高的要求,可采用图2所示电路。增加的元件不多,但性能得到大幅度提高,此时电容为恒流充放电。当P1.5为低电平时,R2、Q2、D1形成恒流源。假定恒流源用I0表示,则:
) w' q! l- T$ G6 _- ~' Y$ r    I0=(D1的结电压-Q2的e-b结电压)/R2……(1)
$ O: L) B- E$ U( ]    通常,D1的结电压为0.7V左右,Q2的e-b结电压为0.3V左右,两者在固定的静态工作条件下为定值,因此I0与R2成反比。当R2为定值时,I0为定值,且与电源电压Vcc无关,与P1.5输出的低电平的幅度关系不大,只要保证Q2导通即可。其工作原理为:当P1.5为低电平时,Q1截止,恒流源对电容C1充电。若充电时间为T,则电容C1上的电压为/ I( S- w2 G5 I) i# h5 ^4 s
    Uc=I0×T/C1……(2). n/ n0 f! _" A8 I# c0 ~
    因I0和C1为定值,故Uc与充电时间T成正比。当C1上的电压大于被测的输入电压时,89C2051内部比较器翻转(P3.6变高),CPU只要记下从P1.5变低到P3.6变高的时间即为A/D转换的结果。转换完毕后,P1.5变为高电平,Q2截止,Q1导通,C1通过Q1快速放电,完成A/D转换的复位,为下一次A/D转换作准备。这就是典型的单积分式A/D转换器。! X/ j- Y: q7 p: Y7 {  k
  为便于读者分析和灵活设计,本文给出有用的几组仿真图表和几个计算公式及补偿参数。读者可以根据这些图表选择R2和C1,设计不同性能的A/D转换器。图4中,a点波形为CPU的P1.5的输出波形,OUT为C1上的电压波形,也是模拟比较器的一路输入电压。从图4可以清楚地看到A/D转换器的工作过程。' E$ @) a) s0 V0 e9 T! f. c
    将OUT点的波形放大,可以看出,当CPU的工作电压为5V时,C1上的电压最高可充至4.6V,且C1上的电压是线性增加的。为了得到更佳的线性度和提高A/D的转换速度,规定被测输入电压为0V~2.5V。A/D转换时间小于2ms。    % D  ~7 y. J0 ]9 Y3 W5 y
  改变R2、C1,可以获得不同速度、不同精度和分辨率的A/D转换器。R2越大,C1充到2.5V所需时间越长,分辨率越高。若CPU采用12MHz的晶振,定时器T1作为A/D转换时间计数器,当P1.5变低启动A/D转换时,允许T1开始定时,一直计到比较器输出变高为止,若需要8位A/D,可选择R2=20kΩ,C1从0V充电至2.5V的时间为392μs。若T1的定时时间大于392μs,T1中断,认为输入电压高于2.5V; 若T1的定时时间小于392μs,则定时时间即为8位A/D转换结果。若需10位A/D,可选R2=80kΩ,C1从0V充至2.5V所需时间为1490μs。若T1的定时时间大于1490μs,T1中断,认为输入电压高于2.5V; 若T1的定时时间小于1490μs,定时时间即为10位A/D转换结果。
. B, H( U1 ~8 r6 Z9 E9 |  B) }    C1=2700pF,R2在不同阻值下A/D转换的满度值见下表。  `7 I$ l. {, s; }' u1 ?; f8 n
   R2  A/D转换满度值   低端死区值t09 x; Q! C' F% v5 {* K5 d% f
     20k         392μs               4 μs
/ l7 g0 k; D1 d: j     30k         575 μs              6 μs
% L1 n* L) D% d     40k         762 μs              9 μs* H# `. v4 c  a1 S, Z' `+ |) L+ D
     50k         944 μs              11 μs2 L; |! E% y$ L4 w: x* u3 u
     60k         1138 μs            14 μs. ~0 t' f9 }* z9 I' g$ k
     70k         1312 μs            18 μs
# u; k8 U8 N( b; O( I$ S' }- ~     80k         1490 μs            19 μs6 B/ c, u  W( `2 f! H8 x* t8 B
     90k         1672 μs            20 μs
7 ~& e/ I) p5 T, b0 {) g5 s     100k       1858 μs            24 μs; Q1 ]; O  j. s" o  L4 u
     110k      2035 μs            25 μs5 L- P% P* \5 F7 P
     120k       2216 μs            26 μs# N$ I- F+ e- M& i) D
    市售A/D转换器有些也存在死区,如INTEL196内部的10位A/D转换器在零点附近有6个LSB的死区电压。将图4中C1刚开始充电时的波形放大,得到图5的波形。由图5可以看出,C1在开始启动A/D转换时有一瞬时负压,CPU内部的比较器在此期间不会发生比较翻转,这就是死区t0。T0随R2和C1的不同而变化,如左下附表所示。消除t0的方法是将A/D转换值减去t0作为实际值,在启动A/D转换时延时t0后再启动T1,这样A/D转换值即为实际值。 3 N0 x: }0 b  v7 D1 j0 n
    C1用涤纶电容,R2用优于1%的金属膜电阻,加上合理的软件设计,A/D转换的精度接近8位。最好不用电位器替代R2,长期工作精度不能保证。可以用电阻串并联的方式得到理想的A/D转换精度。
  E' j$ n( t; N1 @   三、双积分式A/D转换器1 d! }! k1 P* m1 f5 J' z( d
   单积分式A/D转换器的缺点是精度受R2和C1的影响。在实际应用中,若需用多路A/D转换,不妨采用图3所示电路。加一只CD4051,最多可对8路A/D进行转换。在其中一路加上基准电压,设对基准电压Vref进行转换的结果为Tref,则由公式(2)可得:
0 u$ ?, N- o  a7 Y! H5 u  Vref=I0×Tref/C1……(3)8 I8 O0 ]. W- m* B6 j
    (2)式和(3)式比较得:' ^9 v9 k+ f2 E! V/ \6 t5 p9 m
    Uc=Vref×T/Tref……(4)
# [0 x& A; r' q$ ~/ u& o3 K  ]    这样,A/D转换的结果只与基准电压Vref有关,与R2和C1无关。即是双积分A/D转换器的工作原理。
" A3 n* f, z- N    第一次转换时,先对基准电压Vref进行测量,测得结果为Tref,然后对被测电压进行测量,假设测值为T,则用软件计通过公式(4)算出被测电压。只要在这两次测量期间内,R2和C1保持相对不变即可。采用此方法,A/D转换精度可优于8位,分辨率可达12位。
* O- x+ B$ {. V# F7 z$ M3 G    最后,需要说明的是:1. 若CPU内部无比较器,也可在外部加一个廉价的比较器或运放来构成A/D转换器。2. 本文介绍的A/D转换器主要用在对价格要求苛刻的场合。3. 虽然电路的休止期较短,但建议两次A/D转换的间隔要大于100μs。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-16 13:08 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表