| | 网站首页 | 电子基础 | 电子应用 | 电子电路图 | 雁过留声 | 软硬件设计 | ET电子商城 | 信息发布 | PDF查询 | 互助社区 | | |
![]() |
![]() |
| 您现在的位置: 迷失者电子网 >> 软硬件设计 >> 单片机 >> 文章正文 |
|
|||||
|
AT89C1051/2051的A/D转换方法02 |
|||||
| AT89C1051/2051的A/D转换方法02 | |||||
作者:佚名 文章来源:网络 点击数: 更新时间:2008-7-27 ![]() |
|||||
|
=[10Vcc(1-e-(t/τ))+Vo2(1-e-(t/η)12)]/2 式中:Vcc=5V;η=(R5+Rw2)C3 上式经过整理可得: Vo2=50(1-e-(t/τ))/(1+e-(t/η)) 上式就是线性锯齿波的理论表达式,通过合理选择τ、η的值,就可以得到线性良好的锯齿波。 在实际设计中,我们通过一段C语言程序可根据上式先从理论上求得最佳的τ、η的值,再根据实验结果进行调整。其程序如下: #include<stdio.h> #include<math.h> int main(void) { int τ=640, η=610; /*预置τ、η的值*/ double result,result-bak=0; double t,x,y; system(“cls”); /*清屏幕*/ for(t=0;t<=127;t+=0.5)/*8位分辨率时,锯齿波的正程为128微秒*/ { x=-t/τ; y=-t/η; result=50*(-exp(x))/(1+exp(y)); printf(“%4fmV”,(result-result-bak) 1000);/*每0.5微秒递增的电压(mv)*/ result-bak=result; } } 在τ=640μs、η=610μs时,通过上述编程处理,可使锯齿波非常接近线性,每μs的线性误差均在0.1mV以内,完全可达到8位分辨率A/D转换的要求。 4 误差分析及补偿 采用该方法进行A/D转换的误差来源主要有两个,第一是锯齿波的非线性此起的误差,根据上面的叙述,锯齿波的非线性基本上对A/D转换的结果不产生影响;第二是单片机在控制A/D转换的过程中引出的,这包括三个方面:其一是在“打开转换开关”和“定时器开始计数”这两个动作中单片机不可能同时完成;其二是单片机判断片内模拟比较器翻转的过程需要两个机器周期,而计数器最小的计数单位为1个机器周期;第三个原因是单片机确认模拟比较器输出状态翻转和关闭定时器不可能同时完成。对于第一和第三种情况引起的误差,由于它的确是指令执行所引起的,其误差的数值取决于指令执行的时间,因而在转换结束时将定时器0的值减去这个时间就可以了;而第二种情况引起的误差是无法进行补偿的。 5 结束语 采用本文所述的方法所设计的数据采集系统成本低廉,接口简单,具有较高的性能价格比。需要指出的是,为保证系统的长期稳定性,应采用高稳定的积分电容(C1、C3)。 |
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| AT89C1051/2051的A/D转换方法… |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 | | |
![]() |
Copyright@ 2005-2008 www.MsZhe.com All rights reserved |