本文介绍的模拟,数字转换方法。可以分辨出0.05mV的模拟电压。转换位数超过14位。实用于无模拟,数字转换或转换位数很低的单片机。电路见附图所示。
IC1在捕捉器未打开时,令其(12)脚输出高电平,c4通过v1把电压放至OV.IC2B作为比较器,其(6)脚为测量电压输入端。要求输入电压不低于1.5mY。当C4上的电压为0V时,IC2B的(6)脚电压高于(5)脚,(7)脚输出低电平。
IC1在捕捉器打开时。令其(12)脚输出低电平。V1截止。此时,C4经R12充电。当C4上电压超过IC2B的(6)脚时。IC2B的(7)脚输出高电平,IC1内的捕捉器立刻捕捉到c4由OV升至超过IC2B的(6)脚时的时间T。IC2B的(6)脚电压升降时。T也跟着升降。反过来,知道时间T就等于知道IC2B的(6)脚电压,从而完成模拟,数字的转换。
如果C4上的充电电压是直线上升,那么。T与IC2B的(6)脚电压就能成正比。然而。c4上的充电电压是按指数规律上升,所以,T与IC2B的(6)脚电压升降不能成正比。即T与输人电压里非线性关系。如在单片机内做指数运算,很难。
不过,如果对输入电压范围只取很小的一段。如30mV左右,在此电压范围内得到的T值,就近似成正比关系;输入电压范围取得越小,T值就越接近线性。
当然。输入电压范围取得小。得到的T值也就小。
为了能对输入电压微弱的变化就能引起T值很大的变化。用增大C4与R12的充电常数来获得。实践中。发现过量增大c4与R12的充电常数。虽然得到的T值很大。能分辨0.05mY以下的输入电压,但是。噪声也随之增大。表现为数码管上数字的尾数不稳定。
这种转换,是利用单片机的捕捉器。而对于无捕捉器的单片机,用具有端口电平变化中断的引脚也可以完成。
本人将附图IC2B的(6)脚配上几只电阻。将其制作成毫伏表,显示范围为20.OmV至350.0mV,此显示与数字万用表显示吻合。来观察它的线性。结果发现与万用表最大误差为0.4mV。电路存在温漂,附图中的D3能起到一点温度补偿作用。
本文所附的源程序也就是制作毫伏表的程序(可在WWW.mcu-sys.com网站下载)。调试如下:同时按下k1、k2,L1点亮。调整输入电压。数码管上显示的数字应该随之改变。输入20.OmV电压。数码管显示约4500。然后,输入60.OmV。将k1按一下。L2点亮,输入220.0mv.数码管显示约17000,按一下k1.L3点亮,然后,重新上电即可。
如果显示有“E--”字样,则表示用于捕捉器的时钟源TMR1溢出。编程中,约定的数据最大为32767,所以。在调试时,显示的数字不能超过32767。