基于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°。
|







