基于FPGA的无人机控制器设计与实现
无人机的飞行控制和机载电子设备的控制指令主要通过地面控制计算机中的软件或者无人机控制器产生,这两种相互独立的控制方式互为备份。而无人机控制器主要由硬件电路和嵌入式软件设计实现,不依赖于计算机,因此具有可靠性高、稳定性好等优点,是实现无人机远程遥控的主要方式之一。 采用基于FPGA设计的无人机控制器,充分利用了FPGA并行数据处理能力和同步设计优势,将键盘扫描、指令编码与显示、指令异步串行发送等功能模块都集成在FPGA内部,外围电路仅包含AD采样、电平转换和驱动芯片等简单电路,避免了MCU等单指令周期芯片的时序缺点,系统的硬件结构更为简单,扩展性更强,遥控指令的触发到输出的指令数据群延时小于80 ms,能够满足各种类型无人机的实时远程控制要求。 1 系统硬件设计方案 无人机控制器主要由控制键盘、数码显示板和控制器数据处理板组成。控制键盘由8x8开关矩阵键盘和航向控制器构成,主要实现无人机控制器键盘扫描代码和航向模拟量的产生。数码显示板由6个16进制数码管组成,主要实现控制指令代码和航向数据的同步显示。作为无人机遥控控制器的核心部件,控制器数据处理板采用Altera公司的低成本Cyclone4系列FPGA芯片EP4CE10作为指令和数据处理的核心芯片;为降低FPGA硬件资源消耗,AD芯片选用MAXIM公司的串行12Bits AD采样芯片MAX11105,理论航向传感器控制精度可达0.09°;UART电平转换芯片选用MAXIM公司的MAX3387芯片设计实现,具有良好的可扩展性。控制器信号处理板主要实现无人机控制指令的键盘扫描与AD采样、指令编码与显示和遥控指令异步串行发送等功能。系统硬件结构框图如图1所示。
如图1所示,控制器数据处理板上的FPGA分别对控制键盘上的8x8矩阵键盘和航向控制器模拟信号进行行列扫描与AD采样,以获取键盘扫描码和航向模拟量数据,并对采集到的指令和数据进行编码转换后得到指令控制代码和航向控制数据。FPGA将编码转换后的数据同时分成两路,一路驱动数码显示板实时显示,另一路进行遥控组帧后按照标准异步串行通信协议(UART)发送至MAX3387进行RS232电平转换,最后将含有控制指令的异步串行遥控数据通过测控设备发送至无人机,实现对无人机的远程控制功能。 2 系统软件设计方案 无人机控制器的软件都集成在FPGA内部,采用VHDL语言编程,并在Altera公司的QuartusII软件环境下进行编译和在线仿真。控制器主要包括键盘扫描、指令编码与显示、指令异步串行发送等功能模块,系统的信号流程如图2所示。系统加电后,FPGA每间隔40 ms对控制键盘和航向控制器进行一次行列扫描和AD数据采集,当检测到有控制按键被触发后,启动按键去抖识别程序,将有效的控制按键的键盘扫描码和AD采集数据转换成控制指令代码和航向控制数据,并将指令和数据分成相同两路,一路送入LED驱动模块产生16进制数码管显示驱动信号,另一路送入指令异步串行发送模块进行遥控组帧和控制数据加载,最后将包含指令数据的遥控帧数据按照异步串行数据通信协议(UART)发出。
2.1 键盘扫描和AD采集模块 根据控制指令的实时性要求,系统设计每隔40 ms分别对矩阵键盘和航向控制器进行一次行列扫描和AD采样,当键盘上的按键被触发时,启动按键去抖识别程序,输出满足响应时间要求的按键16 bits键盘扫描码。与此同时,将AD采集到的航向控制器模拟量串行数据进行串并转换后输出12 bits并行航向控制数据。该模块的SignalTapII在线仿真结果如图3所示。KB_RL和KB_Y分别为行扫描线和列扫描线,KB_SEN为键盘扫描使能信号,KEY_SCode为按键触发后输出的键盘扫描代码,SAD_CS为芯片的采集使能信号,SAD_SDT为芯片串行数据输入,SAD_PDT为串并转换后的航向控制器结果数据。由图3可知,一共有2个控制按键被顺序触发,共输出了2个键盘扫描码:7DFE和7EFE。航向控制器输出数据位2EB,对应航向控制角度值约为66°。
2.2 指令编码与显示模块 指令编码与显示模块将接收到的16 bits键盘扫描码和12 bits航向控制器数据按照数据传输协议进行指令和数据编码,并将编码后控制指令和数据发送至指令发送模块,与此同时,为确保指令代码和航向控制器数据正确传输,模块驱动6个16进制数码显示管实时显示编码后的指令数据和航向控制器数据。指令编码与显示模块的SignalTapII在线仿真结果及数码管显示结果如图4所示。KB_INS为指令有效标志,KB_ EDAT为编码后的指令代码,SAD_EDT为编码后的角度值。LED_LE为数码管数据锁存信号,LED_BL为数码管使能信号,LED_DL为数码管数据输入端,由图4可知,编码后的控制指令代码和航向控制器角度分别为033H和66°,数码管显示结果为033和066。
2.3 指令发送模块 指令发送模块接收到编码后的控制指令和航向控制器数据后,将编码后的指令数据转换为遥控帧数据,并按照异步串行通信协议(UART)将遥控帧数据输出到MAX3387进行电平转换,遥控帧数据串行波特率选取19 200,8位数据位,1位起始位,1位停止位,无奇偶校验位。指令发送模块SignalTapII在线仿真结果及计算机接收到的遥控帧数据结果如图5所示。YK_SEND_EN为数据发送使能信号,Test_Vara为发送的8 bits并行遥控数据,YK_UART_Out为异步串行数据FPGA输出端波形信号。
3 实验应用 无人机控制器安装于某型无人机地面控制站中。地面站加电后,控制器数据处理板开始工作,每间隔40 ms分别对8x8矩阵键盘和无人机航向控制器进行键盘扫描与AD采样,并实时将采集到数据转换成相应的遥控指令代码,一路驱动数码显示管将指令代码实时显示,一路将指令代码转换成RS232异步串行数据通过测控设备发送至无人机,控制器数据处理板实物如图6所示。实际应用结果表明,采用基于FPGA设计的无人机控制器的各项技术指标满足使用要求,控制指令群时延小于80 ms,设备运行稳定可靠。
4 结论 根据无人机的控制特点,文中提出了一种基于FPGA的无人机控制器设计方案,该方法充分利用FPGA并行处理能力,简化了无人机控制器的硬件结构,降低了遥控指令群延时,解决了测控设备的时序匹配问题,并且具有较好的功能可扩展性,该控制器已经在某型无人机系统中得到成功应用。 |