位置:51电子网 » 技术资料 » 可编程技术

一种基于AT89C1051/2051的低成本A/D转换方法

发布时间:2007/8/15 0:00:00 访问次数:2451

    摘要:介绍一种基于AT89C1051/2051的低成本A/D转换电路和方法。该电路采用通用、廉价的器件,利用线性锯齿波和单片机内部的定时器来获得A/D转换结果,与单片机接口简单。采用该方法除了能获得较快的转换速度以外,转换的分辨率也可灵活设置,具有一定的实用价值。

    关键词:A/D转换  线性锯齿波  模拟比较器  AT89C1051/2051

    在低成本智能仪表的设计过程中优先考虑的是成本问题,作为核心部件的单片机通常选用低档的8位机或4位机。就目前的情况而言,自带A/D转换的低档单埏机价格昂贵,在需要进行数据采集要时往往通过外部A/D转换器件,这在很大程度上增加了系统的成本。例如,目前AT89C2051单片机的零售价仅7~8元,而中速A/D转换器件的价格大都在20元以上。本文介绍的低成本A/D转换方法仅使用两片通用、廉价的器件就能达到中速A/D转换的速度和低于16位的转换分辨率。

1 原理

    有一线性良好的锯齿波信号,最大幅度为Vmax,正程(0~Vmax)的扫描时间为t2(如图1中的直线OB),在正程扫描期间的某一时刻t所对应的电压Vt为Vmax(t/t2)。图1中的曲线CD为一待测模拟信号,两信号在A点相交,时间为t1,不难理解,线性锯齿波在A点的幅度就是待测的模拟信号的大小,其值Vt1可以表示为:Vt1=Vmax(t1/t2)。这就是说,可以采用一种方法将待测的模拟信号与线性锯齿波进行比较,当线性锯齿波在某一时刻的幅度超过待测模拟信号的幅度时就会引起比较器输出状态的改变。因此,测出比较器输出状态翻转的时间,就能通过计算得到待测模拟信号的大小。

2 电路及A/D转换的过程

    图2给出了具有8位分辨率的A/D转换电路。图中,IC1为AT89C2051单片机,其P1.0和P1.1除了具有通用I/O口线的功能外,还是内部模拟比较器的同相输入端和反相输入端,比较器输出的结果在内部连接到P3.6。IC2和IC3为线性锯齿波产生电路,其正程开始扫描的时刻由单片机的P3.7控制。IC3为一双输入与非门缓冲驱动器,这里等效为一个开关。当P3.7=0时,开关断开,C1通过R1、W1充电,线性锯齿波开始正程扫描,同时单片机内部定时器0开始计数,计数脉冲为单片机内部时钟。待测的模拟信号从P1.1输入,因为线性锯齿波电压是从0开始线性递增的,所以在开始正程扫描的时刻,P3.6为0.当锯齿波的电压线性递增到超过待测模拟信号的电压时, 比较器的输出翻转,P3.6为1,此时定时器0的数值就是A/D转换的结果,也就是图1中所示的t1,通过前面的公式就可以得到待测模拟电压的值。其程序框图如图3所示。

