单片机实际运用

一、绪论

1.1项目背景

1.1.1机器人技术概况

智能机器人已经在生活、工业、科学等许多领域被广泛的使用,目前从智能机器人所具备的水平将机器人智能化划分成了三个等级,第一种是高级智能机器人,第二种是初级智能机器人,和第三种是工业机器人。自从2000年后,在科学设计、智能制造、半导体材料技术、仿真模拟技术、工业加工技术等快速进步的前提下,机器人的智能技术将被推广应用到更多的领域中。

机器人的发展趋势:小型化和微型化小型化和微型化直是机器人发展的一个趋势。机器人小型化可以节约能源,缩小热变形误差,提高响应速度,拓宽应用领域等。利用微型机械概念设计和通过微加工技术生产的微型机器人已经在医疗、工业管道检测等领域得到应用。操作简单化目前市面上机器人的操作普遍比较复杂,有的甚至需要专门的技术人员才能操作,这大大阻碍了机器人的应用和推广。例如,农业机器人的使用对象是文化水平相对较低的农民,因此这类机器人就需要满足操作简单的要求。群体化,由于机器人的应用领域和范围正在不断扩展,单个机器人往往难以完成较为复杂的任务,人们通过设计多个机器人间的相互协作来完成预定的任务,这就是机器人的群体化。它使机器人组成了一个类似人类的机器人 会。机器人群体系统可用于自动化生产线中物料的组织运输、生产加工等环节,以及环境监测、军事侦察等方面。

1.1.2国内外的发展状况

国外现状:例如星战BB8的首现荧屏,这个头不动身体动的可爱球形机器人。类似球形机器人在国外应用也十分广泛,具有高机动性能的两栖机器人在两栖环境中进行潜航是一个巨大的挑战,包括在崎岖的地形上爬行、水下机动、陆水之间的发射和着陆运动等。为了应对这样的挑战,设计了一种带有滞后多矢量喷水复合驱动机构( LMWCDM )的微型仿生两栖球形机器人( AS-Robot )。该类机器人的设计较为复杂,首先,建立了爬行步态的简化运动学模型,并采用在线调整机构对爬行步态进行调整,使机器人能够更稳定地爬上斜坡。然后,基于水下动态模型,提出了一种实时动态推力矢量分配策略,利用4种并行PID算法计算得到的期望力和力矩来产生喷水推力和关节角。最后,通过一系列实验对陆上运动和水下运动的性能进行了评价。进一步,在野外环境下进行了各种地形爬行、发射和着陆等室外运动实验。结果表明,该机器人样机具有较高的运动性能,使其在两栖环境下的灾害救援、侦察和资源勘探等方面得到了广泛使用。

国内现状:针对球形机器人动力学模型不准确、参数不确定的问题,设计了一种基于李雅普诺夫(Lyapunov)方法的模型参考自适应控制(MRAC)算法。首先,搭建了基于全向轮驱动的球形机器人实验平台,并利用拉格朗日方程进行动力学建模。然后,为解决球形机器人运动过程中参数易受干扰的问题,采用MRAC进行运动控制,其中自适应控制率利用李雅普诺夫方法进行设计。最后,通过在线仿真和实测实验,结果表明MRAC具有良好的控制效果,在运动参数受到干扰时仍有较好的控制能力。

1.1.3机器人技术发展中的问题

(1)尖端技术尚未实现全球领先机器人是多学科、高科技交叉融合的产物,作为工业后发国,中国在产业基础上相对较弱。在机器人产业中,上游核心零部件直接影响机器人性能,且占本体成本70%以上,但目前我国核心零部件仍依赖进口。同时,我国尖端技术尚未实现全球领先,与国外成熟的公司相比,依然有不小差距,高端市场显著缺失[3]。

(2)关键技术待突破,B端市场尚未明确应用方向。目前,国内将智能机器人定位为满足人类生产和生活质量提高的基础关键设备,部分人工智能技术实现国际领先水平,但从市场需求的角度出发,现有产品尚不能满足用户智能化需求,人机交互、柔顺控制、功能仿生、智能感知等关键技术严重制约服务机器人发展[3]。

(3)产品价格高、功能安全与信息安全难保证国内可量产的智能机器人企业数量较少,由于难以规模化生产,产品成本难降低,而C端市场对产品价格十分敏感,高价格门槛使得机器人难以进入大众化消费时代[3]。

