“翼计划”-无人机飞控开发平台课程讲义_第1页
“翼计划”-无人机飞控开发平台课程讲义_第2页
“翼计划”-无人机飞控开发平台课程讲义_第3页
“翼计划”-无人机飞控开发平台课程讲义_第4页
“翼计划”-无人机飞控开发平台课程讲义_第5页
已阅读5页,还剩102页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

翼计划——无人机飞控开发平台

课程讲义

北京中科浩电科技有限公司

联合编制

北京寒水教育科技有限公司

目录

第一章无人机概述...............................................3

第一节多旋翼无人机发展......................................3

一、多旋翼无人机的过去....................................3

二、多旋翼无人机的现在....................................4

三、多旋翼无人机的分类....................................6

第二节无人机的组成.........................................10

第三节飞行原理.............................................12

一、螺旋桨...............................................13

二、无人机运动状态.......................................15

第四节无人机飞控开发平台组成................................5

第二章遥控器设计...............................................8

第一节遥控器概述............................................8

一、遥控器功能............................................8

二、遥控器构成............................................9

第二节硬件设计.............................................11

一、摇杆电路设计.........................................11

二、I/O电路设计.........................................12

三、通信模块电路设计.....................................13

第三节软件实现.............................................14

一、I/O口实现...........................................14

二、ADC数据采集........................................16

三、SPI总线实现.........................................21

四、通信协议.............................................23

第三章无人机操控..............................................25

第一节基本飞行方法.........................................25

第二节注意事项.............................................29

第四章无人机设计..............................................30

第一节四旋翼无人机飞行理论..................................30

一、四旋翼无人机坐标系....................................30

二、四旋翼无人机姿态描述.................................31

第二节单片机最小系统........................................37

一、MSP430单片机简介...................................37

二、单片机最小系统.......................................39

三、复位电路设计.........................................40

四、时钟电路设计.........................................41

五、小结.................................................43

第三节电源管理..............................................45

一、电路设计.............................................45

二、电源去耦.............................................47

三、小结.................................................47

第四节无线通信.............................................48

一、nRF24L01简介........................................49

二、nRF24L01状态机.....................................49

三、硬件设计.............................................51

四、软件实现.............................................52

第五节姿态传感器...........................................56

一、陀螺仪原理...........................................56

二、加速度计原理.........................................57

三、姿态数据格式.........................................58

四、运动数据.............................................60

五、硬件设计.............................................65

六、软件实现.............................................65

第六节气压计...............................................68

一、压力传感器简介.......................................68

二、压力计算方法.........................................69

三、硬件设计.............................................70

四、软件实现.............................................70

第七节直流电机.............................................72

一、有刷电机.............................................72

二、无刷电机.............................................74

三、硬件设计.............................................76

四、软件实现.............................................77

第八节PID控制器...........................................79

一、反馈回路.............................................80

二、理论基础.............................................80

三、离散化算法...........................................84

四、软件实现.............................................85

第九节卡尔曼滤波...........................................88

一、原理.................................................88

二、软件实现.............................................90

第一章无人机概述

第一节多旋翼无人机发展

一、多旋翼无人机的过去

多旋翼这个概念在很早以前就已经被提出了,它的历史可以追溯到20世纪

初,但是当时由于受到理论知识和科技发展水平的制约,多旋翼飞行器在很长一

段时间内没有得到足够的重视和发展。

1907年,法国Breguet兄弟制造了第一架四旋翼式直升机---“Gyroplane”,

如图1-1所示,这次飞行中没有用到任何旋翼式直升机,这次飞行中没有用到任

何的控制,所以飞行稳定性是很差。

图1-1Breguet兄弟制造的第一架四旋翼式直升机

1921年,GeorgeDeBothezat在美国俄亥俄州西南部城市代顿的美国空军部

建造了一架大型的四旋翼直升机,如图1-2所示,先后进行了100多次的飞行试

验但是仍然无法很好的控制其飞行,并且没有达到美国空军标准。

图1-2GeorgeDeBothezat的直升机

1956年,Convertawing造了一架四旋翼直升机,如图1-3所示,该飞行器

的螺旋桨在直径上超过了19英尺,用到了两个发动机,并且通过改变每个螺旋

桨的推力来控制飞行器。

图1-3Convertawing的四旋翼直升机

在此之后的数十年中,多旋翼垂直起降机没有什么大的进展。

二、多旋翼无人机的现在

随着微系统、传感器、控制理论、多旋翼垂直起降等技术的发展,多旋翼垂

