飞控

 
       无人机飞控是一个集单片机技术、传感器技术、GPS导航技术、通讯技术、飞行 控制技术、任务控制技术、编程技术等多技术并依托于硬件的高科技产物,因此要能设计好一个飞控,缺少上面所述的任何一项技术都是不可能的,越多的飞行经历和经验能为设计初期提供很多避免出现问题的 方法,使得试飞进展能够更顺利,要知道飞控的调试主要就是试飞,不比别的自控产品,试飞是高风险的,一旦坠机,硬件损坏,连事故原因都很难分析,就更难解决问题了。这也是成熟的、可靠的飞控很少的原因。
硬件方面:
很多朋友跟我一谈起做飞控需要硬件就是ARM、DSP、FPGA,就我多年来设计老一代飞控以及UP10和UP20飞控感受,其实硬件并不需要多豪华多高级,能满足功能需要,编程使用方便,功能接口全为首选,例如:UP10仅仅使用AVR单片机就完成了所有的功能,内置eeprom除了能完成各种设置以外,存航点数据也戳戳有余。内部的ram也能满足使用需求(不要考虑使用 操作系统)。这样单片化能解决很多硬件间通讯、接口问题,增强了可靠性和易编程能力,也能使得飞控做的很小巧。
功能齐全的Timer能够通过程序实现获取 接收机信号和输出 舵机信号的能力。大部分自制飞控的朋友都采用将自控舵机信号和接收机信号通过多路2选一开关芯片实现遥自控的切换,但是UP飞控直接获取各路接收机信号,其目的是可以将来自遥控器的信号转换为命令值,也就是使用遥控器实现指令控制,即RPV控制模式。
另外还有多余的Timer可以用作计数器,比如获取发动机的转速信息。总共的计时器很有限,必须合理分配和使用它们,有的还同时发挥多个作用。
单片机通常都自带AD,但基本上最多到10位,并且顶多8~16通道,很多管腿的复用功能,使得你顾此失彼,无法直接用来获取传感器的信号,所以仅用空余的AD通道采集飞控和舵机的电池电池电压是很合适的。
飞控的传感器一般采用:
1、AD公司的MEMS角速率传感器ADXRS150或者ADXRS300,价格一样,量程分别为150和300度/秒,目前国际上流行的小型飞控的首选陀螺,其精度能满足小型无人机的飞行控制。数量上需要3个,分别对应3轴
2、AD公司的MEMS加速度传感器ADXL202或者ADXL210,价格也一样,量程分别为+-2g和+-10g,也是小型飞控的首选。数量需要2个,每个2轴,总共4轴,但是有一轴是重复的
3、气压高度传感器和气压空速传感器。两个传感器虽然都是气压传感器,但是量程是有所区别的,作为高度传感器的量程通常选用:15kpa~115Kpa。空速传感器是差压传感器,其量程通常选用0~4Kpa,从而获得比较高的分辨率。
4、如果要控制 直升机、旋翼机等能 悬停的 飞机,还需要磁传感器以获取悬停或者低速运动时的机头指向,固定翼飞机有一定飞行速度,这个传感器不是必须的。
5、如果要做自动降落功能,还必须有超声波传感器等测量对地高度的传感器。因为气压高度传感器跟气压场有关系,所以经过一段时间气压场变化后,绝对高度将会不再准确,因此飞机在自动滑跑降落时必须在离地0.5米至1米的平飘需要测量相对地面高度的传感器来完成。
作为固定翼飞机,不需要自动降落的情况下,只需要前3种传感器,共8路电压数据需要采集。为了获得高精度,可以采用8路16位的AD芯片来采数据,将AD和传感器一起做成一个组件,便于以后升级处理时,只需要更换底板(这就是UP10到UP20升级的思路)。根据AD的输出接口选择和CPU连接,可以是UART、SPI、I2C。
GPS通常都是串口通讯的,因此可以将它和CPU的一个串口连接,而CPU的另外一个串口通常与数传电台或者直接与地面站计算机连接,以便飞控和地面站双向通讯,传递设置参数、航线数据等给飞控,而飞控将飞行数据向地面站传输。
CPU再富余的IO口可以用作一些任务操作,比如停发动机,照相控制,任务设备电平监控,任务设备控制等。
如果嫌CPU的eeprom存取速度慢,存储量小,可以外扩flash、eeprom等存储器,也可以通过SPI、I2c等接口。这些外部存储器可以用来存储飞行数据,也可以存储一些诸如照片POS数据类型的任务数据。
在PCB的设计过程中,一定要把高频部分、低频部分分开,尽量减少电磁 干扰等情况的出现,采用多层板也对解决电磁兼容性问题带来帮助。
软件方面:
软件包括飞控内部的软件和地面站的软件。
飞控内部软件是飞控的灵魂,如果只有硬件只是电子垃圾。
一谈到软件很多朋友就是讨论使用ucos、linux等等的操作系统。其实作为飞行控制这种实时性要求很强的控制系统,不一定要采用操作系统。使用操作系统对硬件和时序的控制能力降低,CPU的有效使用率降低,对内存的需求增加。在UP10和UP20中都没有采用操作系统。
UP10完成了传感器数据采集,GPS信息获取,接收机信号获取,舵机控制,与地面站通讯,飞行控制率计算,导航控制,任务控制等所有功能。其中舵机控制和接收机信号获取拥有最高的优先级,与地面站的通讯优先级最低,合理处理CPU的优先级问题能够避免CPU控制时序的混乱和相互的干涉问题。
对于飞行控制方法问题上取决于获取的数据。如果只是简单获得了飞机的角速率和加速度计信号等原始数据,控制方法只能采取某些飞控采取的间接姿态控制方法,也就是说在俯仰控制上采用控制空速的方法,角速率只用于阻尼增稳作用;在方向控制上采用转弯角速率控制方式。控制外环是高度和GPS导航航向。这种控制方法得到的飞机控制精度不算很好,特别是高度容易出现波动。但是控制了飞机的稳定的最核心,所以飞行还算是安全的。
如果能够采取一些计算方法获取飞机的姿态角,pitch,roll,heading,那么控制方法就变为姿态控制了。采用姿态控制时,内环变成了副翼控制飞机的转弯坡度和升降舵控制飞机的俯仰角度(加一定的限制)。这种控制是飞机最正确的控制方式,因此其控制精度是相当高的,稳定性也增强很多。但是这种计算方法很复杂,都是浮点数矩阵运算,对CPU的运算能力要求很高,所以需要引入ARM、DSP等32位浮点运算能力很强的处理器。UP20中增加了ARM专门用于飞行姿态计算,并将计算出来的姿态数据交给UP10,而UP10原来的功能丝毫不受影响。如果全新设计飞控则UP10前面所进行的所有飞行试验就白费了。
PID控制内环通常采用20Hz以上就足够了,外环通常4~6Hz就足够了,再快已经没有多大的意义。对于PID参数最好能够通过与地面站的无线通讯实现,这对于飞行时的PID参数调整会带来极大的方便,尽量减少飞机的起落次数。
在编制与地面站的通讯程序部分,一定要考虑到无线通讯的误码率问题,所有上下行数据必须都要加以校验,特别是飞行航点数据这些重要数据要反复校验,一旦错误将会将飞机导航到不可知的方向。
导航逻辑一定要严谨,对于可能出现的一些问题要提前考虑到。
对于可能出现的GPS丢星,发动机停车,飞机机体解体,遥控失灵等问题要考虑补救措施。
舵机的反舵设置,不同布局的混控设置等最好在飞控中都能实现。
对于地面站软件,要考虑到方便、实用、可靠,美观是其次的。其实要设计一个好的地面站也是需要经验来支持的。
这个地面站软件应该考虑到如下功能:
· 地面站软件集成化
· 可以支持多种地图:电子地图,扫描配准地图,自定义地图
· 飞行仪表(空速,地平仪,高度,转速,罗盘,升降率)
· 传感器数据监测
· 飞行中实时PID调节:地面站实时监控飞行数据,并动态显示数据曲线,实时修改PID增益参数
· 飞行中可以设定目标航点
· 可以实时操作任务舵机位置,操作和显示任务IO口
· 可使用地面站远程控制飞机飞行
· 图形化方便灵活的航点编辑方式(包括制式航线):可以直接在地图上使用鼠标增加、删除航点,可以直接拖动编辑所选择的批量航点,可以手动修改航点数据。支持单点和所有航点上传和下载。
· 调整舵机旋转方向和中立值
· 记录遥测数据
· 显示飞机的飞行轨迹和姿态
· 危险告警(电压、温度、GPS状况、发动机转速、高度、爬升率等)
· 回放飞行数据
数传电台的选择不要一味的追求发射功率,可以通过好的增益天线来获得远距离的传输,飞机上数传的安装要避免对舵机、遥控接收机、飞控内部的传感器造成干扰。
试飞前的准备工作要做充分,遥自控切换要切实可靠(调试初期出现任何问题要能及时切换到遥控状态),准备好试飞计划,做好飞行前检查,做好飞行后总结,由简到难,逐步实现自动控制。

你可能感兴趣的:(ARM)