(4)行业标准缺失,产品良莠不齐机器人产业的发展,必须具备与之相匹配的标准体系。国内已有的标准以强制的安全认证为主,缺乏产品功能性认证,使得部分地方及企业标准执行不到位;同时,行业标准处罚力度不够,围标代价不高,直接导致部分企业产品良莠不齐。

1.2球形机器人应用场景

球形机器人是一种整体为球形的、内置电路及传感器的机器人,其外壳即为轮子,使机器人能够全方向的移动,不仅灵敏度高,而且速度快,转弯半径为零,能够在复杂和狭窄的空间内穿梭自如。

1.2.1救援抢险

在自然灾害、人为灾害面前,人类显得很渺小,危险处处存在,机器人的存在,可以使危险大大降低。近几年自然灾害频发,比如地震、洪涝、滑坡、森林火灾等。球形机器人的应用场景比较广泛,可以在地震时利用其自身优异的通过性,布设小型基站、灾区救援、危房探测、废墟消杀等。相比其他类型机器人,球形机器人可以利用自身体积,来通过路况障碍,体积越大,通过性越强。

1.2.2水路两栖

球形机器人的球形外壳之外,是没有线路或机械结构的,在完全闭合之后,是可以做到防水的,所以球形机器人是可以在水面或海面上进行漂浮,并且可在沙滩上登陆到地面,这样即可做到水路两栖。不仅能在沿海作为一些水质探测、微生物检测、水面救援、水面监控、滩涂抢险等事项。

1.2.3草地、沙漠、沼泽

近几年草原火灾、森林火灾事件频发,可以利用球形机器人装载灭火装置,对自然火灾或植被进行灭火,可以为国家挽回更多的自然财产。除此之外,也可以作为森林巡逻机器人、草原植被检测、沙漠地质检测、沼泽救援等事项。在质地软、地形复杂、地面广阔等场景,球形机器人拥有其他类型机器人不可以替代的优势。

1.3整体设计方案

该球形机器人的整体方案为使用亚克力球作为机器人的外壳,也是使机器人移动的“轮子”。内部防止该机器人的电池、DC-DC电源降压模块、MPU6050陀螺仪传感器、STM32单片机最小系统板、OLED液晶显示屏、舵机、负重块、电机驱动、直流减速电机等电控部分。

亚克力是一种透明的有机塑料,是一种可塑性很高的高分子材料,它的透明性非常好,化学性能稳定,并且耐候性,很容易加工、染色,不仅外观优美,还可以制作成板材、管材、球壳等形状,在广告业、建筑业中有着很广泛的应用。它又叫PMMA或有机玻璃,是一种丙烯酸塑料,化学名称为聚甲基丙烯酸甲酯。使用亚克力材料制作而成的球是一种透明、无杂质、可对半分开或合并的一种球壳体,体积大小拥有非常多的型 。使用亚克力球做为外壳,不仅外壳透明,能看清里面电控部分运行的状况,还能使用无线串口等通信工具正常工作。如果使用金属球做为外壳,无线通信模块的性能与通信质量,将大打折扣。

电池是整个机器人的能源供应及存储的位置,在该机器人中,可以使用镍氢电池或航模电池,亦可使用18650型 的锂电池,相较于航模电池而言,18650锂电池有价格便宜、容量大、易固定等优点。

DC-DC电源降压模块采用mini降压模块,不仅效率高,可达96%,电流输出能力为3A,而且电压可以进行调节。该机器人使用了两个降压模块,为整个系统提供稳定的电压。

OLED屏采用了0.96寸的128*64点阵的IIC通信方式的模块,为整个系统提供一个显示参数状态的信息板。

MPU6050使用了GY-521模块,该模块集成了MPU6050陀螺仪芯片、稳压芯片、滤波电路等,方便使用。由于MPU6050传感器芯片很小,不容易焊接,而且若自己焊接的话,很容易焊不平,故使用了成品的模块,更能稳定的采集数据。

机器人的移动,使用了直流减速电机和L298N驱动,从而用单片机控制机器人进行位于,而自身的平衡则使用了舵机带动配重块,保持自身平衡。

主控系统采用了STM32F103单片机最小系统板,为整个机器人提供控制核心,不仅采集传感器的数据、解算、滤波,还输出PWM控制舵机和电机,最后通过无线串口模块和OLED屏模块获取控制指令并显示重要参数信息。