直起降机又引起极大的兴趣。

应用比较成熟的多旋翼飞行器大多是遥控航模多旋翼飞行器。遥控航模多旋

翼飞行器的典型代表包括德国的MicrodronesMD4-200,美国的DraganflyerIIL

法国AR.DRONE以及国内的XAircraft和大疆精灵系列。

德国MicrodronesMD4-200多旋翼无人机具有垂直起降微型自动驾驶无人

飞行器系统,如图1-4所示。mdCockpit地面站软件集成了飞行规划、飞行监控、

飞行数据分析等多种功能,能够实时显示飞行状态和相关数据。2006年在德国

上市以来,MD4-200多旋翼飞行器系统用于航空摄影、空中监视、消防救灾、

警察、特种部队和军队等众多不同行业领域。

图1-4MD4-200多旋翼飞行器

法国派诺特(Parrot)公司开发的AR.DRONE无人机是一个具备WiFi功能

的遥控多旋翼,如图1-5所示。该机配置了重力感应装置、陀螺仪、机械控制芯

片等装置,还能进行两人模拟空战,能够实现在空中悬停,同时在微风状态下也

能够平衡。

图1-5AR.DRONE多旋翼飞行器

大疆的精灵系列多旋翼飞行器是目前国产航模产品中拥有国际知名度的一

个,如图1-6所示,该飞行器采用了整体外壳设计,空载能够飞行二十分钟,并

可以配套增稳云台。采用MEMS飞控系统和GPS,使得该飞行器可以完成自主

航线飞行,可以说其功能已经比较接近于一套小型无人机了。

图1-6大疆精灵2多旋翼飞行器

三、多旋翼无人机的分类

多旋翼飞行器一般以旋翼的排列形式来进行分类,从数量上有3旋翼,4旋

翼,6旋翼,8旋翼,12旋翼等等,从分布位置有+型,X型和H型等等,还有

平面分布和上下分布两种布局形式,下面选几种常见的型号来讲讲他们的特点。

1+4、+6型

+型多旋翼在前几年出现的比较多,如图1-7所示,因为其前后左右飞行的

控制比较直观,只需要改变少量的电机就可以实现,便于飞控算法的开发。但是

由于飞机正前方有螺旋桨,在航拍的时候会经常进入图像造成不便,所以随着飞

控的成熟,正在逐渐被X型取代。

图1-7+型飞行器

2X型

X型多旋翼是目前最常见的类型,如图1-8所示,尤其是X4,由于结构简

单受到很多爱好者的喜爱。但是因为电机的功率受到限制,X4在载重量方面不

如X6与X8,所以大型的航模和航拍无人机较多采用后两种形式。另外X8型多

旋翼的动力系统拥有冗余能力,即在一个电机损坏的情况下可以继续航行,这是

优于其他排列的功能,所以大型多旋翼较常采用这种形式。

图1-8X型飞行器

3上下分布

上下分布的形式多用于体积受到限制,但是对载重量又有较大需求的场合,

如图1-9所示,使用3旋翼或4旋翼的尺寸可以做到6旋翼和8旋翼的载重量。

当然理论上讲上下对转的双旋翼可以增加飞行效率,但是实际情况却因为螺旋桨

和电机难以精确匹配,反而造成效率有所下降。另外,上下旋翼布局的飞行器吊

挂载荷不是很方便,所以一般只在载荷较小或飞行器较大的时候采用这样的设计。

图1-9上下分布型多旋翼

4Y3与H4

这两种多旋翼类型是比较特殊的,目前常见与玩具与航模当中,其他场合比

较少使用这种布局形式。

Y3型多旋翼优点在于使用的旋翼较少,所以成本方面会比较有优势,但是

尾旋翼上需要使用一个舵机用于平衡扭矩,这会增加机械复杂性和控制难度,如

图1-10所示。

图1-10Y3型多旋翼

而H4型多旋翼优点在于比较易于折叠收起,又拥有与X4相当的特点,结

构简单,控制方便,因此受到了航模爱好者们的喜爱,如图1-11所示。

图1-11H型多旋翼及折叠状态

5其它类型

其它类型多旋翼大多有特殊用途和功能,因而有了与众不同的外观,一般多

见于功能性的无人机产品,如图1-12所示。

图1-12异形机架

第二节无人机的组成

无人机的结构与其用途、功能密切相关。如航拍无人机和植保无人机,其机

载设备完全不同,结构形式也有差别。即使是航拍无人机,配置也不相同,有的

配图传设备,有的不配图传设备;有的具有自动导航功能,有的没有自动导航功

