控制/MCU
系留飞艇地面监测系统具有全天候、大视角、大覆盖率、高机动性等特点,还能针对某一区域专门放大监测,将信息及时反馈地面站,所以在监测方面应用广泛,但造价昂贵。此项目设计了价格低廉的系留飞艇地面监测系统,系统包括地面站和艇载模块。艇载模块需要完成的任务包括:通过无线通信模块与地面站进行通信,根据制定的通信协议解析接收的命令,做相应的操作;为确保数据通信的正确性,将接收数据进行循环冗余校验,数据错误则放弃,正确则进行处理并由单片机PCA定时器生成PWM信号来控制云台水平和垂直转动的舵机;与数字罗盘进行通信,获取系留飞艇姿态信息发给地面站;单片机定时器0和定时器1对舵机带动旋转编码器转动时产生的脉冲进行计数并将其反馈给地面站;单片机外部中断0和1监测零位开关,对计数值进行清零操作。根据艇载单片机发回的飞艇姿态和转角信息,地面站分析并改变控制数据发送给飞艇模块,以控制云台按照意愿进行地面监测。
飞艇艇载模块所要实现的功能相对比较简单,其控制单元仅需要2个串口,3个定时器,2个外部中断和少数I/O口即可。STC12C5A60S2单片机有4个16 bit定时器,2个全双工异步串行口,2个外部中断入口,具有先进的指令集结构,符合系统设计需要,故选择此款单片机作为艇载模块的控制单元,实现系统功能。
艇载模块根据地面站指令生成相应的PWM信号使舵机转动,与此同时,单片机定时器对旋转编码器脉冲进行计数,并把计数值下传,地面站根据收到的脉冲数计算云台当前角度,然后发送继续转或者停止转动命令指令。为了处理方便,在云台上安装了光电开关,以确定绝对零度位置。因此,艇载模块主要包括STC12C5A60S2单片机及其外围电路,如图1所示。
STR-30无线数传模块提供标准RS-232、RS-485和UART 3种接口方式,可与计算机、RS-485设备、单片机或其他UART器件直接连接使用。无线模块提供1个9针的连接器(JP1)、一个天线接口(ANT)和一组调线短路器(JP2)。短路器(JP2)负责通信信道、串口2类型和通信数据位的选择。JP2的ABC三位跳线提供8种选择,用户可以通过ABC确定使用的0~7号信道。在一个通信小网中,只要ABC的跳线方式相同,就可相互通信。它提供两个串口,COM1固定为TLL电平的UART串行口,COM2可通过JP2的D位来选择接口方式为RS-485或RS-232。JP2的E位用来选择数据是否带有校验位。本系统采用COM1直接与单片机串口0连接与地面站通信,采用波特率为9 600 b/s。
艇载单片机通过无线传输模块与地面站通信,整个协议都由地面站发起,地面站发送,艇载机应答。地面站到飞艇的数据链路称为上行链路,飞艇到地面站的数据链路称为下行链路。上下行链路均采用表1所示的数据帧格式。
对于舵机命令,除帧头、帧尾外,数据都用字符码传输。计算方法为:待传数据/128,传送商和余数,其CRC用字符表示,占用3 B。下行数据包括罗盘数据、电压A/D数据、旋转编码器脉冲计数值,除罗盘数据外,其余量数据也用字符码传输,计算方法同上。
飞艇应答时,若正常,则有数据就发数据,无需应答;若无数据,则发正常应答命令。地面站和飞艇,若第1个接收到的字节为非AAH,接收端都不响应,且从接收到第1个字节开始,启动接收超时定时器,若在规定时间未收完数据,则自动重新进入待机状态,清除已接收到的数据。发送端也一样,在发送完尾字节CCH后,都要启动超时定时器,若在规定时间未收到应答,则延时一规定时间,重新发送。
本系统采用增量脉冲双脉冲输出旋转编码器,其供电电压为5 V,主要技术参数为1 000线/360 ℃(即每转有1 000个脉冲),其两路输出为两组相位差90 ℃的脉冲,这样通过这两组脉冲就可以判断旋转方向。其两相输出脉冲见图2。应用电路见图3。
系统中需要两个旋转编码器对舵机定位,若每个旋转编码器用两个计数器分别对其正转脉冲和反转脉冲进行计数,则本系统需要四个计数器,而产生PWM信号需要占用1个定时器,系统资源不够用,所以本文将旋转编码器的两相输入A作为D触发器输入,B作为时钟脉冲CP,若正转,则每个B的上升沿A总为高电平,输出为高电平,反之反转其输出总为低电平。这样就可以根据D触发器输出判断旋转方向,而将A与B经过与门得到正反转计数脉冲,用定时器对这些脉冲计数即可计算出当前角度。程序中通过判断旋转方向将计数值分别累加到正转计数变量或者反转计数值变量。
数字罗盘HMR3300体积小、功耗低、精度高,能实时准确地输出被测物体的航向、俯仰、横滚三个方向上的状态数据。单片机通过串口2接收数字罗盘发来的飞艇姿态信息,以便根据飞艇的方向控制舵机进行地面监测,其通信波特率为9 600 b/s。
光电开关是利用被检测物对光束的遮挡或反射,有同步回路选通电路,从而检测物体的有无。利用此性质,在云台上安装了两个光电开关及遮挡物,以实现标定其上两个舵机转动的绝对零度位置。其应用原理图见图4。光电开关中无遮挡物时,输出为高电平,否则为低电平。舵机转动时,每次经过绝对零度位置时,固定的铁片遮挡光电开关,从而使输出发生从高到低的变化,下降沿触发外部中断,清正反转计数变量。
本系统主要功能是,艇载控制模块能够在地面站的控制下,生成PWM信号控制云台上水平和垂直舵机,使其按照设定角度转动,以实现系留飞艇对地面的监测。程序中串口0中断接收地面站发来的数据,由PCA定时器生成PWM信号,定时器0和1分别用来对垂直和水平的旋转编码器脉冲计数,外部中断0和1分别接水平和垂直安装的光电开关输出,以标定绝对零度位置。
主程序中主要完成了系统各个部分的初始化,读定时器0和定时器1中计数值,读电压A/D数据等任务。程序中将中断分为4个等级,生成PWM信号控制舵机转动的PCA定时器中断优先级最高,为了保证罗盘数据的完整性,用于接收其数据的串口1中断优先级次之,串口0中断低于串口1中断,外部中断和定时器中断优先级最低。程序中设有4个返回数据标志位,aad_flag,ad_flag,pose_flag,shuju_flag,前三个分别与定时器计数值及A/D数据和数字罗盘返回姿态数据对应,当有对应数据时将标志位置1,有任一返回数据时将shuju_flag置1。程序流程图见图5。
控制多舵机或电机的工作,并且使其工作周期均为20 ms时,要求硬件产生的多路PWM波的周期也相同[1]。控制舵机的PWM信号的正脉冲宽度为0.5 ms~2.5 ms,控制电机的PWM信号的正脉冲为1 ms~2 ms。程序中实现了生成可变路数且最多为8路PWM信号,具体路数视具体情况由地面站决定。利用STC系列单片机的PCA定时器对系统时钟脉冲计数,每路信号由两次中断实现,先实现正脉冲定时中断,然后负脉冲中断,两次中断总定时为2.5 ms,即1路PWM信号占用2.5 ms,8路信号占20 ms,而每一路信号除了定时的正脉冲时间为高电平,剩余17.5 ms~19.5 ms内均为低电平,这样保证了每路信号的周期均为20 ms,且可以在1个周期内顺次启动各路PWM波的上升沿,生成PWM信号,提高了效率。每次中断后有一变量自加,控制下次中断进入的定时入口,在每次循环的第16次中断将此变量清零,这样就可以实现8路PWM控制信号的输出。为了确保20 ms内定时数据不随地面站发来数据影响而改变,程序中采用了双缓冲的做法,在第16次中断时将新数据更新到PCA定时初值缓存中。流程图见图6。
单片机串口0和地面站通信,以获得生成PWM信号的数据。程序中采用中断接收和中断发送,并在中断程序中对接收到的命令进行了解析,对于数据命令,对舵机数据进行了循环冗余校验,将正确的数据作为形参调用计算定时器初值的函数,函数值存放在定义好的数组当中,在PCA第16次中断时,将此数组中数据更新到PCA定时初值缓存中。
串口1中断用于接收来自数字罗盘的飞艇姿态信息,每接收完一帧数据并根据标志位s_mark的状态决定是否将此刻数据更新到发送缓存中,以防止新数据冲去原数据,并置1pose_flag和shuju_flag标志位。
艇载模块有数据返回地面站时,发送命令‘M’,格式如图7所示。
数据辨别位占1字节,用此字节后三位表示是否有姿态、角度、A/D数据,有则置1该位,无则清零。用其前两位分别表示旋转编码器正转脉冲数与反转脉冲数之差是否小于零,若小于零,则置1对应位,否则清零。此位表征了舵机当前位置处于绝对零点位置的左边还是右边,若为1,则在零点左边。数据区排放次序依次是姿态、角度、A/D数据,若无前者数据则顺次前移。s_mark和aa_flag标志是为了保证放到发送缓冲区的姿态数据和角度数据的完整性。
定时器0与1分别用来对两个旋转编码器的脉冲进行计数,当计数溢出时,需要对TH和TL重新赋初值0,而用于保存上一时刻计数值和当前计数值的缓存变量需要清零,以保证角度精度。
外部中断0与1用于标定云台上舵机转动的绝对零点位置。中断中将正反转计数变量清零,以实现在绝对零点位置输出角度为零,角度增量也为零。
经实际系留飞艇DZ-1验证,本模块依据制定的通信协议,在地面站的控制下,能够控制舵机转动到设定角度对地面进行监测,并将飞艇姿态信息、A/D数据和角度信息适时发送给地面站,以更好地控制其完成地面监测任务。
全部0条评论
快来发表一下你的评论吧 !