基于avr的四旋翼无人机控制毕业设计(编辑修改稿)内容摘要:

输出最终输出值  执行机构由电调和电机组成,负责真正控制飞机的飞行和姿态调整 ( 2) 连接方式: 各部分由电线物理连接  无线控制系统与中央处理单元通过 PWM 信号线交互信息  姿态传感器与中央处理单元通过 IIC 总线 与一个处理器中断 交互信息  中央处理 器与电调单元通过 PWM 信号 线 完成信息交互 姿态传感器 姿态传感器实时报告当前飞行器 的翻滚角,俯仰角,偏航角。 本文采用MPU6050 三轴加速度计与陀螺仪集成芯片 模块。 基于 AVR的四旋翼 无人机控制 12 MPU6050 模块 姿态传感器采用 MPU6050 电路模块, 模块电路图 如图 32 图 32: MPU6050模块电路图 使用时需要把 VCC 接入 +5V 到 + 之间的电压, GND 接地。 IIC 总线的 SDA 与 SCL 引脚分别与处理器 SDA 与 SCL 引脚相连。 AD0 接低电平时,传感器 IIC地址为 0x68,接高电平时,传感器 IIC 地址为0x69,图中 AD0 引脚接地,所以传感器 IIC 地址为 0x68。 INT 引脚为 MPU6050 DMP 数据输出中断,当 DMP 完成一份姿态角度计算后会拉高 INT 引脚以通知处理器数据准备完成。 本设计使用到了 INT 引脚接控制器INT0 引脚。 XDA 与 XCL 为连接其他 IIC 总线传感器接口 ,本文没有使用。 传感器量程:  加速度量程范围 177。 2g 177。 4g 177。 8g 177。 16g  陀螺仪量程范围 177。 250176。 /s 177。 500176。 /s 177。 1000176。 /s 177。 2020176。 /s 感器缺省设置 量程 为177。 2g,177。 250176。 /s 运动引擎 DMP( Digital Motion Processing) 是 MPU6050 传感器内部 数字 运动引擎 [5],它将采集自身传感器数据,对 数据 融合滤波后转换为四元数( quaternion)形式放进 FIFO 缓冲池等待处理器 读取。 如图 33为 MPU6050 传感器内部 结构 关系 图 基于 AVR的四旋翼 无人机控制 13 图 33: MPU6050内部结构  MPU 通过用户定义的速率, 让 DMP 采集三轴加速度计数据与三轴陀螺仪数据。 所有能够从 MPU 传感器的数据有 3 轴加速度值, 3 轴陀螺仪值和温度值。  FIFO 队列保存完整的 DMP 处理后 的姿态 数据,允许系统处理器 突发地 读取 他们 , 以减少系统处理器读取数据 时间 开销。 当读取完 FIFO 数据后系统处理器 可进入休眠模式以节约能源,直到 MPU 再次提供完整 的姿态 数据。  DMP 还包含数字可编程的低通滤波器。 主控芯片 从姿态传感器接受到的数据与遥控器数据的需要进行计算后 才能 交给执行单元完成实际控制。 对 本实验目标 四旋翼飞行器进行控制需要 对处理器有 以 下要求:  4 路输出 PWM 引脚  IIC 总线接口  硬件中断 引脚  至少 4 个引脚用于遥控器信号接收 由于 AVR 编程简便、速度快 、价格 也 适用, 本文采用 ATmega328p 芯片作为主控芯片。 图 34为 ATmega328p 芯片引脚定义说明 [3]。 基于 AVR的四旋翼 无人机控制 14 图 34ATmega328引脚定义 图 35为 本实验选用 ATmega328p 最小系统电路图 [6] 图 35ATmega328p最小系统  RESET 引脚接高电平,当需要复位时按下按键使 RESET 引脚为低电平  XTAL XTAL2 接外部 16MHz 晶振  AREF 为 AD 参考电压输入端,本实验没使用 AD 单元,接地  AVCC、 AGND 为模拟单元电压与地  VCC、 GND为数字电压  PD PB PB PB3 引脚驱动电调 4路 PWM 信号  PC0、 PC PC PC3 接收 遥控系统接收机信号  PC PC5为 IIC 总线接口  PD1 引脚为 MPU6050 DMP 数据处理中断引脚 无线模块 无线模块采用 、 PPM信号发送机和接收机,如图 36为六通道 接收机,每一通道发送出一个 PWM 信号,高电平持续时间代表遥控器遥感位置。 接收机接基于 AVR的四旋翼 无人机控制 15 到遥控器 PPM信号并解码为 PWM 信号 从六个引脚输出。 图 36:无线接收机 本实验 将 接收机 14通道接 单片机 Channel14,通过 软件 解码 1得到遥控 位置。 驱动电调 电调在项目中的作用为接受处理器 PWM 信号,通过改变电压控制电机转速。 如图 37电调连接图, 选用 电调接收 12ms 高电平信号,分别对应 05V 电压即电机的停和最高转速, 转速刷新率 范围 为 50500Hz。 图 37:电调 1 见 基于 AVR的四旋翼 无人机控制 16 第四 章 程序 设计 本章说明控制程序的各个模块组成与信息交流方式,重点讨论姿态数据的获得。 程序 整体设计 软件系统由 5部分构成:初始化模块、遥控器解码、姿态处理、综合处理单元和电机驱动。 如图 41 综 合 处 理 单 元遥 控 器 解 码姿 态 处 理初 始 化 模 块电 机 驱 动 图 41:程序 整体结构  初始化模块进行处理器引脚初始化,定时器初始化, IIC 端口初始化等工作,为整个系统工作所需操作做铺垫  遥控器解码单元解码接收机发来的 PWM 信号,转化成 规则数据,用于综合处理单元  姿态处理接受 MPU6050 发送的数据并换算成欧拉角  综合处理单元结合所有数据确定当前应输出量  电机驱动模块 根据输出值 直接控制定时器寄存器,控制电机转速 系统初始化 系统 初始化完成对 IIC 总线初始化,串口初始化(仅调试 ) ,普通端口设置,以及定时器设定。 初始化流程图如图 42 基于 AVR的四旋翼 无人机控制 17 开 始普 通 端 口 初 始 化IIC总 线 初 始 化MPU6050初 始 化定 时 器 初 始 化结 束 图 42:初始化流程图  普通端口初始化完成对引脚的输入输出定义,使能上拉电阻等操作。 在本程序中设置遥控器接收端口为输入方向, PWM端口 为 输出方向  IIC 总线初始化完成 IIC 总线 的使能,使能 IIC 总线后 PC PC5 则从普通端口变为 SCL、 SDA 信号线。 其中 SCL 为 IIC 总线时钟线, SDA 为 IIC 总线信号线  MPU6050 初始化 完成对姿态传感器的初始化任务。 其中 设置 DMP 输出频率为40Hz, 实验发现 高频率输出对信号 将影响 滤波效果。  定时器初始化初始 Timer Timer2 两个定时器作为 PWM 信号产生控制器,其中 Timer1 在 PB PB2 输出 2路 PWM信号, Timer2 在 PB PD3 引脚输出两外 2 路 PWM 信号。 每路 PWM 分别 控制 某个电机转速。 PWM( Pulse Width Modulation)及脉冲宽度调制,根据高电平占整个周期的比例控制功率的输出。 如图 411 图 411: PWM占空比 基于 AVR的四旋翼 无人机控制 18 由于 本实验所选 电调接受 12ms 高电平信号作为输入,分别对应最低功率和最高功率输出,转速刷新率在 50500Hz。 根据以上要求设定定时器值。 已知处理器晶振为 16MHz, 8 位定时器,采用 256 分频可以 达到16000000/256/256=244Hz 刷新速度,满足 50500Hz 刷新率要求。 12ms 高电平在 8 位比较寄存器中为 ,为方便 定义 65125 共 60个 转速 控制量。 定时器 PWM 功能 初始化代码: 遥控器解码 本实验遥控器与接收机 之间为 PPM 信号 [4],由遥控器发送接收机接收。 如图43为 PPM 信号 样式。 图 43: PPM信号说明 PPM 信号为周期为 20ms 的逻辑脉冲。 相隔两个高电平 之间 为一个通道信号,代表一个摇杆位置 , 其中 每个通道 高电平时间 在 1ms2ms之间 ,所以理论上最多基于 AVR的四旋翼 无人机控制 19 可支持 10 通道信号传输。 接收到的 PPM 信号由接收机解码为 PWM 信号通过引脚发送给处理器, 每通道对应一个引脚。 处理器接受到的 PWM 信号依次出现在各个引脚上,对其进行解码就是对高电平时间的记录。 图 44为信号解码流程图 开 始结 束上 升 沿记 录 时 间 T1是下 降 沿记 录 时 间 T2是否否返 回 T=T2T1 图 44:信号解码流程图 姿态处理 姿态处理单元基于 MPU6050 姿态传感器,通过 IIC 总线得到四元数数据,并通过四元数向欧拉角的转换得到 姿态角。  数据获得 MPU6050 数据手册中 说明 最大 IIC总线 速度为 400kHz,根据 IIC 总线时钟计算公式 SCL = 𝐶𝑃𝑈⁡𝐶𝐿𝑂𝐶𝐾⁡𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦16+2(𝑇𝑊𝐵𝑅)(𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟𝑉𝑎𝑙𝑢𝑒)设定 TWBR 寄存器值为 24。 IIC 总线信息传输需要遵循规则,根据 MPU6050 数据手册可得到如图 45,46信息 基于 AVR的四旋翼 无人机控制 20 图 45: IIC总线数据发送规则 图 46: IIC总线数据接收规则 传送数据中系统处理器始终为主机, MPU6050 传感器始终为从机。 当 MPU6050 运动引擎 DMP 处理完一次姿态数据后,便拉高 INT 引脚通知系统处理器数据的到来,系统处理器通过 IIC 总线访问 MPU6050 传感器 FIFO 队列,得到姿态传感器准备好的四元数数据。 四元数获得代码为: 基于 AVR的四旋翼 无人机控制 21 此时四元数 Q = w +x +y+ z全部数据在 Quaternion 数据结构中。  四元数转欧拉角 四元数 、 姿态矩阵 关系为 : 22332 2 2 22 2 2 22 2 2 2( | | | | ) 2 2 [ ] ( ) ( )2( ) 2( )2( ) 2( )2( ) 2( )TA w Q I w Q q qx y z w x y zw x z y wx y zw x y z w y z x wx z y w y z x w x y z w                       () 其 中 3*3 []()Tw I Qq Q () 3*3 []()Tw I Qq Q () 0[ ] 00zyQ z xyx   () 并且 𝐼3∗3为单位矩阵 2 式( ) 中 𝐶𝐸𝐵与式( )比较可知 22222 ( )a r c ta n1 2 ( )a r c ta n ( 2 ( ) )2 ( )a r c ta n ( )1 2 ( )w x y zxyw y zxw z x yyz     () 2 单位额矩阵 为对角线为 1 的矩阵,如 3*3 单位矩阵为 [1 0 00 1 00 0 1] 基于 AVR的四旋翼 无人机控制 22 arctan与 arcsin的值为 [−𝜋2, 𝜋2],因此要用 atan2代替 arctan,及式( )变为 2222ta n 2 ( 2 ( ) , 1 2 ( ) )a r c s in ( 2 ( ) )ta n 2 ( 2 ( ) , 1 2 ( ) )a w x y z x yw y z xa w z x y y z           () 以 式 ()用 C 语言描述为 这样 Roll, Pitch, Yaw 角就都确定了下来,完成了姿态 解算。 决策 模块 遥控器控制信息和当前姿态信息获得之后就到了将他们。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。