能。

一般来说,多旋翼无人机主要由机架、飞控、动力系统、遥控器组成。

•无人机的承载一一机架。无人机的承载平台,所有设备都是用机架承载

起来飞上天的,所以无人机机架的好坏,很大程度上决定了这部无人机

好不好用。衡量一个机架的好坏,可以从坚固程度、使用方便程度、元

器件安装是否合理等方面考察。

•无人机的驾驶员一一飞控。无人机的飞行控制系统,主要的功能就是自

动保持飞机的正常飞行姿态。飞控之于无人机相当于驾驶员对于有人飞

机的作用,一般由传感器、机载计算机和伺服动作设备三大部分构成,

完成的任务包括无人机姿态稳定和控制、无人机任务设备管理和应急控

制三大类。

•无人机的核心部分一一动力系统。动力系统主要包含电机、电调、螺旋

桨以及电池。

电机:指将电能转化为机械能的一种转换器,由定子、转子、铁心、磁

钢主要部分组成。电机分为有刷电机和无刷电机。无人机的电机一头固

定在机架力臂的电机座,一头固定螺旋桨,通过旋转产生向上的推力。

电调:指电子调速器,其主要作用就是将飞控板的控制信号,转变为电

流的大小,以控制电机的转速。

螺旋桨:是指将电机转动功率转化为推进力或升力的装置。

电池:无人机上的电池一般是高倍率锂聚合物电池,特点是能量密度大、

重量轻、耐电流数值较高等。

•无人机操控设备一一遥控器。无人机遥控器是飞手操控无人机的工具,

因此,无人机遥控器的改进一直都是朝着方便飞手操作无人机的方向进

行的。遥控器一般包括开关键、无线通信等基础装置。所谓的遥控器通

道就是指可以遥控器控制的动作路数,一般四轴在控制过程中需要控制

的动作路数有:上下、左右、前后、旋转,所以最低得4通道遥控器。

而大家平时所说的美国手、日本手、中国手的区别就在于通道的排列位

置不一样。

第三节飞行原理

螺旋桨和轮子一样,是一项神奇的发明。

螺旋桨之所以能飞,玩过竹蜻蜓的朋友应该都知道:当手的搓动给了竹蜻蜓

一个旋转的速度后就会产生升力,让竹蜻蜓起飞,如图1-13错误!未找到引用源。

所示。

图1-13竹蜻蜓示意图

同理,多旋翼无人机也是由电机的旋转,使螺旋桨产生升力而飞起来的。比

如四旋翼无人机,当飞机四个螺旋桨的升力之和等于飞机总重量时,飞机的升力

与重力相平衡,飞机就可以悬停在空中了。

根据牛顿第三定律,螺旋桨在旋转的同时,也会同时向电机施加一个反作用

力(反扭矩),促使电机向反方向旋转。这也是为什么现在的直升机都会带一个

“小尾巴”,在水平方向上施加一个力,去抵消这种反作用力,保持直升机机身

的稳定。

而回到四旋翼飞行器上,它的螺旋桨也会产生这样的力,所以为了避免飞机

疯狂自旋,四旋翼飞机的四个螺旋桨中,相邻的两个螺旋桨旋转方向是相反的。

如图1-14所示,三角形红箭头表示飞机的机头朝向,螺旋桨Ml、M3的旋

转方向为逆时针,螺旋桨M2、M4的旋转方向为顺时针。

当飞行时,M2、M4所产生的逆时针反作用力(反扭矩)和Ml、M3产生的

顺时针反作用力(反扭矩)相抵消,飞机机身就可以保持稳定。

图1-14四旋翼无人机飞行示意图

不仅如此,多轴飞机的前后左右或是旋转飞行也都是靠多个螺旋桨的转速控

制来实现的。

一、螺旋桨

螺旋桨是无人机的重要部件之一,也是最容易损坏的部件。多旋翼无人机用

螺旋桨实物如图1-15所示。

图1-15多旋翼无人机螺旋桨实物图

1螺旋桨的作用

无人机螺旋桨主要具有以下作用:

•螺旋桨是直接产生升力的部件。

•螺旋桨与电动机、电调优化匹配,可以在相同的升力下耗用更少的电量,

这样能延长多旋翼无人机的续航时间。

因此,选用最优的螺旋桨是提高续航时间的一条捷径。

2螺旋桨的指标参数

多旋翼无人机用螺旋桨指标参数主要有直径、螺距、叶数、材料等。