3 线性锯齿波电路参数的确定

    AT89C2051单片机的定时器0是一个16位计数器,因此这种方法所能达到的最高分辨率为16位,在最高时钟频率下(24MHz)完成一次A/D转换的最长时间约为33ms。在实际应用过程中不一定使用这么高的分辨率,在8位分辨率的情况下完成一次A/D转换的最长时间为128μs。下面以8位分辨率为例介绍锯齿波电路参数的确定方法。

    对于图2电路,当P3.7输出为低时,锯齿波正程扫描开始,C1经R1、W1充是,其电压Vc1为:

    Vc1=Vcc×(1-e-(t/τ))

    其中τ=(R1+Rw1)C1

    如果运放IC2:B将Vc1放大10倍,其输出为:

    Vo1=[1+(R3/R2)]Vc1

    =10Vcc(1-e-(t/τ))

    因为IC2:B

    摘要:介绍一种基于AT89C1051/2051的低成本A/D转换电路和方法。该电路采用通用、廉价的器件,利用线性锯齿波和单片机内部的定时器来获得A/D转换结果,与单片机接口简单。采用该方法除了能获得较快的转换速度以外,转换的分辨率也可灵活设置,具有一定的实用价值。

    关键词:A/D转换  线性锯齿波  模拟比较器  AT89C1051/2051

    在低成本智能仪表的设计过程中优先考虑的是成本问题,作为核心部件的单片机通常选用低档的8位机或4位机。就目前的情况而言,自带A/D转换的低档单埏机价格昂贵,在需要进行数据采集要时往往通过外部A/D转换器件,这在很大程度上增加了系统的成本。例如,目前AT89C2051单片机的零售价仅7~8元,而中速A/D转换器件的价格大都在20元以上。本文介绍的低成本A/D转换方法仅使用两片通用、廉价的器件就能达到中速A/D转换的速度和低于16位的转换分辨率。

1 原理

    有一线性良好的锯齿波信号,最大幅度为Vmax,正程(0~Vmax)的扫描时间为t2(如图1中的直线OB),在正程扫描期间的某一时刻t所对应的电压Vt为Vmax(t/t2)。图1中的曲线CD为一待测模拟信号,两信号在A点相交,时间为t1,不难理解,线性锯齿波在A点的幅度就是待测的模拟信号的大小,其值Vt1可以表示为:Vt1=Vmax(t1/t2)。这就是说,可以采用一种方法将待测的模拟信号与线性锯齿波进行比较,当线性锯齿波在某一时刻的幅度超过待测模拟信号的幅度时就会引起比较器输出状态的改变。因此,测出比较器输出状态翻转的时间,就能通过计算得到待测模拟信号的大小。

2 电路及A/D转换的过程

    图2给出了具有8位分辨率的A/D转换电路。图中,IC1为AT89C2051单片机,其P1.0和P1.1除了具有通用I/O口线的功能外,还是内部模拟比较器的同相输入端和反相输入端,比较器输出的结果在内部连接到P3.6。IC2和IC3为线性锯齿波产生电路,其正程开始扫描的时刻由单片机的P3.7控制。IC3为一双输入与非门缓冲驱动器,这里等效为一个开关。当P3.7=0时,开关断开,C1通过R1、W1充电,线性锯齿波开始正程扫描,同时单片机内部定时器0开始计数,计数脉冲为单片机内部时钟。待测的模拟信号从P1.1输入,因为线性锯齿波电压是从0开始线性递增的,所以在开始正程扫描的时刻,P3.6为0.当锯齿波的电压线性递增到超过待测模拟信号的电压时, 比较器的输出翻转,P3.6为1,此时定时器0的数值就是A/D转换的结果,也就是图1中所示的t1,通过前面的公式就可以得到待测模拟电压的值。其程序框图如图3所示。

3 线性锯齿波电路参数的确定

    AT89C2051单片机的定时器0是一个16位计数器,因此这种方法所能达到的最高分辨率为16位,在最高时钟频率下(24MHz)完成一次A/D转换的最长时间约为33ms。在实际应用过程中不一定使用这么高的分辨率,在8位分辨率的情况下完成一次A/D转换的最长时间为128μs。下面以8位分辨率为例介绍锯齿波电路参数的确定方法。

    对于图2电路,当P3.7输出为低时,锯齿波正程扫描开始,C1经R1、W1充是,其电压Vc1为:

    Vc1=Vcc×(1-e-(t/τ))

    其中τ=(R1+Rw1)C1

    如果运放IC2:B将Vc1放大10倍,其输出为:

    Vo1=[1+(R3/R2)]Vc1

    =10Vcc(1-e-(t/τ))

    因为IC2:B

相关IC型号

Warning: Undefined variable $stockkeys in G:\website_51dzw\www.51dzw.com\code\tech\view.php on line 152

热门点击

 

推荐技术资料

电动吸锡烙铁
    用12V/2A的电源为电磁阀和泵供电,FQPF9N50... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式