资讯详情

单片机实际运用

一、绪论

1.1项目背景

在过去事故现场的救援工作中,救援人员发现,由于房屋倒塌,地面形成了几个不同大小的裂缝和洞。 此时,救援人员无法进行救援任务,因为他们无法检测内部情况。盲目地撬开洞口进行搜索救援将会浪费大量的救援时间以及人力物力甚至造成二次伤害。 因此,在救援现场急切需要小型机器人辅助救援侦察工作,快速搜查并定位被困者,提高救援效率。球形机器人通常有全封闭的球形外壳,包括控制系统、动力系统、传感器等。与传统机器人相比,球形机器人具有体积小、操作灵活、不受地形限制的特点,在房屋倒塌后形成的各种复杂裂缝和孔中可以自由移动,在救援通道开放前,可以通过裂缝或孔洞通道检测被困信息,协助救援人员制定计划,有效执行救援任务。同时,球形机器人可配备自动跟踪、智能避障和摇杆控制,以增强辅助救援能力。通过相机收集球形机器人周围的环境信息,通过5获得图形信息. 8G模块传输给用户终端,帮助救灾人员探测受灾人员的位置,大大节省救援时间,努力有效利用黄金救援时间 。 球形机器人可以帮助救援人员在救援现场完成搜索探测任务,大大提高救援效率。

1.1.1机器人技术概况

智能机器人已广泛应用于生活、工业、科学等领域。目前,机器人智能从智能机器人的水平分为三个层次:一是先进的智能机器人,二是初级智能机器人,三是工业机器人。自2000年以来,机器人的智能技术将在科学设计、智能制造、半导体材料技术、模拟技术、工业加工技术等方面得到推广和应用。

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

1.1.国内外发展状况

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

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

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

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

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

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

(4)缺乏行业标准,产品质量参差不齐。机器人行业的发展必须有一个匹配的标准体系。现有国内标准主要是强制性安全认证,缺乏产品功能认证,导致部分地方和企业标准执行不到位;同时,行业标准处罚不足,围标成本低,直接导致部分企业产品质量参差不齐。

1.球形机器人应用场景

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

1.2.1救援抢险

面对自然灾害和人为灾害,人类似乎很小,危险无处不在。机器人的存在可以大大降低危险。近年来,地震、洪水、滑坡、森林火灾等自然灾害频发。球形机器人应用广泛,可利用其优异的通过性,在地震中布置小型基站、灾区救援、危房探测、废墟消灭等。与其他类型的机器人相比,球形机器人可以利用自己的体积通过路况障碍。体积越大,通过性越强。

1.2.2水路两栖

球形机器人器人的球形外壳外,没有线路或机械结构。完全关闭后,可以防水。因此,球形机器人可以漂浮在水面或海面上,并在海滩上登陆地面,使水路两栖。它不仅可以用作沿海水质检测、微生物检测、水面救援、水面监测、滩涂救援等事项。

1.2.草地、沙漠、沼泽

近年来,草原火灾和森林火灾事件频繁发生。球形机器人可以装载灭火装置,灭火自然火灾或植被,为国家恢复更多的自然财产。此外,它还可用作森林巡逻机器人、草原植被检测、沙漠地质检测、沼泽救援等事项。球形机器人在质地柔软、地形复杂、地面广阔等场景中具有其他类型机器人无法替代的优势。

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‑1)

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

                         (4‑2)

其中,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 −1)是利用上一状态预测的结果, X (k −1| k −1)是上一时刻的最优预测值,U(k)为现在状态的控制量,如果没有,可以为0。

                                                  (4‑3)

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

                                                  (4‑4)

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

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

                   (4‑5)

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

                              (4‑6)

                                             (4‑7)

这样每次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.

标签: 温度传感器的玻纤管微型进口扭矩传感器感应开关传感器到位返回ap1509稳压芯片st三极管8550性能优异的程控放大电路

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台