2015年电赛控制类—STM32风力摆控制系统资料+源程序

目录

一、项目背景

二、主要研究内容

三、总体思路与研究方案

四、主要研究结果

五、程序

         六、图片

一、项目背景

        风力摆控制系统是一种利用风力控制物体做简谐运动的系统,风力的利用和控制技术在我国的发展尚未完善,国内正处于起步阶段。风力摆的工作原理具有较为典型的自动化控制理论特点,其控制方法多种多样。深入研究,在许多工程技术领域都有着广阔的开发前景。风力摆系统的摆体由风扇构成,通过调整风扇的转速实现摆动位置及摆动路线的控制,由于摆动机构的滞后性,实现精确控制具有一定难度。通过合理的摆结构设计,并利用摆线理论建模,设计并优化控制策略,利用闭环结构提升摆的轨迹运动准确性。其中的控制原理对于人们处理工业工程,同样存在借鉴。系统对风摆控制参数设定、抗扰因素测试等惯性滞后问题解决具有借鉴意义,同时也为分析该类问题建立了直观的测试平台。风力摆是一种通过风机作为唯一动力驱动的装置,深入研究该系统对空间飞行器、四旋翼无人机的运动状态和卫星姿态控制具有重大意义。

二、主要研究内容

1. 基本要求

(1) 从静止开始,15s 内控制风力摆做类似自由摆运动,使激光笔稳定地

在地面画出一条长度不短于 50cm 的直线段,其线性度偏差不大于±

2.5cm,并且具有较好的重复性;

(2) 从静止开始,15s 内完成幅度可控的摆动,画出长度在 30~60cm 间可设置,长度偏差不大于±2.5cm 的直线段,并且具有较好的重复性;

(3) 可设定摆动方向,风力摆从静止开始,15s 内按照设置的方向(角度)

摆动,画出不短于 20cm 的直线段;

(4) 将风力摆拉起一定角度(30°~45°)放开,5s 内使风力摆制动达到静止状态。

2.发挥部分

(1) 以风力摆静止时激光笔的光点为圆心,驱动风力摆用激光笔在地面画圆,30s 内需重复 3 次;圆半径可在 15~35cm 范围内设置,激光笔画出的轨迹应落在指定半径±2.5cm 的圆环内;

(2) 在发挥部分(1)后继续作圆周运动,在距离风力摆 1~2m 距离内用一台 50~60W 台扇在水平方向吹向风力摆,台扇吹 5s 后停止,风力摆能

够在 5s 内恢复发挥部分(1)规定的圆周运动,激光笔画出符合要求的

轨迹;

(3) 其他。

三、总体思路与研究方案

1. 总体思路

风力摆控制系统是一个极其不稳定的系统,摆杆的长度、风机的安装位置、万向节的阻力等因素都会引起系统产生误差,该系统中应用了一个物理知识——李萨如图形。李萨如图形贯穿整个风力摆控制系统的始终,画直线时两个方向上的简谐运动相位相等,幅值不同就会画出不同角度不同长度的直线;画圆时两个方向上的简谐运动相位相差Π/2,幅值相同就会画出不同半径的圆。

设计整个系统时将角度传感器mpu6050固定在摆杆上,传感器返回的数据通过串口显示在上位机上。在程序里设置两条目标值曲线,根据上位机显示的实际值波形与目标值曲线之间的差异进行PID参数的整定。实际上整个系统的目的就是让实际值曲线沿着目标值曲线的轨迹运动。

2. 实施方案

(1)电机的论证和选择

方案1:采用驱动、风机一体化的轴流风机

驱动、风机一体化的轴流风机有可以免去驱动的设计、节省结构空间、控制方法简单,散热快等优点,但是他的风力较小而且重量大,响应速度和其他电机相比也比较慢。

方案2:采用空心杯电机

空心杯电机重量小,风力大,起动、制动迅速,响应极快,能量转换效率很高。但是他的抗干扰能力较弱容易受到很多外界因素的影响。

