光耦的“开”与“关”实际上是其内部LED的点亮与否,所以用一脉冲驱动LED,即可实现光耦的“开”与“关”。本设计驱动LED脉冲由LPC2132的 PWM产生。至于如何实现b,d输出端的脉冲频率、占空比可调,可以转换为调节PWM输出的脉冲频率,占空比。由于光耦内部LED的工作电压为 1.0~1.5 V,工作电流为10 mA左右,而PWM输出脉冲电压3.3 V电流比较小,所以电路设计时加入了晶体管、电阻、5 V电压,以起到减压增流的效果。考虑到1,3与2,4状态正好相反,在电路设计时巧妙加入一反相门。由于需要上下幅值不一样的正负脉冲,在设计时多增加了 2个光耦来选择上下电压幅值,同时也增加了2个外部输入端口,以避免内部电压不满足所求。在内外电压的选择上采用了双刀双掷开关。
2 软件编程
首先对要实现的几个波形进行分析。如图4所示,对要实现的脉冲P1,P2进行分析。通过PWM4来实现脉冲电平的转换,将其设置为双边沿输出;通过PWM2来实现脉冲的正负转换,将其设置为双边沿输出。当确定了Vout1,Vout2,t1,t2,t3,t4,T时,输出脉冲就确定了。
程序设计思路如下:上电后系统进行初始化,当MCU接收到开始命令时(0xCD),开启串口通信,将Vout1,Vout2,t1,t2,t3,t4,T 七个数据设定好。接着,Vout1,Vout2进行公式转换,将转换所得数据通过2路I
程序编译器使用ADS1.2,ADS是ARM公司的集成开发环境软件,它的功能非常强大,ADS包括了4个模块,分别是SIMULATOR,C编译器,实时调试器,应用函数库。所使用语言为C语言,在周立功单片机提供的工程模板的基础上,加入自己的主程序,部分程序参考了周立功单片机所给的例程,经测试无误后生成HEX文件,然后通过JTAG接口,使用AXD软件,把程序烧写入单片机。
3 程控驱动器的调试及结果分析
软件经调试无误后,将最终版软件编译后生成的HEX(i32)文件通过JTAG仿真接口烧写到单片机内,通过计算机上串口终端软件发送7 个数据到单片机,并开始操作单片机。首先对输出电压进行测试,结果发现所得电压与期望电压有一定差别。经过分析,可能存在以下几方面问题:
(1)数字电位器的工作电压为5 V,实际上没有真正达到5 V,经测试为4.8 V,故分压后输入的基准电压有误差;
(2)在程序设计中,因电压公式转换中数据在由实数转换为整数时采取四舍五入原则,使数据变得不够准确;
(3)电路中存在电阻、电容、电感效应等的干扰;
(4)存在电路设计问题,由于个人水平有限,在电路设计及焊接以及装配的过程中,难免会出现问题,这也是噪声的一个重要来源。
综上考虑,电阻电容的干扰无法避免,采用数据修定方法,即在程序中加入一常量,使数据变得更精确。因此,笔者对测得电压与期望电压作了比较,并画出了两个之间的关系图,如图5所示。
采用最小二乘法对实际电压与预期电压的数据进行线性拟合,比例值约为0.957 67,故在程序中加入修定值公式:
两式分别除以0.957 67。再修定后重新测试数据,与预期的电压就基本相符。
4 结语
本设计主要是为LCD测试系统提供一款程控驱动器。经过测试,制作出的程控驱动器输出波形基本符合要求,达到了设计目的,解决了由于 LCD驱动方式的多样化,复杂化,而普通函数发生器远远不能达到要求的问题。该系统输出的工作电压峰值、频率、占空比均可调,是一个低功耗、低输出阻抗的 LCD程控驱动器。