•直径:这个直径就是两个桨尖之间的长度距离,多是用英寸作为单位(1

英寸=2.54cm)o

•螺距:这个定义是螺旋桨(桨叶剖面迎角为零时)旋转一周在轴向移动

的距离,想象小孩儿玩的竹蜻蜓,转一圈向前移动的距离就是螺距。螺

距的单位也是英寸。一般来说,同一个转速的螺旋桨,螺距越大飞行速

度越快。

例如,型号为9060的螺旋桨,其直径为9英寸,螺距为6英寸;型号

为1170的螺旋桨,其直径为11英寸,螺距为7英寸。

•叶数:对于多旋翼无人机,常见的螺旋桨的桨叶数有2叶桨和3叶桨。

•材料:塑料桨,木桨,碳纤维桨等,基本上越贵的越好。

•正、反桨:多旋翼无人机的螺旋桨正桨和反桨之分,一般螺旋桨正面光

滑,当该面朝前时,逆时针旋转产生拉力的为正桨,顺时针旋转产生拉

力的为反桨。多旋翼无人机一般都是通过改变电机的转向来改变前拉或

者后推实现空中运动的。

3螺旋桨产生的动力

根据伯努利原理,流速大的压强小,流速小的压强大。把螺旋桨进行剖面进

行分析,上表面相对于下表面面积大,单位时间内,空气流经下表面的速度大于

上表面。上下表面产生的压差使桨叶产生升力,如图1-16所示。

图1-16螺旋桨拉力图

螺旋桨产生的动力是驱动多旋翼无人机运动的主要推力,因此螺旋桨的动力

特性对于多旋翼无人机的系统模型以及运动控制都非常重要。但由于螺旋桨工作

时的特性非常复杂,这里只给出螺旋桨的动力近似计算公式。

多旋翼无人机工作时螺旋桨降为无人机提供升力和反转矩,从而使无人机执

行各种机动动作。根据螺旋桨空气动力学的相关理论可知,螺旋桨上产生的升力

与反转矩主要与空气密度、螺旋桨角速度、螺旋桨桨叶面积、桨叶长度、桨叶数、

桨叶的特征升力系数和反转矩系数有关,其关系可近似表述为

1,

2

F=-apa)NBCT

1

22

M=--Rpa)NBCM

式中,F为螺旋桨上产生的升力,a为螺旋桨桨叶面积,p为空气密度,3为

螺旋桨角速度,NB为桨叶数,金为桨叶的特征升力系数,M为螺旋桨产生的反转

矩,R为桨叶长度,金为螺旋桨桨叶的反转矩系数。

二、无人机运动状态

四旋翼无人机在空间共有6个自由度运动(分别沿3个坐标轴平移和旋转),

这6个自由度的控制都可以通过调节不同电机的转速来实现。如图1-17所示为

6个自由度实现的基本运动状态。

六自由度运动

图1-17六自由度运动图

垂直运动:如图1-18所示,因有两对电机转向相反,可以平衡其对机身的

反扭矩,当同时增加四个电机的输出功率,电机转速增加使得总的拉力增大,当

总拉力足以克服整机的重量时,四旋翼无人机便离地垂直上升;反之,同时减小

四个电机的输出功率,四旋翼无人机则垂直下降,直至平衡落地,实现了沿Z轴

的垂直运动。当外界扰动量为零时,在桨叶产生的升力等于飞行器的自重时,无

人机便保持悬停状态。保证四个桨叶转速同步增加或减小是垂直运动的关键。

图1-18垂直运动

俯仰运动:如图1-19所示,电机1的转速上升,电机3的转速下降,电机

2、电机4的转速保持不变。为了不因为桨叶转速的改变引起四旋翼无人机整体

扭矩及总拉力改变,桨叶1与桨叶3转速改变量的大小应相等。由于桨叶1的升

力上升,桨叶3的升力下降,产生的不平衡力矩使机身绕Y轴旋转,同理,当电

机1的转速下降,电机3的转速上升,机身便绕Y轴向另一个方向旋转,实现

无人机的俯仰运动。

图1-19俯仰运动

滚转运动:与俯仰运动的原理相同,如图1-20所示,改变电机2和电机4

的转速,保持电机1和电机3的转速不变,则可使机身绕X轴旋转(正向和反

向),实现飞行器的滚转运动。

图1-20滚转运动

偏航运动:四旋翼无人机偏航运动可以借助桨叶产生的反扭矩来实现。桨

叶转动过程中由于空气阻力作用会形成与转动方向相反的反扭矩,为了克服反