二、电机与驱动器及外围电路

球形机器人的移动是依靠两个电机的工作而运动的,所以电机的选型,也格外重要。不用类型的电机,则需要使用不用电机驱动,才能用单片机控制电机正常工作。电机和电机驱动的种类繁多,通过以下内容对选型和方案进行介绍。

2.1电机的选型

底盘上的电机是整个球形机器人的移动运行设备,可以使球形机器人进行移动的动作,是球形机器人的运动保障。

电动机变压器(别称:"马达")是指一种专门根据机械电磁感应作用原理而进行各种电能相互转换放大和长距离传输变换的精密电磁设备。电动机在工业电路系统中是用大写字母M(老标准D)来分别表示,其电动机主要工作功能即是能产生电能驱动输出扭矩,用于拖动电气设备或操纵各类小型机器,如字母G所示,其发电机主要作用功能则是可将部分机械运动能自动转换成部分电能。

电机转动定子时的转子同步的转子速度始终只会是比驱动定子同步旋转线圈的磁场所产生的电机定子的同步的转动的速度要来得稍为更低。同步减速电机的转子绕组的同步转子速度并且不受电机负荷速度变化的其它任何原因影响,总是都能够自动保持与其的同步电机运行速度。

本电机设计中用到的都是三相直流减速电机。直流励磁发电机的发电机工作原理主要是为了将电枢线圈绕组中形成的交流电势与换向器与电刷上的换向器动作力矩相结合,从而将电刷从电刷末端抽出,从而变成直流电位。根据牛顿右手定律(磁感线对着一只手掌,大拇指对着两根导线,其余的四根手指都对着两根导线上的感应电动势)

综上所述,有刷直流减速电机是最合适,性价比是最高的。

2.1.1有刷直流减速电机配件设计

本设计使用了有刷直流减速电机作为驱动机器人的动力,我们需要设计一些结构,使得电机与亚克力球壳连接起来。首先,我们需要设计电机及模块的底板,该底板采用黑色玻纤板加工而成,然后安装上单片机、电机驱动、转接PCB板和电机支架。该直流有刷减速电机使用了25GB-370电机,12V为正常工作电压,转速除了使用了齿轮减速器之外,还可以通过PWM信 控制电机驱动器来对电机进行调速。

由于电机的输出轴为4mm的D型轴,常用的联轴器为黄铜六边形联轴器,而联轴器与亚克力球壳无法相连,故需设计一个转接件,该转接件通过三维建模软件设计,由3D打印机进行制作,最后将球壳切割出凹槽,待后期连接时进行可以进行榫卯。连接件图形,见下图2-1。

图2-1 3D打印连接件

2.2舵机

舵机也是一种直流减速电机,只是体积小、转速慢、旋转角度有90°、180°、270°和360°之分,转矩大小也是其性能最重要的参数之一。本次设计球形机器人所用的舵机,主要是应用于维持机器人左右方向的平衡,控制重心所用。该类型舵机是由单片机发出的PWM信 来进行控制的,通过改变PWM的占空比来控制旋转角度,舵机的转轴上安装着金属配重块,在机器人维持平衡的过程中,可以进行左右摇摆,来改变机器人重心位置,从而维持机器人自身的平衡。

2.3 电机驱动硬件设计

电机驱动是驱动和控制直流减速电机正常运行的重要部分,除了给直流减速电机提供大的输出电流,还能提供可靠的控制和良好的安全保护。电机驱动芯片可以选择的型 和种类特别多,一般实验室内常用的有L293N、L293D、L9110等等,本课题直接选用最常使用的模块,L298N电机驱动模块,该模块使用方法简单,驱动电流大,带有电路保护功能。

L298N芯片是一种给直流电机使用的输入电压高、输出电流大的直流减速电机驱动芯片,正常工作时的电压较高,该芯片内部含有两个H型全桥式驱动器,不仅可以可用于驱动直流电机,还能驱动步进电机。采用TTL逻辑电平信 控制,能直接连接到单片机接口。如图2-1所示,为芯片的接脚原理图。

图2-2 L298N芯片引脚接线图