综合以上两种方案选择方案2。

(2)驱动模块的论证和选择

方案1:采用TB6612FNG驱动模块

TB6612FNG驱动模块双通道输出,可同时驱动两个电机。每个通道可以输出最高1A的驱动电流,启动峰值电流达2A。TB6612FNG是基于MOSFET的H桥集成电路,效率远高于晶体管H桥驱动器。

方案2:采用L298N驱动模块

L298N驱动模块是一种高电压、大电流的驱动模块,它采用L298N双H桥直流电机驱动芯片,单桥可以输出的最大驱动电流为2A,驱动部分端子供电范围为5V~35V。

综合以上两种方案选择方案2。

(3)主控模块的论证与选择

方案1:采用STC89C51单片机

STC89C51单片机最高工作时钟频率为80MHz,内含8K Bytes的可反复擦写1000次的Flash只读程序存储器,芯片内集成了通用8位 中央处理器和ISP Flash 存储单元。

方案2:采用STM32单片机

STM32单片机是ST公司使用arm公司的cortex-M3为核心生产的32bit系列的单片机,他的内部资源非常丰富,基本上接近于计算机的CPU了,最高工作频率72MHz。

综合以上两种方案选择方案2。

(4)角度检测模块的论证与选择

方案1:采用角度传感器

由UZZ9001和KMZ41组成角度测量模块,并使用矩形磁铁进行配合测量磁铁与KMZ41芯片之间的角度。UZZ9001将KMZ41输出的正余弦角度信号转换为数字信号,并通过SPI串口输出。但KMZ41调试比较困难,不方便用于测量倾角。

方案2:采用MPU6050模块

MPU6050测量角度集成了三轴MEMS陀螺仪,三轴MEMS加速度计。MPU6050对陀螺仪和加速度计分别用了3个16位的ADC,将其测量的模拟量转化为可输出的数字量。测量范围可控,通信采用I2C总线,操作简单。

综合以上两种方案选择方案2。

(5)电源的论证和选择

方案1:采用航模电池,

航模电池可以输出12V的电压,可反复充电。此方案的优点是风力摆与外界无需电源连线统安装方便,但电压会有波动,不能长时间稳定工作。

方案2:采用开关电源

利用开关电源虽然系统安装较复杂,但功率较大,电压稳定。

综合以上两种方案选择方案2

四、主要研究结果

经过我们团队的不懈努力,风力摆控制系统现在可以完成一下要求:

(1) 从静止开始,15s 内控制风力摆做类似自由摆运动,使激光笔稳定地

在地面画出一条长度不短于 50cm 的直线段,其线性度偏差不大于±

2.5cm,并且具有较好的重复性;

(2) 从静止开始,15s 内完成幅度可控的摆动,画出长度在 30~60cm 间可设置,长度偏差不大于±2.5cm 的直线段,并且具有较好的重复性;

(3) 可设定摆动方向,风力摆从静止开始,15s 内按照设置的方向(角度)

摆动,画出不短于 20cm 的直线段;

(4) 将风力摆拉起一定角度(30°~45°)放开,5s 内使风力摆制动达到静止状态。

(5) 以风力摆静止时激光笔的光点为圆心,驱动风力摆用激光笔在地面画圆,30s 内需重复 3 次;圆半径可在 15~35cm 范围内设置,激光笔画出的轨迹应落在指定半径±2.5cm 的圆环内;

(6) 在发挥部分(1)后继续作圆周运动,在距离风力摆 1~2m 距离内用一台 50~60W 台扇在水平方向吹向风力摆,台扇吹 5s 后停止,风力摆能

够在 5s 内恢复要求(5)规定的圆周运动,激光笔画出符合要求的轨迹;

五、程序

单片机接线方式

 OLED:SCL------PB5SDA------PB4RST------PB3D/C------PA15MPU6050:SCL------PB8SDA------PB9L298N:PWM1----PB1R_EN1----PB12L_EN1----PB13PWM2----PA1R_EN2----PB14L_EN2----PB15KEY:KEY1-----PA11KEY2-----PA12KEY3-----PB6KEY4-----PB7

