永磁同步电机恒压频比(V/F)开环控制系统Matlab/Simulink仿真分析及代码生成到工程实现

news2024/11/15 8:31:32

文章目录

  • 前言
  • 一、 恒压频比(V/F)控制原理
  • 二、永磁同步电机恒压频比开环控制系统Matlab/Simulink仿真分析
    • 2.1.仿真电路分析
      • 2.1.1.恒压频比控制算法
      • 2.1.2.输出处理
      • 2.1.3.主电路
    • 2.2.仿真结果分析
      • 2.2.1.设定目标转速为1200r/min
      • 2.2.1.设定目标转速为变化值
  • 三、永磁同步电机恒压频比开环控制系统代码生成及工程实现
    • 3.1.功能需求
    • 3.2.硬件设计
    • 3.3.软件设计
      • 3.3.1.STM32CubeMX底层配置
      • 3.3.2.应用层与底层的接口开发
      • 3.3.3.Matlab/Simulink恒压频比控制算法代码生成
      • 3.3.4.应用层与底层的代码集成
    • 3.4.仿真验证
  • 总结


前言

本章节采用恒压频比的开环控制方法驱动永磁同步电机的转动,首先分析恒压频比的控制原理,然后在Matlab/Simulink中进行永磁同步电机恒压频比开环控制系统的仿真分析,最后将Simulink中的恒压频比控制算法生成代码加载到实际工程中进行工程实现。


一、 恒压频比(V/F)控制原理

在这里插入图片描述

二、永磁同步电机恒压频比开环控制系统Matlab/Simulink仿真分析

永磁同步电机恒压频比控制方法与异步电机恒压频比控制方法相似,也是控制电机输入电压与频率同时变化,从而使气隙磁通保持恒定。该控制方法没有电机电流、电压、位置等物理量的反馈,动态性能较差,在给定目标转速发生变化或者负载突变的情况下容易产生失步和震荡的问题,但该控制方法胜在简单,多适用于对转速精度要求不高的场合。
永磁同步电机恒压频比开环控制系统Matlab/Simulink仿真框图如下:
在这里插入图片描述

2.1.仿真电路分析

2.1.1.恒压频比控制算法

在这里插入图片描述
恒压频比控制算法:永磁同步电机转速与频率的换算关系如下所示:
在这里插入图片描述
首先,将设定的电机目标转速通过上式换算为频率,由于该开环控制系统没有自动限制启动电流的作用,因此加入了一个斜坡函数使频率有一个平缓的变化过程。例如仿真中设定的目标转速为1200r/min,换算为频率的过程如下图所示:
在这里插入图片描述
然后,由恒压频比V/F控制算法特性(下图所示),使输入电压与频率同步变化,从而保持气隙磁通恒定。低频时Us和Eg都较小,定子电阻和漏感压降所占分量比较显著,不能再忽略,此时人为的把定子电压抬高一些,近似的补偿定子阻抗压降,如下图b线所示:
在这里插入图片描述
由上图可知输入电压与频率的关系为(带低频补偿的b线,已知(0,U0)(f1N,UsN)):
在这里插入图片描述
将频率通过上式换算为电压,由电机额定转速计算出额定频率f1N(永磁同步电机转速与频率的关系)。永磁同步电机的恒压频比控制为基频以下调速,系统最高频率不能超过额定频率f1N,例如仿真中所选永磁同步电机的额定转速为12540r/min,计算出额定频率f1N为1463Hz,为系统最高设定频率。
目标转速为1200r/min,将转速换算为频率,再由频率的变化得到输入电压的变化,如下图所示:
在这里插入图片描述
此处作了一个归一化处理,将电压的变化除以电机额定电压,使输出电压的范围落在[0,1]区间内。
在这里插入图片描述
将频率转换为相角,如下图所示:
在这里插入图片描述
此时已获得输入电压的幅值U与相角wt,再通过下式将幅值与相角的电压表示转化为两相坐标系下的电压表示:
在这里插入图片描述
在这里插入图片描述
接着采用反Clark变换,得到最终输入到电机的三相电压:
在这里插入图片描述

2.1.2.输出处理

在这里插入图片描述
对恒压频比控制算法的输出电压做处理,使其落在[0,1]的范围内:
在这里插入图片描述

2.1.3.主电路

在这里插入图片描述
**
在这里插入图片描述
此处为了偷懒,没有再搭建三相逆变电路,采用Average-Value Inverter模块直接生成三相正弦电压送入永磁同步电机进行控制,永磁同步电机采用BR2804-1700电机,参数如下:
在这里插入图片描述
在这里插入图片描述
目标转速1200r/min时,生成的送入电机的三相电压如下图所示:
在这里插入图片描述