直流电机没有正负极,但为了方便设计,我们模拟电机某同一端为正,另一端为负极。该设计将芯片的IN1、IN2、IN3、IN4接脚接到STM32F103单片机的PB10、PB11、PC13、PC14接口,ENA和ENB引脚接STM32F103单片机的PB1引脚。芯片的OUT1和OUT2输出口接到左电机正负电极,OUT3和OUT4接到右电机正负电极。电机需要2S-3S的锂电池供电,或2节-3节18650锂电池供电,即需要7.4V-11.1V供电,所以需要外接一个电池盒用来放置电池。

当STM32F103单片机的PB1引脚控制L298N的ENA引脚,信 为高电平时,L298N电机驱动左电机输出电路开关打开,STM32F103单片机的PB10引脚输出信 高电平控制IN1,STM32F103单片机的PB11引脚输出信 低电平控制IN2,则L298N驱动芯片的OUT1口输出一个该芯片的VCC高电平电压,OUT2输出低电平0V,这时左电机的旋转方向为正转。同理,STM32F103单片机的PB1引脚输出信 高电平来控制L298N芯片的ENB引脚,STM32F103单片机的PC13引脚输出信 低电平来控制IN3引脚,STM32F103单片机的PC14信 输出高电平来控制IN4引脚,则右电机旋转的方向为反转。因为机器人的左右两边电机是镜像安装的,所以这样机器人便能前进了。在程序中,可以这样定义:

(1)控制左边直流电机旋转方向正转:{PB1 = 1 ; PB10 = 1 ;  PB11 = 0 }

(2)控制左边直流电机旋转方向停转:{ PB1 = 0 ;  PB10 = 0 ;  PB11 = 0 }

(3)控制左边直流电机旋转方向反转:{ PB1 = 1 ;  PB10 = 0 ;  PB11 = 1 }

(4)控制右边直流电机旋转方向正转:{ PB1 = 1 ;  PC13 = 1 ;  PC14 = 0 }

(5)控制右边直流电机旋转方向停转:{ PB1 = 0 ;  PC13 = 0 ;  PC14 = 0 }

(6)控制右边直流电机旋转方向反转:{ PB1 = 1 ;  PC13 = 0 ;  PC14 = 1 }

(7)控制左边直流电机旋转方向刹车:{ PB1 = 1 ;  PB10 = 1 ;  PB11 = 1 }

(8)控制右边直流电机旋转方向刹车:{ PB1 = 1 ;  PC13 = 1 ;  PC14 = 1 }

三、传感器及各类模块

3.1 MPU6050陀螺仪模块

MPU6050是一款融合了6轴运动处理的陀螺仪传感器。该陀螺仪传感器可以使用IIC或SPI通信方式进行通信,如果加入了三轴电子罗盘传感器,则该传感器模块可以提供完整的9轴运动融合数据。MPU6050传感器内部集成温度补偿硬件,并且提供了可编程的加速器感知测量的范围,还能程控设计角速度的测量精度和范围。测量之后,可以以最高40KHz的频率与单片机进行通信,这样便可以让单片机控制的输出设备进行快速反应。

MPU6050陀螺仪模块主要应用在体感游戏手柄、电子稳定器、导航、平衡车、广告屏幕、智能手机、平板电脑、可携带的便携式设备、智能手表、游戏机、无人机等产品中。由于其拥有稳定的性能、极高的性价比、较低的价格等优点,很受电子爱好者的欢迎。

MPU6050使用了GY-521模块,该模块集成了MPU6050陀螺仪芯片、稳压芯片、滤波电路等,方便使用。MPU6050模块可以使用5V或3.3V供电,提供IIC通信接口,并且将MPU6050传感器的外围电路全部集成在一块很小的PCB板上,可以省去使用者设计电路的麻烦,并且由于MPU6050传感器芯片很小,不容易焊接,而且若自己焊接的话,很容易焊不平,故使用了成品的模块,更能稳定的采集数据。

3.2 OLED屏幕模块

OLED(Organic Light-Emitting Diode),是一种有机发光二极管屏,显示图案的时候,完全是靠发光二极管产生的颜色,显示黑色的时候,发光二极管完全熄灭,即可显示出黑色。OLED屏相较于LED屏,有更高的对比度和色域,但是屏亮度不如LED屏亮。OLED屏,是近几年手机、电脑、电子产品中使用最热门的模块。

