基于Proteus的单片机模数转换电路的设计与仿真
2019-04-08汤吉昀宋莉莉
王 超, 汤吉昀, 宋莉莉
(昌吉学院物理系, 新疆 昌吉 831100)
0 引 言
A/D转换器在数据采集和实时控制领域具有非常重要的作用,而衡量A/D转换器的技术指标有很多,比如:分辨率、失调误差、增益误差、微分非线性(Differential Nonlinearity, DNL)和积分非线性(Intergral Nonlinearity, INL)等,这些指标对实际应用电路的测量数据准确性分析具有重要的意义,本设计利用Proteus仿真平台设计了A/D转换电路并进行了详细技术指标的分析。
1 A/D转换电路的设计
图1 A/D转换电路图
2 软件程序设计
(a) 主程序(b) 转换子程序
图2 软件流程图
3 仿真分析
3.1 工作时序及转换时间
图3中,调节RV1,改变输入电压,此时输入电压为1.15V,所得的数字量为(1.15/5)×255≈59(合3 BH),在第4个SCLK采样,其输入电压仍为1.15V,在第5个SCLK时,将输入电压变为0.97V,在第8个SCLK启动A/D转换,下一个转换后的数据仍为3BH,可见,在第4个SCLK脉冲的下降沿采样并且保持,测量Twh的值为389 164 μs~389 126 μs=38 μs,启动转换的时间Tconv为17 μs,与芯片使用手册一致[2,7-9]。
打开Proteus VSM界面调试菜单,单击Terminal选项,可打开SPI调试器窗口,如图4所示,借助SPI调试器,可方便地观察到流经SDO、SDI数据线的数据变化,图4中在347 426 μs~347 748 μs之间流过的数据为3BH,即TLC549转换器输出的数据为3BH,直观地在SPI监控区域显示出来,通过输出指示电路可以观察到二进制为00111011B=3BH。
图3 TLC549工作时序图
图4 SPI调试图
调节电位器RV1,利用电压探针实时测量TLC549输入的电压值,SPI调试器实时观察TLC549转换的结果,使用Ui=Uref·X/(28-1)(Ui为TLC549的输入电压,Uref为转换的参考电压,X为转换后的数字量)计算出模拟输入电压的计算值,三者的关系如表1所示。
3.2 失调误差
失调误差定义为所有输出代码间转换时都存在的代码转换点的偏差[10-13],对A/D转换器来说,它将使A/D转换器转换曲线向左或者向右移动,因在第1个代码转换点测量失调误差最小,采用寻找第1个代码转换点的实际位置与理想位置的差距来求失调误差,依据测量表2的数据,当输入电压为15 mV时,TLC549的的输出代码出现了转折点,而理想的TLC549第1个代码转折点出现在(LSB)/2处,即9.75 mV的位置,第一个测量转折点与理想的转折点差为5.25 mV,即5.25/19.5=0.269LSB,因该值在理想曲线右侧,即转换器的失调误差为-0.269LSB,如图5所示。
3.3 增益误差
增益误差为A/D转换器转换曲线实际斜率与理想斜率间的偏差[10-11],计算前,需要减去失调误差,找出最后1个代码转换点位置与理想转换位置之差即可,A/D转换器TLC549最后数字量测量表如表3所示,依据表3绘制的增益误差转换曲线如图6所示,由图6可知,增益误差为0.282LSB。
在实际的数字测量系统中,增益误差很容易通过将转换结果乘以所需的比例因数而得到补偿。设计者总是可以使用螺丝刀或微调电位器给模拟信号通道施加增益量或衰减量,从而校正A/D 增益误差。
3.4 微分非线性(DNL)
微分非线性描述了转换曲线中任一输出代码宽度与1LSB理想代码宽度之间的偏差[12-13],在补偿了失调误差和增益误差后,可通过相邻代码转换点位置只差求得。TLC549测量的第1个值为16.7 mV,计算值为19.6 mV,可以求得理想曲线的第1个转换点为9.8mV,则第1个理想转换点与第1个测量点之间差为6.9 mV,测量值的代码宽度为13.8,与1LSB理想代码宽度之间的偏差为13.8/19.5-1=-0.292LSB,如图7所示。正的DNL表示代码比理想代码宽长,而负的DNL 表示代码比理想代码宽短。
表1 TLC549测量数值表
表2 失调误差数据表
图5 失调误差
表3 增益误差数据表
图6 增益误差
图7 DNL曲线图
根据TLC549的芯片使用说明,其DNL=±0.5LSB,1LSB=5/256=19.5 mV,若测量A点对应电压的读数为200(电压为3.9V),B点对应电压的读数为220(4.29 V),则可以判断出B点比A点高出390±9.75 mV,而不是390 mV。
3.5 积分非线性(INL)
积分非线性描述了DNL累积的结果,在对所测的转换曲线增益和失调误差补偿后,A/D转换器所测量的转换曲线与理想转换曲线相比偏离了多少,实际上表示了A/D转换器件在所有的数值点上对应的模拟值和真实值之间误差最大的那一点的误差值,也就是输出数值偏离线性最大的距离[14-16]。根据TLC549测量数据,在进行补偿后,测量的曲线图如图8所示。
根据TLC549的芯片使用说明,其INL=±0.5LSB,1LSB=5/256=19.5 mV,若测量A点对应电压的读数为200(电压为3.9 V),那么真实的电压值可能分布在(3.9±0.009 75) V之间。
图8 INL曲线图
4 结 语
使用Proteus仿真软件可将A/D转换过程形象化展现出来,借助Proteus的虚拟设备、仿真图表等工具可准确测量A/D转换数据,据此来分析转换器的性能指标,可帮助学生更好地理解A/D转换过程,提高实际综合应用能力。