2.2.仿真结果分析

2.2.1.设定目标转速为1200r/min

目标转速与实际转速:
在这里插入图片描述
**
**
在这里插入图片描述
电机定子电流:
在这里插入图片描述
**
**
在这里插入图片描述
电机转子位置:
在这里插入图片描述

2.2.1.设定目标转速为变化值

目标转速设定:
在这里插入图片描述
目标转速与实际转速:
在这里插入图片描述
电机定子电流:
在这里插入图片描述
电机转子位置:
在这里插入图片描述
Id和Iq电流值:
在这里插入图片描述
电磁转矩:
在这里插入图片描述

三、永磁同步电机恒压频比开环控制系统代码生成及工程实现

3.1.功能需求

实现永磁同步电机的恒压频比控制,可通过按键调节永磁同步电机的转速。

3.2.硬件设计

在这里插入图片描述
控制板:STM32F302R8
驱动板:X-NUCLEO-IHM07M1
永磁同步电机:BR2804-1700
控制板与驱动板的详细信息请阅读:
直流有刷电机驱动基于STM32F302R8+X-NUCLEO-IHM07M1(一)
在这里插入图片描述

3.3.软件设计

3.3.1.STM32CubeMX底层配置

1、RCC设置外接HSE(Crystal/Ceramic Resonator),时钟设置为72MHz
2、PC10、PC11、PC12设置为推挽输出、无上下拉电阻、高速,初始化状态设为0;PB13设置为推挽输出,下拉电阻、高速,初始化状态为0;PC13设置为输入,无上下拉电阻。
3、设置TIM1时钟源为内部时钟,TIM1_CH1(PA8)设置为PWM输出,TIM1_CH2(PA9)设置为PWM输出,TIM1_CH3(PA10)设置为PWM输出;TIM1预分频值设置为3-1,计数模式选为中央计数模式1,ARR设计为1200-1(1/(1/(72000000/3))*1200=20KHz),内部时钟无分频;使能TIM1更新中断,中断优先级设置为(1,0)
4、USART2设置为异步,115200波特率,8位数据位,无奇偶校验位,1位停止位
5、Project Manager->工程名+IDE配置,Code Generator配置,生成工程代码
在这里插入图片描述
**
**
在这里插入图片描述
**
**
在这里插入图片描述
**
**
在这里插入图片描述

3.3.2.应用层与底层的接口开发

在这里插入图片描述
Speed_Ref用于设定目标转速;Duty[3]用于接收恒压频比控制算法生成的三相电压,该三相电压作为调制波,TIM1计数器(中央计数模式)作为载波,频率20KHz与Simulink仿真设计一致。调制波与载波进行调制生成PWM,控制三相逆变电路的驱动输出,此处采用SPWM控制方法进行控制;Vmin用于设定恒压频比控制算法中的补偿电压值U0。
有关PWM控制技术请阅读:
PWM控制技术+Simulink仿真详解

3.3.3.Matlab/Simulink恒压频比控制算法代码生成

在这里插入图片描述
具体代码生成步骤及设计,请阅读:
直流有刷电机开环调速基于STM32F302R8+X-NUCLEO-IHM07M1(三)
在这里插入图片描述
在这里插入图片描述

3.3.4.应用层与底层的代码集成

具体代码集成步骤,请阅读:
直流有刷电机开环调速基于STM32F302R8+X-NUCLEO-IHM07M1(三)
在主函数中调用:PMSM_VF_initialize()初始化函数。

int main(void)
{
  /* USER CODE BEGIN 1 */
  uint8_t count=0;

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM1_Init();
  MX_USART2_UART_Init();
  /* USER CODE BEGIN 2 */
  PMSM_VF_initialize();  //Simulink初始化函数

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  if(Key_Scany(KEY_GPIO_Port,KEY_Pin)==1)
	  {
		  HAL_GPIO_WritePin(GPIOC, EN1_Pin|EN2_Pin|EN3_Pin, GPIO_PIN_SET);  //使能三相桥臂
  
		  HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);   //使能三路PWM
		  HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);
		  HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3);
			  
	      __HAL_TIM_ENABLE_IT(&htim1,TIM_IT_UPDATE);  //使能TIM1更新中断
	      __HAL_TIM_CLEAR_FLAG(&htim1,TIM_IT_UPDATE);
		  
		  Speed_Ref+=500;  //设定转速,每按一次按键转速增加500
		  if(Speed_Ref>=12000)
			  Speed_Ref=12000;
	  }
	  	  
	  HAL_Delay(1);
	  count++;
	  if(count%50==0)
	  {
		  count=0;
		  HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);  //程序运行指示灯,50ms闪烁周期
	  }
  }
  /* USER CODE END 3 */
}

在TIM1更新中断函数中调用:PMSM_VF_step(Speed_Ref, Duty)函数,实现恒压频比控制算法。

/* USER CODE BEGIN 1 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	//Simulink函数 20KHz V/F控制
	PMSM_VF_step(Speed_Ref, Duty);  //每调用此函数相当于在Simulink中执行了一次模型运算
	
	for(int i=0;i<3;i++)
	{
		Duty[i]=(1-Duty[i])*htim1.Init.Period;
	}
	
	TIM1->CCR1=Duty[0];  //设置占空比,进行SPWM控制
	TIM1->CCR2=Duty[1];
	TIM1->CCR3=Duty[2];
	
}
/* USER CODE END 1 */

3.4.仿真验证

编译下载到开发板观察实验现象

恒压频比开环控制系统Simulink仿真及工程实现


高清视频文件太大了,传个模糊的凑活了,哈哈哈哈哈哈哈哈哈哈哈哈哈!!!


总结

本章节采用恒压频比的开环控制方法驱动永磁同步电机的转动,分析了恒压频比的控制原理,然后在Matlab/Simulink中进行了永磁同步电机恒压频比开环控制系统的仿真分析,最后将Simulink中的恒压频比控制算法生成代码加载到实际工程中进行了工程实现,为后续章节的分析奠定基础。

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

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

相关文章

消息中间件ActiveMQ入门概述

目录 举一反三 思考 背景 消息中间件的作用 MQ的定义 MQ的特点 MQ的缺点 消息中间件已经成为互联网企业应用系统内部通信的核心手段&#xff0c;是目前企业内主流标配技术&#xff0c; 它具有解耦、异步、削峰、签收、事务、流量控制、最终一致性等一系列高性能架构所需…

并发编程详解: 十三个工具类, 十大设计模式, 从理论基础到案例实战

前言 对于 Java 程序员而言&#xff0c;熟练掌握并发编程是判断其卓越性的重要标准之一。因为并发编程是 Java 语言中最晦涩的知识点&#xff0c;它涉及操作系统&#xff0c;内存&#xff0c;CPU&#xff0c;编程语言等的基本功&#xff0c;并且还测试了程序员的内功。 那么如…

【Android App】人脸识别中借助摄像头和OpenCV实时检测人脸讲解及实战(附源码和演示 超详细)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 一、借助摄像头实时检测人脸 与Android自带的人脸检测器相比&#xff0c;OpenCV具备更强劲的人脸识别功能&#xff0c;它可以通过摄像头实时检测人脸&#xff0c;实时检测的预览空间是JavaCameraView 常用方法说明如下 setCvC…

舵机应该如果选择?讲讲模拟舵机,数字舵机和总线舵机的区别

推荐视频&#xff1a;模拟舵机&#xff0c;数字舵机和总线舵机科普 &#xff1b;舵机从入门到放弃&#xff1b; 很多时候&#xff0c;我们购买舵机就只知道考虑扭矩以及控制方式。对舵机的分类有所耳闻&#xff0c;但是不清楚其中的区别。接下来我将详细说明模拟舵机&#xff0…

【机器学习】基于机器学习的反弹shell命令识别

引言 本文介绍一个基于机器学习识别反弹shell的项目。 在主机安全检测中&#xff0c;一般是采用基于原理的方式识别反弹shell, 通过判断socket通信相关特征&#xff0c;可以准确地识别到主机中的反弹shell。 但是在容器场景下&#xff0c;检测反弹shell 的能力&#xff0c;可能…

[附源码]计算机毕业设计springboot疫情物资管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

2022年第十一届认证杯数学中国数学建模国际赛小美赛:C 题 对人类活动进行分类 建模方案及代码实现

2022年第十一届认证杯数学中国数学建模国际赛小美赛&#xff1a;C 题 对人类活动进行分类 建模方案及代码实现 1 题目 人类行为理解的一个重要方面是对日常活动的识别和监控。可穿戴活动识别系统可以在许多关键领域提高生活质量&#xff0c;如门诊监测、居家康复、跌倒检测等。…

[附源码]Python计算机毕业设计Django茂名特产销售商城网站

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

[Java安全]—再探Filter内存马

前言 关于tomcat反序列化注入回显内存马问题中&#xff0c;就是通过filter内存马进行反序列化动态注册的&#xff0c;但filter内存马由于当时学的时候就没有学的很明白&#xff0c;所以打算重新回顾一下。 前置知识 Tomcat 与 Servlet 的关系 Tomcat中有四种类型的Servlet容…

[Python私活案例]24行代码,轻松赚取400元,运用Selenium爬取39万条数据