本次设计的球形机器人则使用了IIC通信方式的0.96寸OLED屏,用来显示一些重要参数,以便实时对机器人的性能指标得到掌控。该模块是由128*64点阵组成,可以显示8个汉字,分为4行。其供电电压为3.3V~5.0V的宽范围供电,可以适配很多用途和场景。IIC通信模式的OLED屏,使用起来也很方便,通过4个引脚即可显示内容,4个引脚分别为VCC、GND、SCL、SDA,可以使用最少的单片机I/O引脚来达到完美的显示效果。OLED屏的初始化代码如下图所示。

图3-1 OLED初始化代码

3.3电源模块

电源模块使用了mini版DC-DC降压模块,该DC-DC电源降压模块使用了集成降压芯片,该芯片可以将输入5V-24V,降压输出3.3V、5V、9V等几个可选的输出电压,但是需要注意的是输出电压要低于输入电压才能正常工作。Mini降压芯片不仅效率高,可达96%,电流输出能力也很高,可达3A,最重要的是输出电压可以进行调节,这样,该机器人使用了两个降压模块,为整个系统提供稳定的电压。一个降压模块为整个电路提供5V电源,为多个模块提供电源,其中也为单片机供电,之后通过单片机最小系统板上集成的LM1117-3.3V稳压模块降压之后,为STM32F103单片机供电,也为OLED屏模块提供3.3V电源。

另一个电源模块,为舵机提供6V电源供电,而且该舵机的扭矩较大,所需电流也大,如果和单片机共同使用一个降压模块,则舵机在运动时会对单片机产生很大的电流、电压干扰,导致单片机供电不足,所以整个机器人使用了两个降压模块。

3.4无线串口模块

本次设计使用的无线串口模块是2.4GHz的无线通信模块,该模块可以使用AT指令进行配置,可配置的参数很多,例如名次、信 强度、波特率等参数,而且可以一对多或多对一进行通信,很适合为球形机器人做为通信装置。

通信模块加入了转接板,转接板上有3.3V的稳压芯片SPX3819,并且预留了三极管驱动电路,面对STM32等I/O口内阻较大的单片机,使用三极管驱动电路可以增强通信能力,为整个机器人提供更稳定的通信。

四、单片机控制系统

4.1单片机简介

单片机也被称为单片微控器,属于一种集成式电路芯片。在单片机中主要包含CPU、只读存储器ROM和随机存储器RAM等,多样化数据采集与控制系统能够让单片机完成各项复杂的运算,无论是对运算符 进行控制,还是对系统下达运算指令都能通过单片机完成。 由此可见,单片机凭借着强大的数据处理技术和计算功能可以在智能电子设备中充分应用。简单地说,单片机就是一块芯片,这块芯片组成了一个系统,通过集成电路技术的应用,将数据运算与处理能力集成到芯片中,实现对数据的高速化处理。

4.2单片机选型

温湿度传感器的通信方式为单总线的通讯方式,所有的通信过程都由单片机主机来发起。由于通信的发起必须由单片机来完成,所以必然需要有一个启动信

单片机的型 与生产厂家众多,而我们日常实验室使用的单片机多为8位和32位单片机。包括80C51内核的STC公司的STC89、STC12等系列单片机、Atmel公司AT89系列单片机,ARM内核的ST公司的STM32系列,TI公司的TM4系列等。除此之外还有Arduino系列单片机,MSP430系列,AVR系列等。由于种类繁多,硬件和编程软件各不相同,故在选型上需要综合考虑各种因素。

该设计采用了STM32F103系列单片机,由于相较于TI公司的单片机,STM32价格便宜,采购容易,且学习资料众多,整体生态更为完善,可以参考大量的设计资料,对设计球形机器人拥有先天优势。

STC公司的C51系列单片机虽然价格比STM32更低,但是其为8位单片机,整体硬件资源较少、速度低。例如,UART串口数量、IIC、ADC精度与数量、定时器数量及片内运行速度均比不上STM32系列单片机。

故根据本次球形机器人设计的方案来选择,本人选择了STM32系列单片机,不仅单片机硬件资源可以满足需求,而且能预留更多的开放性功能。

4.3 STM32单片机介绍

4.3.1单片机的性能与硬件资源

本次设计使用的STM32F103RCT6系列单片机,该单片机是基于ARM-Cortex M3内核的32位单片机,是意法半导体公司推出比较早的32位单片机,而且在国内很受DIY爱好者、学生、老师、工程师的青睐,主要是由于其有丰富的硬件资源和不俗的性能。

