八、A/D转换
本例要用PIC16C54来实现一个A/D转换器。其特点是成本很低,仅需4个低廉的外围元件。精度可由软硬件调节,分辨率为6~10位,转换时间为250us。利用软件校准还可以补偿时间和温度飘移及消除元件误差。
1、电路设计:
电路如图1.13所示:

图1.13 A/D转换电路
电路中采用一个RC充电电路及一个电压/电流转换电路,把输入电压转换成时间量。先算出参考电压Vref对应的时间量Tc,再算出输入电压Vin的时间量Tm,则可由下式算出Vin:Vin=Tc/Tm.Vref
具体可按下到步骤求解:
(1)先由PIC16C54的RB口控制模拟开关CD4066,把电路接成线放电形式,如图1.14所示:

图1.14 放电电路
(2)再把电路接成图4.14所示的充电形式。充电将持续至V0 上升到PIC16C54之RTCC的阈门电压值,并引起RTCC寄存器值变化(加1)。程序在此期间所记录的充电时间即为输入电压V0对应的时间量T。
按以上两个步骤,分别对Vref和Vin求解其对应的时间量,即可按公式算出Vin,完成A/D转换。RC电路参数可下列公式计算:
RC=(Vi*T)/Vt
式中 Vi──输入转换的最小电压值
T───转换时间
Vt──PIC输入端口的门槛电压(一般为3V)
RC的实际取值应比计算出来的值稍小一点,以免PIC在测量过程中计时过头(充电时间)。
注意,由于一般PIC的输入门阈电压为3V,则需用分压电路使Vin不超过3V。实验表明该A/D转换器精度达±1%。去掉u1,则可作为电流型的A/D转换器。

图1.15 充电电路
2、程序流程图:
