基于stm32单片机的直流电机速度控制——LZW
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
- 一、实验目的
- 二、实验方法
- 三、实验设计
- 1.实验器材
- 2.电路连接
- 3.软件设计
- (1)实验变量
- (2)功能模块
- a)电机接收信号计算
- b)电机速度计算
- 四、实验步骤
- 1.系统辨识
- 2.加权函数设计
- 3.合成控制器
- 4.控制器降阶
- 5. 检查闭环系统稳定性
- 6. S/T的Bode图
- 7. 转换为离散控制器
- 五、实验结果
- 1.阶跃响应
- 2.抗阶跃干扰
- 3.抗正弦干扰
一、实验目的
本实验采用H∞混合灵敏度算法设计直流电机速度控制器,并通过stm32f407单片机进行实物控制,具体满足以下要求:
1.通过开发板上按键实现正反转控制,通过螺旋电位器实现电机加减速控制
2.使电机具有足够的稳定裕度和良好的跟踪性能
3.能够抑制0.1Hz以下的低频干扰
二、实验方法
H∞控制是指设计一个控制器K使闭环系统稳定且干扰对系统期望输出影响最小,所以利用H∞范数(传递函数的H∞范数可以描述输入到输出的最大增益)作为目标函数对系统进行优化设计。

基于混合灵敏度 S /T(S 为灵敏度,T 为补灵敏度)的 H∞ 控制器设计方法折中考虑了系统摄动带来的系统稳定和系统性能问题,对于结构不确定的系统是行之有效的设计方法。为了借助计算机求解控制器,需要把混合灵敏度问题转化为标准的 H∞ 优化问题。


其中,其中w1是S的加权函数,w2是T的加权函数。对于H∞次优控制中,上式等价于

因此,S/T 加权函数w1和w2的选取成为影响控制器控制效果的重要因素。S与系统跟踪性能和抗干扰能力相关,因此需要在低频范围增大w1内使S的增益变小。T与系统的鲁棒性和抗噪声干扰能力相关,因此需要在带宽以外增大w2以降低T的幅值。
三、实验设计
本实验设计结构框图如下:

1.实验器材

硬件:
1.STM32F407ZGT6开发板
2.L298N电机驱动模块
3.直流空心杯电机(12V,2000线)
4.螺旋电位器
软件:
1.IDE:MDK-Keil 软件
2.MATLAB
3.串口助手
2.电路连接

(2)螺旋电位器通过单片机开发板3.3V电压供电,并与单片机PF7引脚相连,用于电机调速。
(3)H桥驱动电路通过单片机开发板3.3V电压供电,其中的IN1、IN2引脚与单片机PF3、PF5引脚相连,OUT1和OUT2引脚与直流电机IN1和IN2引脚相连,实现电机的正反转控制;H桥驱动电路使能端EN A引脚与单片机PB6引脚相连,接收单片机输出的PWM信号,实现电机的调速功能。
(4)直流电机编码器Encoder A、Encoder B引脚通过单片机开发板5V供电,并与单片机PA6、PA7引脚相连,以读取电机的速度反馈。
3.软件设计
(1)实验变量
实验主要定义以下变量:

其中,输入信号scmd决定电机最终的速度,actual_speed用于表示电机实际速度,output_cmd用于记录控制器输出信号,DIR用于记录电机方向。并进行以下初始化:

(2)功能模块
a)电机接收信号计算
电机接收的信号有PWM信号和方向信号,具体代码如下:

b)电机速度计算

实验中定时器周期为0.01s,每个周期需要计算电机每分钟转速,因此将PA6、PA7接收到的脉冲信号乘以6000,电机编码器为2000线,4倍频后为8000,所以再除以8000计算每分钟转速。
四、实验步骤
1.系统辨识
实验中通过向电机输入伪随机二进制序列(PRBS),并通过最小二乘法计算直流电机传递函数,共采取1200组输入、输出数据:


该系统的Bode图为
2.加权函数设计
根据实验目标,设计以下加权函数:

|w1|-1 和|w2|-1和的Bode图如下:

3.合成控制器
根据图2,采用H无穷混合灵敏度方式合成控制器,使用matlab计算出的控制器传递函数为

4.控制器降阶
在嵌入式应用程序中,资源是有限的。高阶意味着计算复杂度,采样周期更长。因此,需要降低控制器的阶数,而不显著失去它的属性,本实验采用平衡截断的方式(balanced truncation)将控制器降到4阶:

5. 检查闭环系统稳定性
计算闭环传递函数的极点,如果全在负半轴,则系统稳定

6. S/T的Bode图
将降阶后的控制器(4)带入整个闭环系统,画出S/T(灵敏度/灵敏补)的Bode图:

7. 转换为离散控制器
将控制器(4)转换为离散控制器,采样周期和控制器中断周期相等(T=0.01s):

五、实验结果
将上述控制器(5)通过stm32f407zgt6单片机实现以控制直流电机速度,结果如下。
1.阶跃响应
阶跃响应效果如下:

其中,红线为速度参考信号,黄线为实际电机速度。
2.抗阶跃干扰
为测试所设计的H∞控制器的抗干扰能力,应用该算法的直流电机启动后5秒后,加入1V阶跃干扰,实验效果如下:

3.抗正弦干扰
电机启动后在控制器后加入频率为0.1Hz、幅值为1V的正弦干扰,结果如下所示:

