5 LARIX软件

原文链接

LARIX 代码部分

四旋翼的整个代码是在DAVE写的,DAVE是一个基于Eclipse的IDE,它包含一个标准C编码环境和一些预定义的文件。

LARIX板是四旋翼的主要部分。它收集输入数据,如从RC收到指定的姿态数据以及从IMU收到的实际姿态数据,然后通过数字控制器处理这些数据,再输出BLDC电机需要的PWM信号给PINUS板子。

5 LARIX软件

AngleRateController(…)

这个函数代表yaw的控制器。

CreatePulseWidth(…)

这个函数计算4个电机的PWM信号,基于3个控制器的输出,参考控制器输出。

RC-接收器

RC接收器放置在四旋翼机臂下,把RC接收到的数据通过串口传给飞控板。串口配置如下:
* 波特率=115200
* 8bits数据位
* 1bit停止位
* 1bit奇偶校验位

接收到的数据帧包含16个字节,格式如下:

5 LARIX软件

5 LARIX软件

关于这部分代码,在RCReceive.c 和 RCReceive.h中。

mergeBytes(…)

这个函数把2字节合成一个int,用来把数据帧存到一个变量里面。

map(…)

这个函数把x从[in_minin_max]范围映射到[out_minout_max]。

RC_RECEIVE_ISR()

这个函数在FIFO缓冲区溢出时调用。首先检查RC数据帧里面的常数字节,然后从里面抽取需要的数据字节,调用上面两个函数,合并、映射,写入到全局变量中。

BT_RECEIVE_ISR()

这个函数和上面那个很像,但是数据是从蓝牙模块而不是RC。根据flightmode的值,使用Android应用来控制的这个中断函数或者使用RC来控制的上面那个中断函数,会被调用。

WatchRC(…)

这个函数是看门狗定时器函数,检查RC数据是否过期了。所以RCCount的值会被周期性地检查。如果自上一次调用之后,这个值一直没有变化,RCTimeOut就置1了。

WatchRC_Init()

这个函数通过创建一个定时器来激活看门狗定时器,每100ms会调用一次WatchRC()

GetRCData(…)

这个函数在主函数中调用,用来访问RC的值。信号通过SCALE_POWER, SCALE_ROLL, SCALE_PITCH, SCALE_YAW四个常数进行缩放,用来定义遥控杆和指定角度之间的相对关系。

Sensor MPU-9150

MPU-9150通过I2C协议传输数据。
它自带一个数字动作处理器,用来处理原始测量数据,并把姿态角,以四元数的形式,存于缓冲区。

为了访问这个单元,需要在初始化芯片的时候写入某些寄存器。

来源:DuinoDu

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年6月13日
下一篇 2016年6月13日

相关推荐