TLC2543采用SPI串行接口,而STC89C52单片机不具备SPI接口,因此要利用TLC2543实现模数转换,需要用软件来模拟SPI的时序操作。它是属于在SCK的上升沿接收数据和在下降沿发送数据,所以应先将其串行时钟SCK初始状态设置为1,而在允许接收后再置SCK为0。这样,就在SCK 上产生了一个下降沿,芯片在下降沿的驱使下将待发送数据串行左移,将最高位数据发送至MISO线上,此后再置SCK为1,产生一个上升沿,芯片接收上位机的最高位数据。至此,一位数据传输完成。依此循环12次,即可完成1次通过SPI总线传输12位数据的操作。
模数转换部分采用TLC2543CN模数转换芯片,其为11通道12位的模数转换器,本设计采集4路直流电压,因此选用AIN0、AIN1 AIN2和AIN3四条模拟输入通道,通过内部的模拟多路选择器,分时的对四路模拟信号进行AD转换,需要注意的一点是,当前读出的AD转换的数据是上一次通道选择命令所选择的通道,在程序设计中应注意。TLC2543模数转换程序流程图如图6所示。
图6 TLC2543模数转换程序流程图
模拟信号检测的光电检测跟踪的程序流程图如图7所示。
图7 模拟信号检测的光电检测跟踪的程序流程图
模拟信号检测的光电检测跟踪,它的工作原理是这样的:通过TLC2543CN把采集到的4路模拟信号转换成4路数字信号,我们把这4路信号分别赋值为AIN1,AIN2,AIN3,AIN4。由STC89C52单片机对这4路数字信号进行比较大小,之后单片机控制电动机转动。
在本设计中,我们把上述4路数字信号分为两组来进行比较。AIN1和 AIN3一组,AIN2和AIN4为另一组。首先程序开始执行时,先判断AIN1和 AIN3通道电压是否相等,如果两者相等,电机A停转。如果两路数据不等,则有两种情况:一种情况是AIN1通道数据大于AIN3通道数据,此时单片机驱动电机A正转,在电机A正转的过程中,我们可以知道,太阳光斑的位置会离D1越来越远,而离D3将会越来越近,所以这两路中AIN1通道采集到的电压将会减小,而AIN3通道电压将会增加,在某一瞬间有可能出现AIN1通道数据小于AIN3通道数据,也就是电机A转过的情况,则此时只需电机A反转即可;另一种情况是AIN1通道数据小于AIN3通道数据,则此时单片机驱动电机A反转,在电机A反转的过程中,类似的,会出现AIN3通道采集到的电压减小, 而AIN1通道电压增加,如某一瞬间电机A反转转过的情况,则此时只需电机A正转即可。这样电机A转动的过程中AIN1和 AIN3反复比较,直到两通道数据相等,电动机A停转为止。
而 AIN2和AIN4为另一组比较,此组比较控制电动机B的正反转,原理同以上所述。
这部分设计只需要单片机反复比较采集到的这两组通道中电压的大小,并对电动机A、B发出相应的指令,进而控制电动机A、B的正反转动,就可以实现对太阳位置的精确跟踪。
五、结论
此模拟信号检测的光电检测跟踪设计能够实现对太阳位置的精确跟踪。采集是光电跟踪检测的的关键环节,而本文设计为得到外部的物理信息提供了可靠的保障。本设计介绍了TLC2543CNA/D将模拟信号转换为数字信号,利用STC89C52对通过A/D转换的数字信号进行数据处理和分析,能够实现对太阳位置的精确跟踪。另外该设计成本低,体积小,传输速率高,并且弥补了传统光电检测跟踪系统的缺陷,用连续的模拟量取代开关量,控制更精准,以达到确定太阳辐射角度的精确位置,实现对太阳的高精度跟踪。
参考文献:
[1]徐东亮,任超.太阳自动跟踪装置控制系统的研究[J〕.机械工程与自动化,2008:2.
[2]郑小年,黄巧燕.太阳追踪方法及应用[D].能源技术,2003,24,(4):149-151.
[3]史延龄,李汉军.光导效应与光敏器件[M].现代物理知识,2000,9(4):31-32.
[4] Whittington H W. An on-line wear debris monitor[J].Meas Sci Technol,1992.
[5]Datasheetfor AT89C2051 8-bit Microcontroller with 2K Bytes Flash. http://www.atmel.com/dyn/resources/prod_documents/doc0368.pdf[EB/OL].2008-11-16
[6]陈小忠,黄宁,小侠.单片机接口技术实用子程序[M].北京:人民邮电出版社,2005:83~88
[7] 夏益民,谢云,刘冰茹.AD芯片TLC2543与51系列单片机的接口设计[J].广东工业大学学报,2006,23(3):118-121