从上图可以看出,该H∞控制器基本可以抑制0.1Hz、1V的正弦干扰。
相关文章:
基于stm32单片机的直流电机速度控制——LZW
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、实验目的二、实验方法三、实验设计1.实验器材2.电路连接3.软件设计(1)实验变量(2)功能模块a)电机接收信号…...
实际项目中使用mockjs模拟数据
项目中的痛点 自己模拟的数据对代码的侵入程度太高,接口完成后要删掉对应的代码,导致接口开发完后端同事开发完,前端自己得加班;接口联调的时间有可能会延期,接口完成的质量参差不齐;对于数据量过大的模拟…...
【家庭公网IPv6】
家庭公网IPv6 这里有两个网站: 1、 IPV6版、多地Tcping、禁Ping版、tcp协议、tcping、端口延迟测试,在本机搭建好服务器后,可以用这个测试外网是否可以访问本机; 2、 IP查询ipw.cn,这个可以查询本机的网络是否IPv6访问…...
【iOS】Frame与Bounds的区别详解
iOS的坐标系 iOS特有的坐标是,是在iOS坐标系的左上角为坐标原点,往右为X正方向,向下为Y正方向。 bounds和frame都是属于CGRect类型的结构体,系统的定义如下,包含一个CGPoint(起点)和一个CGSiz…...
SpringBoot百货超市商城系统 附带详细运行指导视频
文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBoot框架开发的百货超市系统。首先,这是一个很适合SpringBoot初学者学习的项目,代…...
【实践篇】推荐算法PaaS化探索与实践 | 京东云技术团队
作者:京东零售 崔宁 1. 背景说明 目前,推荐算法部支持了主站、企业业务、全渠道等20业务线的900推荐场景,通过梳理大促运营、各垂直业务线推荐场景的共性需求,对现有推荐算法能力进行沉淀和积累,并通过算法PaaS化打造…...
持续贡献开源力量,棱镜七彩加入openKylin
近日,棱镜七彩签署 openKylin 社区 CLA(Contributor License Agreement 贡献者许可协议),正式加入openKylin 开源社区。 棱镜七彩成立于2016年,是一家专注于开源安全、软件供应链安全的创新型科技企业。自成立以来&…...
Kafka的消费者如何管理偏移量?
在Kafka中,消费者可以通过管理和跟踪偏移量(offset)来确保消费者在消费消息时的准确性和可靠性。偏移量表示消费者在特定分区中已经消费的消息的位置。以下是几种常见的偏移量管理方式: 手动提交偏移量:消费者可以通过…...
IntelliJ IDEA流行的构建工具——Gradle
IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。 如…...
nacos源码打包及相关配置
nacos 本地下载后,需要 install 下: mvn clean install -Dmaven.test.skiptrue -Dcheckstyle.skiptrue -Dpmd.skiptrue -Drat.skiptruenacos源码修改后,重新打包生成压缩包命令:在 distribution 目录中运行: mvn -Pr…...
【机器学习】Multiple Variable Linear Regression
Multiple Variable Linear Regression 1、问题描述1.1 包含样例的X矩阵1.2 参数向量 w, b 2、多变量的模型预测2.1 逐元素进行预测2.2 向量点积进行预测 3、多变量线性回归模型计算损失4、多变量线性回归模型梯度下降4.1 计算梯度4.2梯度下降 首先,导入所需的库 im…...
自己创建的类,其他类中使用错误
说明:自己创建的类,在其他类中创建,报下面的错误(Cannot resolve sysmbol ‘Redishandler’); 解决:看下是不是漏掉了包名 加上包名,问题解决;...
Packet Tracer – 使用 TFTP 服务器升级思科 IOS 映像。
Packet Tracer – 使用 TFTP 服务器升级思科 IOS 映像。 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 R1 F0/0 192.168.2.1 255.255.255.0 不适用 R2 G0/0 192.168.2.2 255.255.255.0 不适用 S1 VLAN 1 192.168.2.3 255.255.255.0 192.168.2.1 TFTP …...
并查集基础
一、概念及其介绍 并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。 并查集的思想是用一个数组表示了整片森林(parent),树的根节点唯一标识了一个集合,我们只要找到了某个元素的的树根…...
C# 循环等知识点
《1》程序:事先写好的指令(代码) using 准备工具 namespace 模块名称 { class 子模块{ static void main()//具体事项 { 代码 } } } 《2》变量:内存里的一块空间,用来存储数据常用的有小数,整数,…...
1.1.2 SpringCloud 版本问题
目录 版本标识 版本类型 查看对应版本 版本兼容的权威——官网: 具体的版本匹配支持信息可以查看 总结 在将Spring Cloud集成到Spring Boot项目中时,确保选择正确的Spring Cloud版本和兼容性是非常重要的。由于Spring Cloud存在多个版本,因此…...
Android AIDL 使用
工程目录图 请点击下面工程名称,跳转到代码的仓库页面,将工程 下载下来 Demo Code 里有详细的注释 代码:LearnAIDL代码:AIDLClient. 参考文献 安卓开发学习之AIDL的使用android进阶-AIDL的基本使用Android AIDL 使用使用 AIDL …...
MongoDB——命令详解
db.fruit.remove({name:apple})//删除a为apple的记录db.fruit.remove({})//删除所有的记录db.fruit.remove()//报错 MongoDB使用及命令大全(一)_mongodb 删除命令_言不及行yyds的博客-CSDN博客...
机器学习深度学习——多层感知机的简洁实现
👨🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——多层感知机的从零开始实现 📚订阅专栏:机器学习&&深度学习 希望文章对你…...
笙默考试管理系统-MyExamTest(21)
笙默考试管理系统-MyExamTest(21) 目录 一、 笙默考试管理系统-MyExamTest 二、 笙默考试管理系统-MyExamTest 三、 笙默考试管理系统-MyExamTest 四、 笙默考试管理系统-MyExamTest 五、 笙默考试管理系统-MyExamTest 六、 笙默考试管理系统…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...
AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...
