注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

lql990832的博客

枫生于岭格外红.......

 
 
 

日志

 
 

用普通单片机实现低成本A/D转换(二)  

2009-11-04 23:09:16|  分类: 单片机原理与应用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
    在本文中提供一种A/D转换方法,该方法占用较少的单片机资源,成本低,有很强的实用性,该电路曾在锂离子电池充电器中作A/D转换使用,效果良好。

    其电路如图一所示:

用普通单片机实现低成本A/D转换(二) - lql990832 - lql990832的博客

                                       图一
    其工作原理说明如下:
1  硬件电路说明:
    图一中的R1和N1(TL431)产生一个2.495V的稳定电压,作为A/D转换比较基准。R2、V1、VD1、VD2和R3构成一个恒流源电路给C1充电,C1上的电压与恒流源的电流大小及充电时间成正比。  
    MC74HC4051为8选1模拟开关,其输入通道由单片机控制来选择。LM393作为比较器,当C1上的电压由低到高上升到超过模拟开关输出电压时,其输出端会从低电平转变为高电平。“RA0”、“RA1”和“RA2”为单片机的3个 I/O脚,RA0设置为输入状态,用于检测比较器输出电平变化,RA1和RA2设置为输出状态,RA1输出高电平时,V2导通,用于将C1上的电荷放空, RA2用于选择模拟开关的输入通道。
2  A/D转换过程:
    首先RA2输出低电平,使模拟开关选择X0(基准电压)作为输入,RA1输出高电平,使V2导通将C1上的电量放完,然后使RA1输出低电平,使 V2截止,此时C1上的电容开始被充电,同时计数器开始计数,当C1上的电压不断上升,并达到比较器输入负端的电压(此时为基准电压Vref)时,比较器的输出端由低电平转为高电平,此时记录下计数器的计数值,为T1。
    接着RA2输出高电平,使模拟开关选择X1(被测电压)作为输入,RA1输出高电平,使V2导通将C1上的电量放完,然后使RA1输出低电平,使V2截止,此时C1上的电容又开始被充电,同时计数器开始计数,当C1上的电压不断上升,并达到比较器输入负端的电压(此时为基准电压)时,比较器的输出端由低电平转为高电平,此时记录下计数器的计数值,为T2。
    由于C1是被恒流充电,因此C1上的电压与充电时间成正比,即V="T"*k。当C1的容值与充电的恒流值不变时,k是一个固定不变的常数。由此可以得到:
Vref/T1=V1/T2 ,即 V1=Vref*T2/T1
    由于Vref是基准电压(2.495V),因此只要利用单片机的定时器测出T1和T2,就可以计算出被测电压V1的值。
3  A/D转换误差分析及解决办法:
    A/D转换的误差主要由以下几个方面决定,分别说明如下:
    1、基准电压Vref:在该A/D转换中,Vref电压是造成A/D转换误差的主要原因,如果使Vref电压精度做到较高,则A/D转换误差可以做到很小,在Vref电压精度为0.5%情况下,实际的A/D转换误差小于1%。
    2、定时器误差:若单片机对比较器输出端的电位变化反应慢,或定时器误差较大,则测量到的T1与T2值不准,也会导致测量误差。
    3、比较器输入端的失调电压:该电压对A/D转换精度有一定影响,但影响较小。
    4、运算误差:由于V1值要经过乘除法运算后得到,在进行运算过程中如果数据处理不当,如余数处理不当,也会产生误差。
    5、干扰误差:当输入电压不稳时,恒流源的输出电流会有一定的影响,会产生干扰误差。
A/D转换误差的解决办法:
    1、对Vref造成的误差,只能通过提高Vref电压精度来解决,它相当于A/D转换的基准电压。
    2、对于定时器误差,在单片机中可使RA0口采用带电平变化中断功能的I/O口,以提高反应速度,同时减少恒流源的电流大小,或加大C1电容容量,可以增加T1、T2的测量时间,使计数值加大,达到提高A/D转换精度的目的。
    3、选用灵敏度高的比较器可解决比较器输入端导致的误差问题。
    4、对运算误差,可以通过软件上的改进来解决。
    5、对于干扰造成的误差,可对A/D转换值进行数字滤波,如多次转换求平均值等方法来解决。数字滤波消除误差的方法很多,在此不再赘述。
4  A/D转换速度及提高办法:
    由于该A/D转换是通过恒流源对C1电容充电后再进行比较来完成的,C1电容的充电过程需要一定的时间,因此其A/D转换速度较慢,适用于对A/D转换速度要求不高的产品中,其A/D转换速度取决于以下几个方面:
    1、恒流源的电流大小:恒流源的充电电流越大,C1上的电压上升速度就越快,到达被比较电压的时间也就更短,转换速度就更快。
    2、C1电容的大小:其道理与前一点一样,当电容小时,电压上升速度就越快,到达被比较电压的时间也会越短,转换速度就越快。但由于计数值小,由定时器造成的测量误差也有可能加大。
    3、单片机的工作频率:由于A/D转换值是经过乘除运算后完成的,因此单片机的运算速度也会对A/D转换速度有影响,尤其当计数器值为16位时。
    由上所述,A/D转换的速度可以通过提高单片机的工作频率,增大恒流源的输出电流,减小C1电容容值来加快A/D转换速度,但要注意当T1、T2 计数值太小时有可能使定时器因素造成的误差增大,因此在实际使用中要综合考虑,在提高转换速度时,保证A/D转换精度,选择最适用于产品的参数值。
5  输入电压的测量范围:
    A/D转换的输入电压测量范围为0V至4.5V,当C1被充电至大于4.5V时,恒流源输出将不再恒流,C1上的电压与时间将不成正比,因此测量范围只到4.5V。若要提高被测电压范围,可将输入电压通过电阻分压后进行测量,但其A/D转换的误差会受分压电阻影响。
6  A/D转换通道的多路扩展:
    图中的8选一模拟开关只用到其中的2路,实际应用中其它的6路也可使用,这样A/D转换的通道可扩展到7路,因此在用4个I/O口情况下,可实现3路A/D转换,在用5个I/O口情况下,可实现7路A/D转换。
  评论这张
 
阅读(400)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017