STM32F103RCT6单片机的CPU是32位的共有64个引脚,ROM的类型是使用了256KB的FLASH存储,CPU的最大主频可达72MHz,正常工作的电压最小是2V,最高可以支持3.6V,拥有较宽的工作电压。RAM的大小是48KB,这个大小可以让单片机运行的时候拥有更大的速度和容量。该单片机还拥有51个I/O引脚,这就意味着该单片机的硬件资源、可接外设种类丰富、功能强大。比如A/D功能、D/A功能、PWM功能、LCD功能、UART功能、SPI功能、IIC功能、USB功能等等,以下将做简单介绍。

A/D功能,该单片机有16个通道有ADC功能,每个通道都是12bit的精度,这就意味着可以采集到的数据是0~4095这个范围之间,其精度可算是同水平的单片机种的佼佼者。主要引脚有PC0、PC1、PC2、PC3等共16个引脚。

D/A功能,DAC是将数字量转换成模拟量,共有2个通道,每个通道也都是12bit的精度。假如单片机使用3.3V供电,那该系列单片机的12bit精度,就是可以控制引脚每次变化约0.8mV。

PWM功能,PWM是控制电机、舵机、遥控器等外设的重要功能,该单片机有18个通道,可以输出高精度的PWM信 。

UART功能,UART是通用异步收发传输器,是单片机与单片机、单片机与PC电脑、单片机与外设等最常用的通信方式。不仅性能稳定,而且速度较快,重要的是操作人员读取数据非常方便。该型 的单片机有5个UART,其中有3个是USART。

SPI功能,SPI是一种同步串行总线通信方式,接线方式有很多种,接线引脚数量也不同,但是其通信速度比UART要快很多,一般应用在存储器、ADC、LED等模块上,也是常用的通信方式,该系列单片机的SPI功能有3个,足以应对多种外设。

IIC功能,IIC是一种集成电路的总线协议,由飞利浦公司发明,该通信协议有软件IIC和硬件IIC,但是两种通信协议都是大同小异。该总线形式可以挂载很多IIC外设,而且只需要两根线即可,一根时钟线一根数据线。STM32F103RCT6单片机拥有2个硬件IIC,如果使用软件IIC,则可以使用更多。

除了以上功能,该单片机还有1个USB驱动,1个CAN通信等等常用的功能。而单片机最基本的定时器、计时器、看门狗、中断等功能也是应有尽有。

4.3.2单片机最小系统

本次设计的球形机器人,使用了成品的STM32F103最小系统板。使用最小系统板作为主要的控制系统有很多优点,例如,可以在不改动机械结构和其他外围模块电路的时候,可以更换其他的控制器,而且在该单片机出现问题时,可以快速更换同型 的单片机最小系统板。

该单片机最小系统板是搭载了STM32F103RCT6单片机,设计尺寸为56.5*62.3mm,整体较小,也包括了很多硬件资源和接口电路,例如:8MHz的晶振提供的时钟电路、复位电路、SPI接口的W25Q16数据FLASH存储器、LM1117-3.3芯片提供的DC-DC稳压电路、USB接口电路、nRF24L01接口、LED指示灯、OLED/TFT屏接口、JTAG/SWD调试下载接口、UART接口和所有I/O引脚接口。

4.4单片机编程

本次设计的球形机器人使用了Keil 5作为编译器,为STM32单片机提供编程环境。该软件界面友好,使用方便,不仅支持全系列ARM内核的单片机编程,还支持80C51内核单片机编程,是一款被广泛应用的编程开发软件。

球形机器人使用的硬件外设较多,编写程序的时候,需要一个外设一个外设的调试。第一步,使用STM32单片机控制L298N驱动器,使两个直流减速电机可以进行正反转的工作并且加入舵机,使舵机能在PWM信 的控制下,能进行旋转。第二步加入串口代码和无线串口外设,可以使用PC端的软件对电机发出控制指令,以便离线控制。第三步,调试MPU6050加速度计传感器,对球形机器人的姿态进行采集,使用MPU6050会有很多数据传输到单片机,我们需要使用一些滤波算法和解算算法对数据进行处理,将处理好之后的数据,使用PID控制算法,对舵机、两个电机进行控制。第四步,加入OLED屏,对需要实时显示的参数进行显示。第五步,对整体代码进行优化和控制设计,例如让机器人前进后退等。最后,可以加入一些指定的运动动作或者外设。