今天分享一单来自金主爸爸的私单&#xff0c;运用简单的爬虫技巧&#xff0c;可以有效的规避反爬机制&#xff0c;正所谓“你有张良计&#xff0c;我有过云梯”。这个案例也很好的体现了python语音的优势&#xff0c;规避了非常复杂的底层逻辑&#xff0c;所见即所得&#xff0…

你真的看懂扩散模型(diffusion model)了吗?(从DALL·E 2讲起,GAN、VAE、MAE都有)

本文全网原创于CSDN&#xff1a;落难Coder &#xff0c;未经允许&#xff0c;不得转载&#xff01; 扩散模型简单介绍 我们来讲一下什么是扩散模型&#xff0c;如果你不了解一些工作&#xff0c;你可能不清楚它究竟是什么。那么我举两个例子说一下&#xff1a;AI作画&#xff…

分布滞后线性和非线性模型(DLNM)分析空气污染(臭氧)、温度对死亡率时间序列数据的影响...

全文下载链接 http://tecdat.cn/?p23947 分布滞后非线性模型&#xff08;DLNM&#xff09;表示一个建模框架&#xff0c;可以灵活地描述在时间序列数据中显示潜在非线性和滞后影响的关联。该方法论基于交叉基的定义&#xff0c;交叉基是由两组基础函数的组合表示的二维函数空间…

为什么要让img浮动:

为什么要浮动&#xff1a; 图片不浮动的话&#xff0c;图片和文字是像下面这样排版的&#xff1a; 代码&#xff1a; <img src"https://static.maizuo.com/pc/v5/usr/movie/1f25dd6943762288dfd84b961c98f478.jpg" /> <div><div>红发歌姬</d…

OpenAI发布ChatGPT:程序员瞬间不淡定了

OpenAI发布ChatGPT&#xff1a;程序员瞬间不淡定了 12月1日&#xff0c;OpenAI发布了针对对话场景优化的语言大模型ChatGPT。ChatGPT是InstructGPT的兄弟模型&#xff0c;可以以对话的形式与用户交互&#xff0c;这使得ChatGPT能够回答问题、承认错误、质疑假设、拒绝不当问题…

时尚品牌Gucci 的Web3元宇宙营销进行时ing

Gucci 宣布在 The Sandbox 中推出 “Gucci Vault Land” 古驰藏宝阁 —— 元宇宙中心 &#xff0c;成为第一个在 The Sandbox 虚拟世界中拥有专门用于 Web3 产品的主流时尚品牌。Gucci 美学概念空间开放日&#xff1a;10月27日-11月 9 日 2022 年 Gucci Vault Land建立虚拟世界…

数据结构薄弱知识点

数据结构串KMP算法树二叉树二叉树的基本概念二叉树的遍历&#xff08;&#xff01;非递归实现&#xff09;先序遍历中序遍历后序遍历&#xff08;&#x1f538;非递归实现&#xff09;&#x1f536;线索二叉树找先序遍历的前驱节点&#xff08;&#x1f538;&#xff09;和后继…

Spring学习:二、Bean的管理

4. Bean的管理 ​ Spring的基本Bean管理包括Bean配置&#xff0c;Bean实例化和Bean的依赖注入。这些管理可以通过手工编码的方式把每个Bean注册到容器中&#xff0c;也可以通过properties文件和xml文件配置Bean和Bean之间的依赖关系。通常我们的配置方式是XML作为配置文件。 …

基于纳芯微产品的尾灯方案介绍

文章目录1.前言2.方案简介2.1 概述2.2 功能介绍2.3 DEMO资料3.主要器件介绍3.1 LED Driver3.2 LDO3.3 CAN\LIN收发器4.演示视频5.推荐阅读1.前言 最近拜访一些做尾灯模组的客户了解到&#xff0c;目前LED Driver依然紧缺&#xff0c;特别是TPS929120&#xff0c;BD18331这些差…

网络编程,UDP通信程序,TCP通信程序

一、网络编程 网络编程概述 网络编程 : 在网络[通信协议]下&#xff0c;不同计算机上运行的程序&#xff0c;可以进行[数据传输] 思考&#xff1a; A电脑中的QQ&#xff0c;发送消息给B电脑中的QQ。那么需要知道[哪些条件]才能发送&#xff1f; 在这个故事场景下&…

GitHub 的基本使用

文章目录一、使用前工作二、GitHub 的基本使用一、使用前工作 下载 uu 加速器&#xff0c;用于访问 GitHub 网站&#xff08;有魔法工具的小伙伴请忽略&#xff09;&#xff1b;uu 加速器下载安装完毕后搜索框搜索学术资源并点击加速&#xff08;如图1.2.1&#xff09;&#xf…