某型电磁计程仪模拟器硬件设计
2018-10-23周爱军马海瑞
姜 旭 周爱军 马海瑞
(海军大连舰艇学院航海系 大连 116011)
1 引言
电磁计程仪是舰船主要导航仪器之一,也是各种形式的组合导航系统不可缺少的组成部分[1]。在航海相关课程教学过程中,由于计程仪本身模块多,操作繁琐,且在实验室环境下缺少水体环境,整个教学过程存在一定不足,效率不高。针对此问题,设计开发电磁计程仪模拟器,该模拟器可以全功能模拟实装电磁计程仪,同时突出教学需求,增加某些教学专用功能模块,模拟器还可以作为更大型的综合模拟训练系统的单元模块。本文主要对该模拟器系统的硬件部分进行规划设计,使整个硬件电路满足性能要求,从而为整个系统的开发打下基础。
2 硬件设计任务和模块划分
2.1 硬件设计任务
模拟器系统是以单片机为核心进行设计的,而硬件设计是单片机产品开发的基础,如果在这个环节出现错误或缺陷,对整个工作将产生不良影响[2]。从技术角度出发,硬件设计可分为以下几个方面:
1)最小应用系统设计:微处理器和存储器的选择、总线驱动、复位电路的设计等。在本系统设计中,采用内部含有20KBFlashROM的STC89C55型单片机,存储器采用AT24C32型号的4KB串行电可擦除的可编程存储器,用以存储各类设置参数和运行数据,并对它们进行掉电保护。处理器和存储器采用串行I2C总线协议进行数据传输。
2)I/O通道设计:接口电路,模拟量I/O通道中A/D转换芯片的选择等。为节省单片机I/O口资源,系统模拟量输入环节采用带串行I2C总线接口的PCF8591转换芯片,LED数码管显示驱动采用MAX7219显示驱动器。
3)人机界面设计:键盘、显示(液晶或数码管)及接口设计等。本系统的键盘采用4×4矩阵键盘和一个独立键盘,满足实装按键需求。并增设键盘编码器芯片74C922以节省单片机I/O口资源并提高效率。显示模块是由LC1602液晶屏和7SEGMPX6-CC六位七段数码管共同组成。
4)资源分配:资源分配是对RAM、定时器/计数器、中断源、异步串行口、并行I/O口等内部资源及扩展资源分析其用途、工作方式、起止时间和限定条件,并分配端口地址。合理地进行资源分配,一方面减少资源浪费,另一方面若发现资源不足,能及时修正原理设计中的潜在问题。
5)可靠性设计:为使系统能够正常可靠地运行,在串口电路设计中加入末端电阻,对于大功率器件要考虑系统的驱动能力,相应增设驱动模块。
2.2 硬件模块划分
整个电磁计程仪模拟器系统的硬件模块划分如图1所示,核心是STC89C55型单片机,扩展了众多外围模块。主要包括存储器模块、RS4-22A串口通信模块、A/D输入模块、键盘模块、显示与模拟量输出模块。
单片机选型方面考虑使用STC89C55单片机,相较于其他型号单片机,它的应用广泛,内部具有20KB的程序存储器,且具有ISP在线可编程功能,程序可以直接下载到单片机中,维护升级方便,可以很好地满足使用需要[3]。串行通信模块采用RS-422A协议,利用一块MAX487芯片完成电平转换。
图1 模拟器系统硬件框图
3 系统各模块硬件设计
3.1 单片机系统模块
单片机系统模块主要包括一块STC89C52型单片机及其最简系统、AT24C32型号的E2PROM构成[4]。最简系统包括单片机、复位电路和晶振电路。其中,晶振频率设置为11.0592MHZ。
存储模块由一片AT24C32型号的具有I2C总线接口的E2PROM构成,可编程地址选择位A0,A1,A2和写保护输入端WP接地,串行数据输入/输出端SDA及串行时钟输入端SCL分别接单片机P2.0及P2.1口,用作控制数据读写。
图2 单片机系统模块
3.2 人机交互设计
人机交互部分主要包括显示模块和键盘电路模块。如图3所示,显示模块主要包括两块7SEG-MPX6-CC六位七段数码管和一块LC1602液晶屏,两块数码管进行航速航程显示以及实装电磁计程仪各项参数显示,液晶面向教学人员,完成对各项教学功能的设置显示。对数码管的驱动选择上,常规的74HC573锁存器进行驱动会占用单片机较多I/O口,且动态扫描程序占用单片机资源。若用串入并出器件74HC595驱动,只需要三个接口,但动态扫描的软件工作量依然很大。为克服这两个缺陷,不使显示模块占用单片机太多资源,考虑使用max7219可编程共阴极LED数码管驱动芯片,它集BCD译码器、多路扫描器、段驱动和位驱动电路于一体。其外围接口电路简单,仅需三根I/O口线便可驱动多块LED进行动态显示,在简化硬件电路同时大大减少软件的工作量。本系统内,使用两片MAX7219进行级联,对两块六位数码管进行驱动。
LC1602液晶屏显示单元方面,数据输入端接单片机P0口,数据/命令选择端RS、读写选择端R/W、使能信号端E分别接单片机P3.2到P3.4口[5]。
键盘输入模块主要包括4×4矩阵键盘和一个控制模拟电位器输入的独立键盘,共有17个按键,满足实际计程仪的按键需求。为节省单片机I/O口资源,并降低单片机负担,提升工作效率,在设计矩阵键盘时使用键盘编码器芯片74C922[6]。该芯片能够独立地进行键盘检测和消抖,扫描程序也更为简捷,同时,独立键盘也添加了电容消抖设计[7]。74C922的键盘接口X1—X4,Y1—Y4分别与4×4键盘的列与行相连,输出DOUTA—DOUTD与单片机P1.0—P1.3口相连,信号端DA接单片机P3.5口。设计情况如图4所示。
3.3 接口电路设计
本系统的接口电路主要包括AD输入,转角信号输出和串行口输出。AD输入环节,为节省单片机I/O口资源,使用串行口PCF8591转换芯片,它是一个单片集成、单独供电、低功耗、8-bitCMOS数据获取器件,具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,从而和系统内其他I2C器件进行区分[8~10]。
图3 数码管及液晶显示模块
图4 键盘输入模块
模拟量输出环节,系统需将航速数字量通过自整角机转换成转角形式的模拟量后对外发送。自整角机是由步进电机来带动旋转的。系统内部进电机工作方式为四相八拍,对其转值要求为55Kn/r,即步进电机每转动一圈代表航速为55节。由于步进电机功率较大,不能直接由单片机进行驱动控制,需由功率驱动电路来扩展输出电流,以满足控制需求[11]。本设计是采用ULN2003高压大电流达林顿晶体管阵列对步进电机进行驱动的,其具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点[12]。使用单片机驱动ULN2003时,需要注意将I/O口利用2K上拉电阻上拉到电源,脉冲输入由单片机P2.4-P2.7口控制。整个模拟量输入输出模块电路图如图5所示。
串口输出方面,采用RS-422A通讯接口,相较于RS-232C,它的传送距离更远,速率更高。系统使用MAX487转换芯片完成TTL电平到RS-422A电平的转换,驱动器输出使能端DE接单片机P1.4口,驱动器输出端、接收器输出端分别接单片机串行输出(TXD)输入(RXD)口。为增强抗干扰能力,在MAX487信号输出端增加终端电阻,吸收网络上的反射波,有效地增强信号强度[13]。电路图如图6所示。
图5 模拟量输入输出模块
图6 串口通信模块
4 结语
本文主要对某型电磁计程仪模拟器硬件部分进行设计,设计以单片机为主体,根据模拟器的各项功能对硬件模块进行选择,在充分考虑性能需求和系统适配性、可靠性、经济性的基础上完成了对单片机系统、接口电路、显示模块、键盘模块的硬件设计。为模拟器各项功能的实现和各类信号的输出提供了硬件支撑。