基于C8051F020型单片机的仿真随动舵轮的转角检测
2014-10-17张芊,胡猛
张 芊,胡 猛
· (镇江船艇学院,江苏 镇江 212003)
基于C8051F020型单片机的仿真随动舵轮的转角检测
张 芊,胡 猛
· (镇江船艇学院,江苏 镇江 212003)
介绍了航海模拟训练系统中仿真随动舵轮的转角、转向的检测方法,给出了该方法的工作原理和硬件设计,并进行了软件编程。该设计成本低廉、简单可靠,可推广至任何角度检测系统中。
随动舵;C8051F020;PCA
0 引言
航海模拟训练系统是通过模拟真实的船舶驾驶舱和电脑实时生成船舶航行过程中的虚拟视景等驾驶环境来训练正确的船舶驾驶操作。使用该装置进行训练是提高航海专业学生实操能力和积累航行经验的有效途径。训练者在利用航海模拟训练系统进行实操训练时,转动随动舵轮,系统要能够实时地检测出舵轮的转动方向和角度,从而做出正确的操纵响应[1-2]。本文介绍了一种低成本的基于 C8051F020型单片机的仿真随动舵轮的转角检测设计。
1 工作原理
本设计的基本原理是:仿真随动舵轮是一个可顺时针或逆时针自由转动的圆形轮盘。自制一个圆周都是均匀方齿的圆盘(如图1所示)与仿真舵轮同轴连接,将两个槽型光电开关安装在圆盘上的任意两个相邻方齿附近,要让方齿能够嵌入在光电开关的U形槽里,安装位置如图2所示。x1和x2即为两个槽型光电开关中心轴线的安装位置,注意,x1和x2之间的距离不要恰好等于相邻两齿的中心间距,可以大于或者小于相邻两齿的中心间距。这样,当仿真舵轮往复旋转时,圆盘也随之旋转,在转动过程中,根据方齿是否正好落在光电开关的凹槽里面阻断光轴,光电开关可输出高低不同的电平信号。随舵轮的转动,光电开关不断输出脉冲,利用C8051F020单片机中PCA(Programmable Counter Array,可编程计数器阵列)的高速捕捉功能对脉冲进行计数即可知道舵轮的转角和转向。
图1 四周都是均匀锯齿的圆盘
图2 光电开关安装示意
2 硬件电路设计
C8051F020型单片机是C8051F系列单片机中的一款。C8051F系列是美国德克萨斯州的Cygnal公司设计和制造的混合信号片上系统单片机,主要模块包括模拟外设、片内JTAG调试和边界扫描、高速控制器内核、数字外设等几个部分[3]。C8051F020有5个16位通用计数器和定时器,还有一个片内可编程计数器/定时器阵列(PCA)。PCA(Programmable Counter Array)提供了1个专用的16位定时/计数器和5个16位捕捉/比较模块,其基本原理框图如图3所示。每个捕捉/比较模块有独立的I/O线(CEXn,n=0~4)。当被允许时,这些I/O线通过交叉开关连到I/O线端口。每个捕捉/比较模块可被编程为独立工作在下面的6种工作方式之一:边沿触发捕捉、软件定时器、高速输出、频率输出、8位PWM以及16位PWM。本设计中主要用到的就是C8051F020单片机中PCA的边沿触发捕捉功能。在该方式下,若CEXn引脚输入信号发生跳变,则PCA0将定时/计数寄存器的值读进相应模块的16位捕捉/比较寄存器中,从而保证在每个输入脉冲边沿PCA计数器值被准确记录[4]。
图3 PCA原理框图
槽型对射式光电开关,是一款红外线感应光电产品,由红外线发射管(发光二极管)和红外线接收管(光敏三极管)组合成。其发射器和接收器分别位于U型槽的两边,没有阻隔时接收器可直接接收到发射管发出的光轴,而一旦有物体落在U型槽内且阻断光轴时,接收器将无法接收到发射管发出的光轴。硬件电路如图4所示,光电开关的E脚接地,C脚则通过上拉电阻接电源正极。当圆盘四周的方齿正好落在槽型光电开关的U型槽里时,光电开关中的接收管截止,C脚输出高电平;而当圆盘转动,方齿移开后,光电开关中的接收管饱和导通,C脚输出低电平。这样在舵轮转动过程中,光电开关就不断的输出脉冲信号,采用施密特触发器74LS14对输出脉冲进行整形反向,然后将安装在x2位置的光电开关的输出连接到C8051F020单片机中PCA的CEX0引脚,利用其进行转角计算;安装在x1位置的光电开关的输出则接到单片机的数字I/O口上,作为控制信号CTR用来判断转动方向。在仿真舵轮不转动时,两个光电开关都截止,输出都是1,而当舵轮顺时针转动时,由于安装位置的不一样,x2位置的光电开关将先导通,输出从1变为0,此时x1位置的光电开关还处于截止状态,输出为1。定义单片机的PCA工作在正边沿捕捉模式下,一旦舵轮顺时针转动,CEX0被上升沿触发,进入中断后读取CTR的值,若为0,判断舵轮此时顺时针转动,计数值累加。反之,舵轮逆时针转动时,安装在x2位置的光电开关由截止变为导通时,x1位置的光电开关已经先导通,输出为0,即CEX0接受到了上升沿使单片机进入中断后读取的CTR为1,这样便判断舵为逆时针转动,计数值递减。计数值的正负可体现舵的方向,若PCA的计数值大于0,此时随动舵为右舵;PCA的计数值小于0,此时随动舵为左舵。计数值的大小可反映舵角的变化。考虑到真实的船舶驾驶过程中,一般是随动舵轮转动一圈,真实舵角变化10°左右。即舵角=触发脉冲个数÷圆周方齿个数×10°。由此可见,圆周的方齿数量决定了舵角指示的精度,方齿数量越多则舵角指示越准确。在正常情况下,自制圆盘周边超过30齿,即可满足正常航海模拟训练系统的需求。
图4 硬件电路
3 海上补给试验监控系统设计
采用C语言进行编程。初始化以后计数初值为0,等待由CEXO引入的外部脉冲信号,一旦上升沿触发CCF中断后,读取CTR值,若为1,计数值累加;若为0,计数值递减。对计数值进行换算可得到仿真随动舵转动的角度。以圆周上有50个方齿的圆盘为例,每个触发脉冲所代表的就是舵角变化10°/50=0.2°。故计数值每次累加或者递减时舵角便相应变化0.2°。最后将CCF位进行软件清O,出中断。主程序流程如图5所示,PCA中断处理程序流程如图6所示。
图5 主程序流程图
图6 PCA中断处理程序流程图
下面给出主程序的源代码:
4 实例应用
本文提出了一种利用C8051F020型单片机中PCA的高速捕捉功能进行航海模拟训练系统中仿真随动舵轮转角及转向测量的方法。该方法简单可靠、方便实用、成本低廉,并可推广至任何角度的检测系统中。运用这一技术控制的仿真随动舵轮已经成功地应用到研制新型航海模拟训练系统中。训练结果表明:利用该设计仿真随动舵能准确地指示训练者操作船舶航行的方向,仿真效果好、工作稳定可靠。
[1]胡定军,张 芊.船舶操纵模拟器的随动舵测量方法[J].船海工程,2008,37(1):129-131.
[2]张 芊,赵 柯.船舶操纵模拟训练系统中的随动舵设计[J].机电设备,2012,3(29):64-66.
[3]童长飞.C8051F系列单片机开发与C语言编程[M].北京:北京航天航空大学出版社,2005.
[4]张培仁,孙 力.基于C语言C8051F系列微控制器原理与应用[M].北京:清华大学出版社,2007.
Method for Measuring Rudder of Ship Handling Simulator Based on C8051F020
ZHANG Qian,HU Meng
(Zhenjiang Watercraft College,Zhenjiang 212003,China)
This paper introduces the method for measuring the rudder of ship handling simulator based on C8051F020.The realization of the method,hardware structure of technology and software design are given.The design is low-cost,simple and reliable,which can be extended to any angle detection system.
rudder; C8051F020; programmable counter array (PCA)
U663
A
张芊(1979-),女,硕士,副教授,研究方向为电气自动化、计算机仿真与应用。