扭矩影响,可使四个桨叶中的两个正转,两个反转,且对角线上的各个桨叶转

动方向相同。反扭矩的大小与桨叶转速有关,当四个电机转速相同时,四个桨

叶产生的反扭矩相互平衡,四旋翼无人机不发生转动;当四个电机转速不完全

相同时,不平衡的反扭矩会引起无人机转动。如图1-21所示,当电机1和电机

3的转速上升,电机2和电机4的转速下降时,桨叶1和桨叶3对机身的反扭

矩大于桨叶2和桨叶4对机身的反扭矩,机身便在富余反扭矩的作用下绕z轴

转动,实现无人机的偏航运动,转向与电机1、电机3的转向相反。

图1-21偏航运动

前后运动:要想实现无人机在水平面内前后、左右的运动,必须在水平面内

对无人机施加一定的力。如图1-22所示,增加电机3转速,使拉力增大,相应

减小电机1转速,使拉力减小,同时保持其它两个电机转速不变,反扭矩仍然要

保持平衡。按俯仰运动的理论,无人机首先发生一定程度的倾斜,从而使桨叶拉

力产生水平分量,因此可以实现无人机的前飞运动,向后飞行与向前飞行正好相

反。在无人机俯仰、翻滚运动的同时也会产生沿X、Y轴的水平运动。

图1-22前后运动

左右运动:如图1-23所示,由于结构对称,所以左右飞行的工作原理与前

后运动完全一样。

图1-23左右运动

总得来说实现四旋翼无人机运动就是控制四个电机的速度,然后相应的提高

或者减慢速度就可以让无人机以各种状态运动起来。

第四节无人机飞控开发平台组成

“翼计划”一一无人机飞控开发平台硬件组成包括:飞控核心、扩展底板、

F150机架以及遥控器。扩展底板将飞控核心的功能以及引脚全部引出,方便用

户进行调试和外扩模块的搭建;飞控核心既可以安装在F150机架上组成F150无

人机实际飞行,也可以安装在扩展底板上组装成调试平台方便调试,如图1-24所

示。

图1-24无人机飞控开发平台硬件组成

飞控核心主要由中央处理器MSP430F5529、电机驱动、电源管理、无线通信

模块、姿态传感器以及气压计组成,如图1-25所示。

•MSP430F5529——中央处理器,控制核心;

•电机驱动一一直流无刷电机的驱动单元;

•电源管理一一电压变换以及电池充放电管理;

•无线通信模块一一负责和遥控器的双向通信;

•姿态传感器一一包括陀螺仪以及加速度计,输出无人机的姿态;

•气压计一一高度计,输出无人机的飞行高度。

图1-25飞控核心结构图

如图1-26及图1-27所示,分别为飞控核心的顶层及底层器件布局图。

LED灯LED灯

无线通信模块

nRF24L01

扩展接口扩展接口

中科港电

©Instronic

扩i展接口扩展接口

开关1S

图1-26飞控核心器件布局(顶层)

图1-27飞控核心器件布局(底层)

第二章遥控器设计

第一节遥控器概述

一、遥控器功能

遥控器是航模爱好者最赖以生存的部分,虽然无人机可以完全脱离地面遥控

器的控制,但是对于很多无人机刚刚入门的朋友来说,在还没有学会如何为无人

机做航线规划和全自动飞行时,遥控器仍然有着至关重要的地位。

所谓无人机的遥控器就是像电视机遥控器、空调遥控器一样可以不用接触到

被控设备,而通过一个手持器件,使用无线电与被控设备进行通信,从而达到对

设备的控制。“遥”指的就是远距离,“控”指的就是可以控制设备,“器”指的

就是一个电子器件。

遥控器想到达到与无人机通信的功能需要有两部分配合完成。即:发射器与

接收机。遥控器上的控制杆转为无线电波发送给接收机,而接收机通过接收无线

电波,读取遥控器上控制杆的读数,并转为数字信号发送到无人机的控制器中,

如图2-1所示。

图2-1遥控器示意图

一般来说,遥控器具有以下典型功能:

•能平滑输出飞行器所需的控制量

•方便握持,符合人体握持习惯

•功耗低,可长时间使用

•具有信息回馈输出

•可与飞行器通信

•生产成本低

•较强的信号发射功率

•锂电池驱动并可充电

•遥控距离超过100M

二、遥控器构成

无人机飞控开发平台配套的遥控器主要由STM32F103处理器、摇杆、开关

量输入、无线通信模块以及电源管理组成,如图2-2所示。

