无人机编程篇
文章平均质量分 53
使用STM32F429,基于HAL库,从移植操作系统开始,一步步添加文件,编程实现整个无人机系统。
大强强小强强
这个作者很懒,什么都没留下…
展开
-
IIC读取IMU、磁力计与气压计速率测试(IIC实在太慢了!)
做飞控时,IMU、磁力计与气压计常用,买了个10DOF模块,MPU6050+HMC5883+MS5611,但是只支持IIC通信。一直用没发现什么问题,但是不测不知道,一测吓一跳。IIC太慢了,占用了太多的宝贵的时间。一、IIC耗时测试说明:IIC,基本上是使用正点原子的例程,除了结构微调,并无大改计时器,采用TIM6发生1us计时器气压计程序中间有多处延时,不参与测评使用了FreeRTOS操作系统// 读取传感器数据任务t_imu1 = GetTimeApi(); // 开原创 2021-10-09 16:19:14 · 3579 阅读 · 0 评论 -
UAV021(三):九轴传感器(加速度计、陀螺仪和磁力计)校准方法
目录序一、 加速度计简单校准二、陀螺仪简单校准三、磁力计简单校准序UAV021(二)中使用STM32F4通过IIC协议实现了读取加速度、角速度以及Yaw角。然而,原始数据是不能用的,校准是必须的。原因很简单,将MPU6050水平朝上静止放置和水平朝下静止放置,读取的加速度和角速度如下: 朝上静止 朝下静止可见,加速度计有时大于一个g有时小于一个g,陀螺仪总有二点几度的漂移。这样为后面应用埋下隐患。所以,必须校准!本文将讲述加速度计、陀螺仪以及磁力计数据简单校准方法。当然也有复杂校准方原创 2020-06-26 10:09:39 · 6656 阅读 · 2 评论 -
UAV021(五):STM32F429实现TIM6计时、TIM3输出4路PWM波、TIM5输入捕获
目录序一、STM32F4定时器介绍二、定时器配置2.1 TIM6实现计数2.2 TIM3输出4路PWM波2.3 TIM5输入捕获序现在需要实现计时,输出PWM和输入捕获。其中计时实现0.1ms加1,用于陀螺仪积分计时;输出4路PWM波频率为400Hz,用于驱动无人机电机;输入捕获频率1MHz,用于测量输出的 PWM周期、占空比等,看看PWM波是否正常。这些功能都需要定时器,STM32F4有14个定时器TIM1~TIM14,但是不同定时器功能并不尽相同,该怎样选择(并且实现)呢?此处主讲定时器,也原创 2020-06-27 20:30:10 · 3978 阅读 · 0 评论 -
UAV021(六):系统架构优化、SBUS协议、遥控器控制电机转动
目录序一、系统架构优化1.1 从全局变量到API函数1.2 函数传值二、SBUS协议读取及解析1.1 协议格式1.2 协议解析序系统架构优化部分主要实现设计API代替直接引用全局变量。Sbus协议是遥控器常用协议,此文将实现读取并解析协议内容。作为测试,使用遥控器油门控制PWM,调节电机转速。一、系统架构优化1.1 从全局变量到API函数之前实现的程序里定义了几个全局变量,例如全局的时间计时 tim,姿态角结构体 atti 等。全局变量会增强文件之间的关联性,定义、声明、赋值、应用可能原创 2020-07-03 16:24:03 · 2581 阅读 · 0 评论 -
UAV021(六--更新):STM32F4读取MPU9250数据、USART2通过DMA获取SBUS协议数据
目录序一、读取MPU9250数据1.1 注意事项序之所以有这篇更新,只因时运不济,命途多舛。第一件事是想把之前10DOF模块(MPU6050+HMC5883+MS5611)的弯排针取下来换个直的,废了九牛二虎之力取下来换上,模块却挂了,只能用旁边的MPU9250(MPU6550+AK8963)代替。注意,磁力计是AK,不是M416(^-^),扯远了。所以,写了个mpu9250的驱动。第二件是UAV021(六)里面提到的,解析出的遥控器数据有问题。其他的不是很确定,但是油门通道的数据会跳变,油门逐渐原创 2020-07-06 11:16:02 · 3012 阅读 · 0 评论