源代码

#include "sys.h"float Pitch,Roll,Yaw;
float KP1=0,KD1=0,KI1=0,KP2=0,KD2=0,KI2=0;
float Menu=1,A=0,B=0,X=0,Y=0,m=0,n=0;
int EN=0;
float Target_Position1=500,Target_Position2=500,Last_Bias1,Bias1,Pwm1,Integral_bias1,Last_Bias2,Bias2,Pwm2,Integral_bias2;
int main(void)
{        delay_init();IIC_Init();        JTAG_Set(SWD_ENABLE);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);          //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(9600);         //串口初始化为9600DMP_Init();KEY_Init();TIM4_Int_Init(49,7199);//10Khz的计数频率,计数到30为3ms TIM3_PWM_Init(1499,0);         //不分频。PWM频率=72000000/900=80KhzTIM2_PWM_Init(1499,0);         //不分频。PWM频率=72000000/900=80KhzOLED_Init();LED_Init();EXTIX_Init();while(1){        DataScope();oled_show();}}

   六、图片

风力摆图片

 上位机图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/600906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea设置注释在鼠标当前位置,使其不从顶格位置添加注释

idea设置注释在鼠标当前位置,使其不从顶格位置添加注释 默认情况下,注释都是从改行的顶格开始,看起来不太美观而且不易清除分级 设置让其从代码处开始,步骤:File–>Sttings–>Editor–>Code Style &#xff…

Mysq之——分库分表

Mysq之——分库分表 简介分库分表的方式垂直分表垂直分库水平分库水平分表 图解:垂直分表与水平分表(分库类似)分库分表带来的问题 简介 分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成…

[英语学习][24][Word Power Made Easy]的精读与翻译优化

[序言] 译者的这次翻译, 中规中矩, 就是遗漏了2个单词没有翻译出来 [英文学习的目标] 提升自身的英语水平, 对日后编程技能的提升有很大帮助. 希望大家这次能学到东西, 同时加入我的社区讨论与交流英语相关的内容. [原著英文与翻译版对照][第22页] This book is designed…

IMS SIP register消息中的Contact header field

SIP register中的Contact还要承载User Agent的能力信息。 实网下抓取的UE log如上,下面就主要看下Contact header field要包含的内容及其含义。 Contact header field设置为包括 UE IP地址或FQDN的SIP URI。 如上图contact中sip:69a5de6a-a03e-46d6-ad7a-b0d974c8f…

【Synopsys工具使用】2.Verdi的使用

文章目录 用VCS生成波形文件并用Verdi打开生成fsdb文件使用Verdi查看逻辑原理图 用VCS生成波形文件并用Verdi打开 编写Makefile文件: all:find com find:find -name "*.v" > file.list com: …

怎么快速筛选查看postfix的邮件记录

现状 通过分析日志获取记录 1.多个收件人时,日志有多行,而且不宜读 2.日志中默认没有邮件主题信息 3.日志中默认没有年的信息 解决办法 小编今天发现了一个不错的开源小命令,查看和下载请点击:postfixlogparse 直接下载下来…

计算机Java项目|Springboot疫情网课管理系统

项目编号:L-BS-ZXBS-07 一,环境介绍 语言环境:Java: jdk1.8 数据库:Mysql: mysql5.7 应用服务器:Tomcat: tomcat8.5.31 开发工具:IDEA或eclipse 二,项目简介 疫情网课也都将通过计算机…

【鸿蒙4.0】harmonyos Day 01

一. 初次使用鸿蒙原生编译器Dev Ecostudio创建一个新工程(项目),控制台报错:ohpm ERROR: NOTFOUND package "ohos/hypium" not found from all the registries https://repo.harmonyos 这个错误应该是一些配置没下载成…

python小技巧