图2-2遥控器器件布局图

遥控器作为一个采集手动输入信号的装置,要求具备较为精准的采集方式和

采集电路,根据无人机飞控开发平台输入信号的分类,硬件设计上采用I/O口和

ADC模块采集输入信号。

如图2-3所示,给出了无人机飞控开发平台遥控器的输入信号的示意图。

图2-3遥控器输入信号示意图

第二节硬件设计

、摇杆电路设计

摇杆是重要的操作信号来源,无人机在飞行时,需要接收过程量的控制,以

获得对油门和姿态的操控,如图2-4所示为摇杆的实物图。

图2-4摇杆实物图

无人机飞控开发平台遥控器中,摇杆作为一个电位器存在,拨动摇杆会使摇

杆的阻值在0~5.1KQ之间变动,利用这一特性,通过单片机自带的ADC模块搭

建一个读取电路,即可读取摇杆在变动中的电压变化,变化的电压即可认为是操

控者的手动信号,这样即可完成对摇杆信号的采集,如图2-5所示。

ADC采集电压

33VT

-——VA__VA_Wv~~In

49.9Q5.1KQ49.9。

图2-5摇杆信号采集示意图

一个摇杆包含横向和纵向两个方向的电位器,实际电路中也包含两个方向的

电压采集电路,一般分别定义为油门和航向,如图2-6和图2-7所示分别为左侧、

右侧摇杆电路原理图。

C13

2.2nF

图2-6左侧摇杆电路原理图

C14

2.2nF

图2-7右侧摇杆电路原理图

二、I/O电路设计

遥控器不仅需要过程量,还需要开关量,用以控制某些需要开关控制的内容,

遥控器中可以采用I/O口实现开关信号的采集。

3V3nK1

丫~110KUNLOCK-PA5.

3V3

9fRie_110KSW_2_PB93S1__in,

SW_3

3V3

y~|10KSW3_A_PA63S2

~7^10KSW3BPA81>----------III'

SW_3

图2-8开关信号采集电路原理图

如图2-8所示,给出了开关信号采集电路图。其中SW_2为二段开关,SW_3

为三段开关,K1为解锁轻触开关。

在这个电路中,红字所处的位置即为单片机I/O口的输入点,以K1开关为

例解释读取I/O信号电路:

•当开关未按下时,UNL0CK_PA5处的电压为3.3V,单片机I/O口读取该引

脚处的电平为高电平,读取数据为1。

•当开关按下时,开关连接到地,电路导通,UNL0CK_PA5处的电压为0V,

单片机I/O口读取该引脚处的电平为低电平,读取数据为0。

通过读取I/O口引脚的高低电平信号,即可获取手动按键信息。其余I/O口

电平采集方法相同。

三、通信模块电路设计

0.1uC19

1

GND2+3.3V

PB5SPICt-3GND

4CE

PB131SP匚SCK5CSN

PB151SP匚MOSI6SCK

PB14二SP匚MISO7MOSI

nKblHQPA158MISO

IRQ

图2-9无线通信模块电路原理图

无人机飞控开发平台的飞控核心及遥控器板载了由NORDIC公司出产的

nRF24L01通信模块进行无线传输,通过SPI总线读取遥控器数据并传输给无人

机,由于直接采用了整体模块,故只需接入SPI总线即可,电路原理图如图2-9

所示。

第三节软件实现

一、I/O口实现

1初始化

遥控器上有总开关K1、左侧二段开关S1和右侧三段开关S2共三个开关,

如图2-8所示,可知三个开关的四个引脚分别接到STM32的PA5、PB9、PA6、

PA8,查看STM32F103数据手册可知GPIO引脚的外设时钟为APB2。

在remote.c文件中给出了初始化代码,函数名为key_init,该函数实现的具

体功能包括:

•使能外设时钟GPIOA,也就是让GPIOA工作;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

•选中I/O口PB,将工作模式设置成上拉输入,传输速率设置成50MHZ,

并调用库函数初始化引脚;

GPIO_lnitStructure.GPIO_Pin=GPIO_Pin_9;

GPIOJmtStructure.GPlO_Mode=GPlO_Mode_lPU;〃上拉输入使能

GPIO_lnitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPlO_Init(GPlOB,&GPIOJnitStructure);

•选中I/O口PA将工作模式设置成上拉输入,传输速率设置成50MHZ,

并调用库函数初始化引脚。

GPIOJnitStructure.GPIO_Pin=GPIO_Pin_5\GPIO_Pin_6\GPIO_Pin_8;

