通常A/D转换都需使用A/D转换芯片来实现,MC9S12XS128MAL是飞思卡尔公司HCS12系列16位单片机中的一种,它有8 kB的RAM、128 kB的片内闪存(Flash EEPROM)、2 kB的电可擦写可编程只读存储器(EEPROM)及多种功能的接口,MC9S12XS128内置的A/D模块是16通道、12位精度、多路输入复用、逐次逼近型的模数转换器,故可省去使用A/D转换芯片而设计的硬件电路,可降低成本,提高了系统的稳定性及可靠性。但单片机的模拟输入端只能接受单极正向模拟信号,不能直接进行双极模拟信号的模数转换,为此必须把双极模拟信号转换成单极正向模拟信号。在一般的设计中,常常要把形如-ui-+ui的双极型模拟信号通过电位平移电路转换成0~5 V单极信号,而这种平移电路会使得A/D转换的精度降低一倍,而且稳定性也降低。而文中采用对称,使得单片机可接收的A/D信号由0~5 V扩大到-5~+5 V,A/D转换的量程扩大了1倍,稳定性也大幅提高。
1、电路设计
图1 总体电路示意图
1.1 设计原理
当输入的信号经放大电路放大后,若信号为正,则二极管1截止,信号无损失地从AD0口输入,同时正的信号经反相器反相后变成负的信号,二极管2导通,所以AD1口接收到的信号为二极管2的正向导通压降的负值,只要这个负值电压的幅度小于A/D口输入的允许值,则由此口采集的A/D值就为0,因此在这种情况下的A/D值就是AD0口的值;
反之,当输入的信号为负值时,二极管1导通,AD0口接收的数据为0,而经反相器反相后的信号为正,二极管2截止,AD1口接收数据。
若AD=AD0-AD1,当信号为正时,AD=AD0-0,为正;当信号为负时,AD=0-AD1,为负。此时,AD可接收的数据由原来的0~5 V扩展为-5~+5 V。
1.2 二极管的选择
若从线性度考虑,应该选择正向压降高的二极管,例如1 N4007。但1N4007的正向压降约为0.7 V,当二极管导通时,对应的A/D口所接收到的信号为-0.7 V,这会烧毁单片机,所以从安全性考虑应该选择压降较低的二极管进行实验。PMEG2010的压降约为0.1 V,1N60的压降约为0.2~0.3 V,均能保护好单片机不被烧坏。在安全性的前提下,分别测量数据分析二极管的线性度。
2、实验与结论
2.1 PMEG2010
文中以某种信号为输入信号,测量输出信号和输入信号是否成线性关系。
表1是二极管为PMEG2010是测得的数据,将数据拟合后可得到二极管为PMEG2010时所得曲线,如图2所示。
由图2所示,在零点附近输入与输出之间呈明显的非线性关系。原因是PMEG2010的反相漏电流过大,且漏电流大小与输入信号的大小之间也呈非线性关系,所以测得的数据与输入值之间呈非线性。
2.2 1N60
当把PMEG2010换成1N60后,再次测得一组数据,并分析其线性相关性。
图2 二极管为PMEG2010时所得曲线
将上述所测得数据拟合后得到图3所示。
图3 二极管为1N60时所得测得的曲线
图3是拟合后的曲线,由图可看出输入值和输出值之间呈较好的线性关系,拟合曲线的方程为y=0.049 421 335 942 257 8+2.261 803 178 235 24×x,相关系数为R=0.999 72,可满足一般的测量需要。
3、结束语
经过实验数据验证以及参考相关资料文献,可得出以下结论:(1)本能有效地解决单片机接收单极信号和双极信号的关系,使得单片机可接收并处理双极信号。(2)通过对称电路的设计,使得A/D可接收的信号由原来的0~5 V变为-5~+5 V,有效地扩大了A/D的量程。(3)当二极管选用得合适,能够保证数据的线性关系。(4)设计使用单片机内置的A/D模块,节省了A/D芯片的使用,使得设计成本降低。