使用列表解析式(List Comprehension)快速创建列表,例如:[x for x in range(10)] 使用enumerate()函数遍历列表时获取索引和值,例如: for i, value in enumerate(my_list): print(i, value) 使用zip()函数…

2 万字详解,吃透 ES!

生活中的数据 搜索引擎是对数据的检索,所以我们先从生活中的数据说起。 我们生活中的数据总体分为两种:结构化数据 和 非结构化数据 。 结构化数据 :也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循…

年少不懂宋公明,读懂已是中年人

及时雨宋江及时的不是雨,而是银子。 年轻的时候,以为聚义厅聚的是义,中年以后才看明白,聚义厅聚的是利。 利益是纽带,是动力。 懂得从他人利益的角度出发,我们才能调动更多的人和资源,成就一…

Qt编程之基础模块和扩展模块介绍

Qt (发音为“cute”,而不是“cu tee” )是一个跨平台框架,通常用作图形工具包,不过它在创建命令行(CLI)应用程序方面非常出色。它可以运行在 3个主要的桌面操作系统(Windows、Linux 和 Mac)以及移动设备操作…

MYSQL多种提权方式

🐙MYSQL-提权条件 - 数据库的最高权限用户的密码 - secure-file-priv没进行目录限制 - 拿下了网站的权限(通过webshell或者其他方式) - 获取到了数据库的账号密码 (获取密码:D:/phpstudy/MySQL/data/mysql/user.MYD…

win10报错“zlib.dll文件丢失,软件无法启动”,修复方法,亲测有效

zlib.dll文件是一个由Zlib创建的动态链接库文件,它是用于Windows操作系统的数据压缩和解压缩的软件。Zlib是一个广泛使用的软件库,广泛应用在许多不同类型的软件中,包括游戏、浏览器和操作系统。 zlib.dll的主要作用是提供数据压缩和解压缩的…

input中typedate的属性都有那些

自我扩展‘ type 中date属性 自我 控制编辑区域的 ::-webkit-datetime-edit { padding: 1px; background: url(…/selection.gif); }控制年月日这个区域的 ::-webkit-datetime-edit-fields-wrapper { background-color: #eee; }这是控制年月日之间的斜线或短横线的 ::-webki…

【Delphi 基础知识 13】匿名方法的使用

在Delphi中,匿名方法是一种无需显式声明函数名的方法。它通常在事件处理、回调函数等场景中使用。 下面是一个简单的Delphi示例,演示如何使用匿名方法 unit MainForm;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Control…

详细讲解MybatisPlus中的BaseMapper类中的CRUD功能(全)

目录 前言1. 基本概念2. CRUD2.1 插入2.2 删除2.3 修改2.4 查询 前言 大部分CRUD都来源这个类,对此有意义剖析,方便之后的功能开发 完整的CRUD可看我之前的文章: 详细讲解MybatisPlus中的IService类中的CRUD功能(全&#xff09…

redis黑马点评项目启动指南(含mac m1pro | windows11 wsl2 ubuntu环境配置 持续更新中~)

redis黑马点评项目学习笔记 mac m1pro windows 含项目配置教学 mac M1pro环境配置windows11 wsl2 ubuntu 环境配置一.短信登录1. 1发送验证码1.2短信登录注册1.3登录校验拦截器补缺Cookie Session Token1.4基于redistoken认证实现短信登陆1.5完善token认证的刷新机制 2.商户查询…

Python浪漫520表白代码

系列文章 序号文章目录直达链接表白系列1浪漫520表白代码https://want595.blog.csdn.net/article/details/1306668812满屏飘字表白代码https://want595.blog.csdn.net/article/details/1349149703无限弹窗表白代码https://want595.blog.csdn.net/article/details/1297945184跳…

springboot基础

一 springboot 1 spring 的缺点 在spring boot出现以前,使用spring框架的程序员是这样配置web应用环境的,需要大量的xml配置。下图展示了在xml配置的时代和SpringBoot的配置量的差别。 随着web项目集成软件的不断增多,xml配置也不断的增多&…