GPlOJnitStructure,GPIO_Mode=GPIO_ModeJPU;〃上拉输入使能

GPIO_InitStructure.GPIO_Speecl=GPIO_Speed_50MHz;

GPIOJnit(GPIOAf&GP10JnitStructure);

2扫描开关

在remote.c文件中给出了扫描开关的代码,函数名为key。该函数被中断处

理函数SysTick_Handler中的RC_Analy函数调用,每隔10ms扫描一次开关。

程序中定义了_st_Remote类型的结构体,其中成员变量AUX1是开关S1的

值,AUX2是开关S2的值。在设计中,遥控器上的每个控制量的输出范围统一

设定为1000-2000,即AUX1值为1000或2000,AUX2值为1000>1500或2000。

如表2-1所示,列出了代码中各引脚不同状态下AUX的取值。

表2-1AUX取值表

PA6PA8PB9AUX1AUX2

X义11000

XX02000

10X1000

11义1500

10X2000

左侧二段开关S1实现方法:

if(GPIOB->IDR&GPIO_Pin_9)

Remote.AUX1=1000;

else

Remote.AUX1-2000;

右侧二段开关S2实现方法:

if{(GPIOA->IDR&GPIO_Pin_8)==0&&(GPIOA->IDR&GPIO_Pm_6)){

Remote.AUX2=1000;

)