4.5 PID算法

PID控制算法是工业、电子、机器人、航空航天最常用的算法之一。该算法是根据输出系统发反馈误差值来调节系统的输出的控制形式。包含比例控制(P)、积分控制(I)和微分控制(D)三种控制,使用的时候可以是比例-微分控制、比例控制、比例-积分-微分控制等几种组合的方法,使用场景不同,用的形式也不同。以下是部分PID控制算法的代码。

int32_t PID_M1_PosLocCalc(float NextPoint)

{

  register float  iError,dError;

   iError = M1PID.SetPoint – NextPoint;// 偏差

   M1PID.SumError += iError;                  // 积分

   if(M1PID.SumError > 3300.0)               //积分限幅

   M1PID.SumError = 3300.0;

   else if(M1PID.SumError < -3300.0)

   M1PID.SumError = -3300.0;  

   dError = iError – M1PID.LastError;     // 当前微分

   M1PID.LastError = iError;

   return(int32_t)(  M1PID.Proportion * iError          // 比例项

                     + M1PID.Integral   * M1PID.SumError // 积分项

                     + M1PID.Derivative * dError);       // 微分项

}

PID控制算法的数学模型是以下这个连续控制的结构形式:

                      (4)

其中左边u(t)为控制系统的输出,Kp、Ki、Kd三个参数分别为比例系数、积分系数和微分系数,e(t)=y(r)-y(t)为期望值与输出量的输出误差。而对于使用单片机进行控制的数字控制系统,可将上述的PID控制器的数学模型进行离散化,得到离散之后的PID的数学模型结构形式:

                         (4)

其中,u(t)为整个控制系统所有的误差值累加之和,Δe(t)=e(t)-e(t-1),等效为微分运算。当期望值在相邻的采样周期保持不变时,y(r)=y(r-1),Δe(t)=-y(t)+y(t-1),Δe(t) 即为系统输出的变化量。

4.5 PID算法

卡尔曼滤波(Kalman filtering)一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。Kalman Filter是一个高效的递归滤波器,它可以实现从一系列的噪声测量中,估计动态系统的状态。

接下来讨论kalman filter algorithm 的5个经典核心公式:

第一步,预测现在的状态:

式(4-3)中 X (k | k )是利用上一状态预测的结果, X (k | k )是上一时刻的最优预测值,U(k)为现在状态的控制量,如果没有,可以为0。

                                                  (4)

经过公式(4-3)后系统结果已经更新了,对应于 X (k | k )的 covariance 还没有更新,用P 表示covariance,

                                                  (4)

式(4-4)中P(k | k )是 X (k | k )对应的 covariance,P(k | k )是 X (k | k )

对应的 covariance,AT 是 A的转置矩阵。Q是系统的噪声,(4-3)和(4-4)式便是kalman filter中的前两个公式。对系统的预测。有了系统的预测,接下来就要参考测量值进行估计了。

                   (4)

由上面分析可知为了实现递归,每次的g k 都是实时更新的。

                              (4)

                                             (4)

这样每次P(k | k)和k (k) g 都需要前一时刻的值来更新,递归的估计下去。(4-3)~(4-7)式便是kalman filter algorithm 的五条核心公式。

本次设计采用的卡尔曼滤波算法便是基于以上5条核心公式来实现的。以下便是使用单片机实现的代码。

void Kalman_Filter_X(float Accel,float Gyro) //卡尔曼函数     

