完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、系统组成模块 上位机与遥控器通过串口相连,用于实时显示和监测飞行状态。遥控器系统通过采集遥控控制量,并通过无线模块发送给飞行器,同时在 LCD 上进行相关数据显示。 ##yy ? 1、上位机 (PC) 上位机与遥控器通过,串口, 相连。 2、遥控器系统 采集遥控控制量,并通过无线模块发送给飞行器,同时在LCD上进行相关数据显示。 3、飞行器机体系统 通过采集无线数据和传感器数据, 并通过主控器解算,进而控制4个电机的转速实现飞行姿态的闭环控制。 3.1 接收遥控器无线数据, 并发送飞行数据到遥控器 无线通信模块 Nordic NRF24L01 通信距离: 1750m 数据传输量: 32Byte 速率: 2Mbps 自动应答, 中断机制 。 SPI 接口 , 数据传输 3.2 采集传感器数据并进行姿态解算 (1)陀螺仪 (角速度) 姿态角测量: 提供旋转角速度信息, 用于计算载体的相对角度信息。 输出 : 角速度 角度: vt , 时间上积分。 获得角度。 陀螺仪最终测量结果会随着积分时间的增加, 而不断偏离真实值。 (2)加速度计 (测量载体与重力加速度的角度) 三轴加速度测量 物体的重力加速度 与载体坐标系的关系, 得到载体的倾斜角。 测量载体与重力加速度的绝对夹角, 对陀螺仪计算误差进行融合矫正; (3)磁力计 (测量载体与地磁场的绝对夹角) 对陀螺仪误差矫正 将测量信息,转换为数字信号输出。 体积小、重量轻、 可微型化 进行地磁方向的导航 3.3 依据姿态信息解算各个电机的控制量并发送到电机驱动设备 3.4 协调各个功能部件的逻辑运行 二、硬件设备及作用 1、电源 1、MCU:TPS62162 2、ms5611:ME6219C30M5G 3、HMC5983 MCU采用2M开关频率的TPS62162保证了MCU的电源的稳定性,ICM20602,HMC5983采用3.3VLDO供电,MS5611根据数据手册采用3VLDO稳压芯片进行供电保证芯片数据的低噪声。TJA1050采用5V供电。 2、传感器 2.1 ICM20602 六轴传感器芯片 ICM20602六轴传感器芯片通过数据滤波处理把三轴陀螺仪数据和三轴加速度数据以及HMC5983三轴磁力计数据,MS5611气压计数据引入EKF进行IMU姿态解算。 2.2 磁力计传感器:HMC5983 2.3 气压计传感器:MS5611 2.4 电源稳压芯片:TPS62162 3、存储器 WQ25Q32BV用来存储传感器矫正数据。TF卡用来存储飞机飞行记录数据。 3.1 W25Q32BV 3.2 TF卡 4、遥控器 采用传统的DBUS遥控器反向电路 向飞控发出信号;四轴飞行器的遥控器至少需要 4 个通道,分别用于:油门、旋转、前后飞、左右飞; 1)无线模块接口 - SPI 接口 通信 2)USART 串口通信模块(遥控器 - 上位机通信) PL2302 USART 转 USB接口 全双工异步串行通信。 PL2303 内置 带有全部调制解调器控制信号的USART 3)遥控器主控器 STM32 F103 4)PWM 5) ADC 5、灯光模块 采用3个SOT23-3封装的MOS管进行开关控制,与MCU隔离电源。 6、飞控模块 是飞行器的大脑,保持自身稳定飞行;接收遥控器信号,并将信号传输给电调告诉它如何飞行; 飞行控制系统(Flight control system)简称飞控,可以看作飞行器的大脑。多轴飞行器的飞行、悬停,姿态变化等等都是由多种传感器将飞行器本身的姿态数据传回飞控,再由飞控通过运算和判断下达指令,由执行机构完成动作和飞行姿态调整。 发送各种指令,并且处理各部件传回的数据。类似于人体的大脑,对身体各个部位发送指令,并且接收各部件传回的信息,运算后发出新的指令。 【 APM飞控 】 - I2C 接口 (传感器信号) - GPS接口 - 数据传入接口 3DR 数据传入 - USB数据线接口 USART 串口通信 7、电调 将飞控的控制信号,转变为电流的大小,以控制电机的转速; PWM 信号驱动 无刷直流电机 直流脉冲序列占空比 如何控制飞机转速? 电机工作原理 8、主控板MCU STM32 F411 三、系统软件设计 各模块软件设计 ucOS-III 抢占式 , 多任务, 嵌入式操作系统 可剪裁, 可移植,实时性 可以植入ROM 微处理器MCU c语言 + 汇编(CPU) 大小: 2KB 1) 系统上电 首先对主控制器各寄存器和外设功能进行初始化配置; 然后 2) 系统自检 3)任务创建 4)系统运行
任务优先级从高到低:
任务优先级从高到低:
任务优先级从高到低:
遥控器接收上位机控制指令/采集控制量, 通过无线模块发送给飞行器 ,同时接收飞行器发送的飞行数据发送给上位机。 飞行器接收传感器姿态信息并借壳遥控器的控制信息, 进行控制量解算,并控制电调进行电机速度控制; 传感器采集模块, 采集陀螺仪、 加速度计、磁力计、气压计、 GPS等传感器原始数据, 并进行滤波、姿态解算等操作, 并将处理结果发送到飞行器主控模块。 任务设计 无线通信任务设计 遥控器将数据发送到 飞行器 , 并从飞行器接收飞行数据。 硬件器件NRF24L01 , 与主控芯片STM32 , 通过SPI 接口连接。 首先配置STM32 的SPI 外设功能, 并将其映射到相应的硬件IO 。 无线模块 NRF24L01 之间的通信, 为单工通讯 , 即模块在某一时间自能处于接收, 或者发送的状态, 不能同时进行收发。 需要: 实时性: 分时复用 分时复用 - 在接收到数据后马上转换为发送状态进行发送, 发送完成后 转换为接收状态进行接收。 由于没有同步信号, 收发双方时序不匹配, 导致通讯中断。 NRF24L01 , 提供了 : 发送完成、 接收完成、 发送失败、 三个中断模式 和一个中断接口。 运用 uCOS 超时等待功能, 可以有效解决此问题。 当操作系统任务就续表中 , 最高优先级任务 为 : 无线通信任务时, 无线通信任务即获得执行权。 当任务第一次运行时, 首先将无线模块配置为输出模式; 人后通过SPI 发送32字节数据到无线模块; 由于无线模块发送数据需要一定时间, 因此可以挂起本任务, 并设置超时等待50ms , 任务唤醒条件为无线模块的硬件终端信号IRQ 。 任务被唤醒后 检测唤醒原因是等待时间超时, 还是发送了硬件中断, 弱势等待超时被唤醒, 则将 标记1 进行加一操作, 并判断该值是否达到了阈值1 , 从而判断无线模块NRF24101 是否已损坏, 并在LCD液晶显示相应信息; 若是因硬件中断被唤醒, 则读取无线模块内部寄存器并判断中断原因, 是发送完成中断, 还是达到最大重发次数中断, 达到最大重发次数则将标记2+1, 进而判断是否无线通信连接失败, 发送成功则将无线模块配置为接收模式。 发送过程结束后, 无线模块将在接收状态下等待接收数据, 同时将本任务挂起, 设置等待时间为50ms , 唤醒条件是无线模块接收中断信号。 任务被唤醒后 检测唤醒原因是等待超时, 还是无线信号接收完成硬件中断: 若是等待超时, 则将标记3+1 , 并进行LCD显示, 最后回到初始状态进行下一次循环。 若是接收到中断信号, 则从无线模块寄存器中一次读取32字节接收数据, 然后回到初始状态进行下一次循环。 通过对该任务的工作流程分析可以发现, 任务在挂起状态都是通过无线模块硬件中断, 或者挂起等待超时两种方式唤醒。 在实际编程中, 通常用状态机编程方式进行实现。 经过实际调试, 在系统不发生硬件故障或者通信正常的情况下, 本任务可以实现无线模块NRF24L01 稳定的半双工贴心, 通信频率606HZ 。 通讯中断后可以迅速恢复对四轴飞行器的安全操作很有必要。。 串口通信任务设计 遥控器 + 上位机 PC通信 传感器模块 + 飞行器模块通信 通信任务功能 与通信数据格式 相似。 遥控器与上位机通讯 遥控器发送上位机: 飞行器姿态数据、 传感器数据、 接受到的控制命令数据、 GPS数据、 电池电压数据、 PID参数数据。 上位机发送遥控器: 控制命令数据, PID参数设置数据等。 数据帧格式 帧头 + 功能字 + 数据长度 + 数据值 + 校验值 串口数据接收 串口数据包接收 和解包, 校验: 中断服务函数进行。 接收传感器数据包为例 , 其处理流程如下图所示: 系统初始化的时候, 串口配置为: 中断接收方式, 主控器每接收到1直接串口数据, 将产生接收中断信号, 程序跳转到中断服务程序入口处, 开始进行数据接收的处理。 执行中断服务程序: 解析 判别, 更新状态, 结束。 串口数据发送 系统初始化, 串口发送数据缓存, 内存起始地址告知DMA 。 每次需要 发送串口数据时, 只需要将数据写入全局数组中, 激活DMA发送后 , 即可自动完成数组内容的传输。 发送完成后, DMA 会给出一个中断信号, 用于指示发送完成, 主控器可以在中断服务函数中进行其他操作 。 任务第一次执行时, 先挂起DMA发送完成信号量(在中断服务函数中发送) 再次执行5ms , 结束后再次开始执行。 直接进行下一次DMA发送, 然后再次挂起本任务。 串口发送的频率实际上是由任务挂起等待的时间决定的。 当挂起等待时间为5ms 时, 发送频率200Hz 。 任务 1)传感器读取任务 2)飞行定高任务 3)姿态解算任务 电机震动干扰 , 影响了陀螺仪信息的输入。 数字滤波器 设计: 算法平均 、 加权平均、 滑动平均 姿态解算任务 : 解算后的俯仰角、 滚转角、偏航角, 三个姿态角的过程。 加速度测量的是重力分量, 有绝对的参照物: 重力轴。 无外力的加速情况下, 能够准确输出俯仰角, 滚转角。 并且角度不会有累计误差。 在长时间内都是准确的。 虽然经过低通滤波器除了大部分由于电机振动引入的噪声信号。 姿态解算融合方法 :四元素 互补滤波、 卡尔曼滤波、 四元数法、 陀螺仪的积分误差: 加速度计测量的重力加速度分量 - 陀螺仪积分后得到的重力向量。 利用说的的误差, 修正陀螺仪的测量值。 利用修正后的陀螺仪的值, 更新四元数。 得到更新后的四元数规范化。 得到新的四元数之后, 就完成了一次四元数姿态融合的运算。 四元数可以转化成三个欧拉角。 MPU6050 内部 DMP 姿态解算 4)数据发报任务 5)飞行自稳控制任务 PID 控制 : 对电机转速不断调整,是的飞行姿态逼近期望姿态。 比例, 积分, 微分控制器 。 工业控制器。 PID 控制器 由 比例单元、 积分单元、 微分单元。 输入是期望值r(t) 和输出测量值y(t) PID 控制中比例调节的作用可理解为:通过采集信号的负反馈,求得系统输出与期望值的偏差,经过比例换算得出系统输出控制量从而消除系统输出偏差。比例系数 Kp 决定了减少偏差的速度, Kp 越大偏差减少的越快,但容易引起系统超调,使系统产生震荡;而若减小 Kp 值,调节的速度也相应的变慢。 积分控制是对累积的偏差进行的调节,其目的是使累积偏差为零。积分控制的效果与偏差的大小和偏差持续的时间相关。 微分控制即控制误差的变化率,控制误差的变化趋势,起到提前修正误差的作用,同时提高输出响应的快速性,减小系统超调量[52]。 控制值 = 姿态解算后的俯仰角度 , 期望值 = 遥控器输入的俯仰角度 - 传感器模块解算的俯仰角度。 . 主控移植 四、整体步骤概括 1、 准备材料 2、 传感器驱动程序 3、 芯片驱动程序 4、调试控制算法参数 5、 上位机通讯 五、飞行器原理 飞行布局 1、 X 型布局 电机 1- 2 逆时针旋转同时 , 电机3,4 顺时针旋转 当飞行器平衡飞行时, 陀螺效应和空气动力扭矩效应被抵消。 ##yy? 空气动力图 ##yy? 扭矩? 反扭矩? 2、 基本运动状态 1、垂直运动; 有两对电机转向相反,可以平衡其对机身的反扭矩,当同时增加四个电机的输出功率,旋翼转速增加使得总的拉力增大,当总拉力足以克服整机的重量时,四旋翼飞行器便离地垂直上升; 反之,同时减小四个电机的输出功率,四旋翼飞行器则垂直下降,直至平衡落地,实现了沿 z 轴的垂直运动; 当外界扰动量为零时,在旋翼产生的升力等于飞行器的自重时,飞行器便保持悬停状态; 保证四个旋翼转速同步增加或减小是垂直运动的关键; 2、 俯仰运动; 在图 b 中,电机1的转速上升,电机3的转速下降,电机2、电机4的转速保持不变; 为了不因为旋翼转速的改变引起四旋翼飞行器整体扭矩及总拉力改变,旋翼1 与 旋翼3 转速该变量的大小应相等; 由于 旋翼1 的升力上升,旋翼3 的升力下降,产生的不平衡力矩使机身绕 y 轴旋转(方向如图所示),同理,当 电机1 的转速下降,电机3 的转速上升,机身便绕 y 轴向另一个方向旋转,实现飞行器的俯仰运动; 3 滚转运动; 与图 b 的原理相同,在图 c 中,改变 电机2 和 电机4 的转速,保持 电机1 和 电机3 的转速不变,则可使机身绕 x 轴旋转(正向和反向),实现飞行器的滚转运动; 4 偏航运动; 旋翼转动过程中由于空气阻力作用会形成与转动方向相反的反扭矩,为了克服反扭矩影响,可使四个旋翼中的两个正转,两个反转,且对角线上的来年各个旋翼转动方向相同; 反扭矩的大小与旋翼转速有关,当四个电机转速相同时,四个旋翼产生的反扭矩相互平衡,四旋翼飞行器不发生转动; 当四个电机转速不完全相同时,不平衡的反扭矩会引起四旋翼飞行器转动; 3、前后运动; 要想实现飞行器在水平面内前后、左右的运动,必须在水平面内对飞行器施加一定的力; 在图 e 中,增加 电机3 转速,使拉力增大,相应减小 电机1 转速,使拉力减小,同时保持其它两个电机转速不变,反扭矩仍然要保持平衡; 按图 b 的理论,飞行器首先发生一定程度的倾斜,从而使旋翼拉力产生水平分量,因此可以实现飞行器的前飞运动,向后飞行与向前飞行正好相反; 当然在图 b 图 c 中,飞行器在产生俯仰、翻滚运动的同时也会产生沿 x、y 轴的水平运动; 4、 侧向运动; 在图 f 中,由于结构对称,所以侧向飞行的工作原理与前后运动完全一样; 五、过程考虑因素 气流等外部环境干扰 具有6个自由度 , 只有4个控制输入 多变量、非线性、强耦合和干扰敏感 累积误差消除 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 03:36 , Processed in 0.592759 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号