elseif(GP/OA->IDR&GPIO_Pin_8&&(GPIOA->IDR&GPIO_Pin_6)){

Remote.AUX2=1500;

1

elseif(GPIOA->IDR&GPIO_Pin_8&&(GPIOA->IDR&GPIO_Pin_6)==0){

Remote.AUX2=2000;

二、ADC数据采集

如图2-6和图2-7所示,摇杆电路中两个摇杆分别通过GPIO引脚PA1、PA2、

PBO、PB1与主控芯片相连,由STM32F103数据手册可知这四个I/O口均具有

ADC的复用功能(ADC1和ADC2共用GPIO口),使用的通道分别是1、2、8、

9,各通道具有4种采样模式:单次,连续,扫描,间断。

选用ADC1单通道搭配DMA进行采样。在这里简单介绍下ADC采样与

DMA的关系。

打个比方,一个MCU是个公司,老板就是主处理器,员工是外设,仓库就

是内存。从前仓库的东西都是老板管的,员工需要原料工作,就一个个报给老板,

老板去仓库里一个一个拿,员工做好的东西,一个个给老板,老板一个个放进仓

库里,老板很累,虽然老板是超人,也受不了越来越多的员工和单子,最后老板

雇了一个仓库保管员,它就是DMA,他专门负责入库和出库,只需要把出库和

入库计划给老板过目,老板说0K,就不管了,后面的入库和出库过程,员工只

需要和这个仓库保管员打交道就可以了。ADC是个高速设备,而且ADC采集到

的数据是不能直接用的,即使我们再小心的设计外围电路,测的离谱的数据总会

出现。那么通常来说是采集一批数据,然后进行处理,这个过程就是软件滤波。

DMA用到这里就很合适,让ADC高速采集,把数据填充到RAM中,填充一定

数量以后MCU再来使用。

综上所述,要想读取摇杆数据,在软件实现部分需要同时对ADC1和DMA

进行使能和配置。ADC1对应的DMA总线为DMA1,下面具体介绍如何使用

DMA进行ADC操作。

1使能ADC和DMA

由电路原理图可知,需要使能DMA1和GPIO引脚PAI,PA2、PBO、PB1

的ADC1功能。

将GPIO引脚配置成模拟输入模式,在作为ADC的输入时,必须使用模拟

输入。对于ADC通道,每个ADC通道对应一个GPIO引脚端口,GPIO的引脚

在设为模拟输入模式后可用于模拟电压的输入。

GPIOJnitStructure.GPIO_Mode=GPIO_Mode_AIN;

GPI0JmtStnicture.GPI0_Pin=GPI0_PinJ\GPI0_Pin_2;

GPIOJnit(GPIOAf&GPIOJnitStructure);

GPIOJnitStructure.GPlO_Mode=GPIO_Mode_AIN;

GPlO_InitStructure.GPIO_Pin=GPIO_Pin_0\GPIO_Pin_l;

GPlO_Init(GPIOB,&GPIO」向Structure);

在ADC_DMA_configure.c文件中,给出了ADC和DMA的使能代码,函数

名为ADCl_GPIO_Config,以下是具体功能实现:

RCC_AHBPeriphClockCmd(RCC_AHBP"iph_DMAl,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADCl\RCC_APB2Periph_GPIOA\RCC_A

PB2Periph_GPIOB,ENABLE);

2配置工作模式

在ADC_DMA_configure.c文件中,给出了工作模式的配置代码,函数名为

ADCl_Mode_Config,包括DMA配置及ADC配置。

(1)DMA配置

使用DMA1的通道1,数据从ADC外设的数据寄存器(ADCl_DR_Address)

转移到内存(ADC_ConvertedValue变量),内存外设地址都固定,每次传输的大

小为16位数据,使用DMA循环传输模式。

DMA传输的外设地址,也就是ADC1的地址为0x40012400+0x4。这个地

址可查STM32F103数据手册获得,如图2-10和图2-11所示。

0x40012800-0x40012BFFADC2

0x40012400-0x400127FFADC1

0x40012000-0x400123FFGPIO端口G

图2-10DMA传输的外设地址

地址偏移:0x4C

复位值:0x00000000

位31:16ADC2DATA[15:0]:ADC2转换的数据

-住ADC1中:双模式卜;这些位包含了ADC2转换的规则通道数据。见10.9:双ADC模式

•在ADC2中:不用这些位.

位15:0DATA[15:0]:规则转换的数据

这些位为只读,包含了规则通道的转换结果.数据是左或八对齐,如图25和图26所示。

图2-11ADC数据寄存器(ADC_DR)

(2)ADC1配置

ADC1需要将数据循环不断的传送给DMA,所以将ADC1的工作模式设置

成单通道的连续转换模式,按顺序从1、2、8、9通道中连续读取数据。

ADC1配置中需要用到的主要寄存器:

•ADC_CR1:控制寄存器,配置ADC1的工作模式

•ADC.DR:数据寄存器。AD转化结果都会被存在这个寄存器里面(有左

对齐和右对齐2种方式)

以下是ADC1配置的具体实现:

•通过ADC_CR1配置ADC1操作模式为独立模式。该模式下,双ADC

同步不工作,每个ADC接口独立工作;

ADC_InitStructure.ADC_Mode=ADC_Modeindependent;

•扫描模式多用于多通道采集,这里使用ADC1单通道采集,故而禁止扫

描模式;

ADC_InitStructure.ADC_ScanConvMode=ENABLE;

•开启连续转换模式,循环进行AD转换;

ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;

•触发转换的方式有两种,外部触发转换和软件转换,这里将操作模式设

置成连续转换模式就不再需要外部触发转换,故而禁止外部触发转换;

ADC_lnitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;

•由于STM32F103的ADC是12位逐次逼近型的模拟数字转换器,而转

换后的数据保存在16位数据寄存器ADC-DR中。所以,ADC_CR1寄

存器中的ALIGN位选择转换后数据储存的对齐方式,这里存在左对齐

和右对齐两种模式,左对齐得到的数值要除以16,比较麻烦,所以直接

采用右对齐方式;

ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;

•设置要转换的通道数目,4个引脚对应4个通道。然后调用库函数初始

化ADC1;

ADC_InitStructure.ADC_NbrOfChannel=4;

ADC_Init(ADCl,&ADC_InitStructure);

•配置ADC时钟。要特别注意ADC转换时间配置,由于ADC时钟频率

越高,转换速度越快,那是不是就把ADC的时钟频率设的越大越好呢?

其实不然,一般情况下时钟频率不能超过14MHz,,否则可能会不准;

enable

图2-12ADC时钟图

如图2-12所示,可知ADC预分频器的输入为高速外设时钟(PCLK2),使

用RCC_ADCCLKConfig()库函数来设置ADC预分频的分频值,PCLK2常用时

钟为72MHz,为提高精确度,需保证ADCCLK小于14MHz,所以这里选择

DCCLK为PCLK2的6分频,即12MHz。

ADC转换时间不仅与ADC的时钟有关,还与采样周期有关。每个ADC通

道可以设置为不同的采样周期。STM32F1O3的ADC采样时间计算公式为

T=采样周期+12.5个时钟周期

公式中的采样周期就是函数中配置的ADC_SampleTime,而后边加上的12.5

个周期为固定值,则ADC1通道11的转换时间为T=(55.5+12.5)xl/9=7.56us。

注意:在ADC_DMA_configure.c文件中定义了ADC_ConvertedValue变量,

要注意这个变量是由关键字volatile修饰的,volatile的作用是让编译器不要去优

化这个变量,这样每次用到这个变量时都要回到相应变量的内存中去取值,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论