{

   //步骤一,先验估计

   //公式:X(k|k-1) = AX(k-1|k-1) + BU(k)

   //X = (Angle,Q_bias)

   //A(1,1) = 1,A(1,2) = -dt

   //A(2,1) = 0,A(2,2) = 1

   Angle_X_Final += (Gyro – Q_bias) * dt; //状态方程,角度值等于上次最优角度加角速度减零漂后积分

   //步骤二,计算过程协方差矩阵的微分矩阵

   //公式:P(k|k-1)=AP(k-1|k-1)A^T + Q

   //Q(1,1) = cov(Angle,Angle) Q(1,2) = cov(Q_bias,Angle)

   //Q(2,1) = cov(Angle,Q_bias)    Q(2,2) = cov(Q_bias,Q_bias)

   P[0]= Q_angle – PP[0][1] – PP[1][0];

   P[1]= -PP[1][1];// 先验估计误差协方差

   P[2]= -PP[1][1];

   P[3]= Q_gyro;

   PP[0][0] += P[0] * dt;  

   PP[0][1] += P[1] * dt;  

   PP[1][0] += P[2] * dt;

   PP[1][1] += P[3] * dt;  

   //步骤三,计算卡尔曼增益

   //公式:Kg(k)= P(k|k-1)H^T/(HP(k|k-1)H^T+R)

   //Kg = (K_0,K_1) 对应Angle,Q_bias增益

   //H = (1,0)   可由z=HX+v求出z:Accel

   PCt_0 = C_0 * PP[0][0];

   PCt_1 = C_0 * PP[1][0];

   E = R_angle + C_0 * PCt_0;

   K_0 = PCt_0 / E;

   K_1 = PCt_1 / E;

   //步骤四,后验估计误差协方差

   //公式:P(k|k)=(I-Kg(k)H)P(k|k-1)

   //也可写为:P(k|k)=P(k|k-1)-Kg(k)HP(k|k-1)

   t_0 = PCt_0;

   t_1 = C_0 * PP[0][1];

   PP[0][0] -= K_0 * t_0;     

   PP[0][1] -= K_0 * t_1;

   PP[1][0] -= K_1 * t_0;

   PP[1][1] -= K_1 * t_1;

   //步骤五,计算最优角速度值

   //公式:X(k|k)= X(k|k-1)+Kg(k)(Z(k)-X(k|k-1))

   Angle_err = Accel – Angle_X_Final; //Z(k)先验估计 计算角度偏差

   Angle_X_Final += K_0 * Angle_err;  //后验估计,给出最优估计值

   Q_bias        += K_1 * Angle_err;  //后验估计,跟新最优估计值偏差

   Gyro_x         = Gyro – Q_bias;

}

参考文献

[1]孙金英,任明岩.步进电机的速度控制及运动规划[J].今日电子, 2007.

[2]张瑶.变电站直流系统交流窜入的监测[D].华北电力大学, 2018.

[3]谭畅.引导未来消费与大众审美的智能产品设计研究[D].吉林大学, 2020.

[4]杨欢.镭216酒吧空间设计方案[D].东南大学, 2018.

[5]弓格日勒图.基于单片机的电台异常发射保护器软件设计[J].民航内蒙古空管分局, 2016.

[6]徐洋.探讨单片机在智能电子设备中的应用[J].山东工业技术, 2019.

[7]李航,宋春华,罗胜彬,韦兴平,刘小利.机器人的研究现状及其发展趋势[J].微特电机, 2013.

[8]迟兴,战强.水陆两栖球形机器人辅助鳍的水动力特性[J].中南大学学 (自然科学版), 2021.

[9]王晴.应用单片机进行多自由度机械臂控制系统设计[J].邢台职业技术学院学 , 2018.

[10]刘曦恺.智能机器人的研究现状及其发展趋势研究[J].科技风, 2015.

[11]黄新宝.一种农机用机械夹持装置设计分析[J].齐齐哈尔工程学院, 2020.

[12]郭蓉蓉.明渠便携式超声波测流技术的研究[D].太原理工大学, 2017.

[13]隋贤圣.基于移动终端的加工单元监控系统研究[D].长春理工大学, 2020.

[14]王理想.自平衡双轴旋耕水田平整机设计与试验研究[D].扬州大学, 2020.

[15]卢月品,刘晨曦. 2019年中国机器人产业发展形势[J].互联 经济, 2019.

[16]唐健杰,王鑫.基于PI-PD控制器的四旋翼姿态控制[J].桂林电子科技大学计算机科学与工程学院,广西壮族自治区桂林市5, 2014.

[17]刘宝志.步进电机的精确控制方法研究[D].山东大学, 2010.

[18]杨宇祥,熊智平,邵伟,高瑞鹏.“单片机原理与应用”教学中学生应用能力的培养[J].教育现代化, 2020.

[19]罗瑞情.探讨单片机在智能电子设备中的应用[J].漯河技师学院, 2021.

[20]陈骏.基于超声波测距与控制的运动实验平台研发[D].南京邮电大学, 2014.

[21]汪海洋.全向助行拐杖机器人研究[D].沈阳工业大学, 2015.

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月10日
下一篇 2022年4月10日

相关推荐