Simulink 自动代码生成电机控制:基于霍尔FOC模型和代码生成

news2024/11/17 7:36:12

目录

霍尔角度估算原理

霍尔角度估算FOC模型和仿真

代码生成软件调试

总结


霍尔角度估算原理

PMSM在定子侧以互差120°电角度的位置安装3个霍尔元件Ha, Hb, Hc。当转子转动时,霍尔元件会产生3个相位差120°电角度的高低电平信号。霍尔信号会将一个电周期划分为6个扇区,每个扇区60°电角度,通过单片机的定时器捕获可以获得每个扇区运行的时间t。 为了获得准确的转子角度,电机绕组A相接电源正极,BC两相接电源负极,定子磁场与转子磁场相互作用,最终定位到转子零位点,也就是A相绕组的轴线位置。确定零位点后,根据霍尔的信号顺序,可以得到霍尔信号与转子位置的对应关系,如下表所示:

扇区

霍尔ABC状态

基准角度

扇区范围

1

001

0°~60°

2

011

60°

60°~120°

3

010

120°

120°~180°

4

110

180°

180°~240°

5

100

240°

240°~300°

6

101

300°

300°~0°

从上表可知,通过6个位置的霍尔,只能得到6个准确的位置角度,而FOC控制需要的角度是0°~360°(0-2π). 就需要采用一定的手段把6个位置拟合成连续的位置。

这里采用平均加速度法通过6个位置点估算出电机的角度。平均加速度法中假设电机的机械时间常数远大于电气时间常数,认为每个扇区内速度恒定不变,并且忽略从上一扇区到下一扇区的速度突变。原理如下:

 

 通过MCU中断可以捕获霍尔的6个位置,角速度可计算:

 wi代表当前的角速度,可以通过霍尔中断计算得到6个位置的角速度。平均加速度法假设在每个扇区内角加速度不变,并且扇区切换时角加速度不突变。角加速度a如下:

 

 实时角速度可以计算:

 电角度可以表示为:

 

 

霍尔角度估算FOC模型和仿真

根据以上的计算原理,搭建仿真模型:

Hall模型的构建需要搭建Hall信号,模拟MCU的定时计数器模块,Hall中断,ADC中断。

 通过模拟MCU的计数器仿真实际硬件的计时方式,这里可以调整计数频率和实际MCU匹配,也可以通过改生成后代码的参数。计数值的计数频率就是模型的仿真步长,在实际硬件中如果时间换算不正确可能会引起转速估算不对。角度估算模块如下:

系统仿真效果:

估算角度和实际角度

 速度环控制

 

代码生成软件调试

通过MCU定时器2的中断,读取霍尔引脚电平,得到电机扇区,并读取到定时器5进入霍尔中断时的计数值传入模型生成的代码接口。

 

Demo板的电机接线和霍尔序列对应的角度顺序如下,不同的电机顺序可能不一样,接线顺序不一样Hall扇区也会不一样,MCU不一样计数器的频率也有可能不一样,需要针对实际的硬件和MCU底层合理调整。除此之外,还有补偿角度也有可能不一样。

 

 如下图,手拨动电机转动,如果角度超前或者滞后就可调整Hall_AngleShift参数,使其和编码器的角度(这里编码器等于真实角)保持一致,也可以通过无感跑起来后在线调整。也可以通过恒定负载微调使相电流减小找到最合适的值。

总结

从仿真效果和实际运行效果可以看出,霍尔在速度极低的时候角度估算误差是挺大的,这也是目前霍尔FOC面临的难题。本实例通过Simulink建模模拟Hall信号和 MCU定时器,实现了霍尔FOC电机控制测试系统的构建,并生成代码在开发板上运行。

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

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

相关文章

可以快速搭建的免费开源项目:直播带货、富文本笔记、思维导图、声音克隆、消息推送服务、文档协作等等

可以快速搭建的免费开源项目:直播带货、富文本笔记、思维导图、声音克隆、消息推送服务、文档协作等等。 01 Pure Live 一个想让直播回归纯粹的项目,没有礼物、粉丝团、弹窗,只有直播和弹幕。这是国人在GitHub上制作的一个开源的直播系统&am…

一个转行者的自述,大学生做职业规划要趁早

这篇文章写给对自己的职业规划不清晰、想从第一份工作就找准职业方向的应届大学生。 作为21年毕业的职场新人,算不上建议,也不写鸡汤,只是在这里认真分享我走过的弯路。文章略长,预计阅读时间8分钟。 先说一个关于海的小故事 人们…

CSS -- CSS使用过渡(transition)添加动画

CSS 3过渡 过渡(transition)是CSS3中具有颠覆性的特征之一,我们可以在不使用 Flash 动画或JavaScript 的情况下,当元素从一种样式变换为另一种样式时为元素添加效果。 过渡动画: 是从一个状态 渐渐的过渡到另外一个状态 可以让…

js什么是闭包?简单理解

闭包 作用域链和执行上下文 理解闭包前,先引入一个概念,作用域链 用我自己理解的讲:在一段程序中,程序内的变量、函数等都被串在这条链上,当我们使用这些变量、函数时,程序就会在这条链中搜索&#xff0…

【最新】滤器完整性检测各国规定

中国 用于直接接触无菌药液或无菌设备表面的气体的过滤器,应在每批或多批次连续生产结束后对其进行完整性测试。对于其他的应用,可以根据风险评估的结果,制定完整性测试的频率。 ——除菌过滤技术与应用指南 2018 美国 We recommend that …

系统中的安全架构

系统中的安全架构目录概述需求:设计思路实现思路分析1.shiro2.多模块下的安全架构参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for chan…

【网安神器篇】——searchsploit漏洞利用搜索工具

作者名:Demo不是emo 主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座…

MyBatis是如何初始化的?

摘要:我们知道MyBatis和数据库的交互有两种方式有Java API和Mapper接口两种,所以MyBatis的初始化必然也有两种;那么MyBatis是如何初始化的呢?本文分享自华为云社区《MyBatis详解 - 初始化基本过程》,作者:龙…

golang 协程的实现原理

核心概念 要理解协程的实现, 首先需要了解go中的三个非常重要的概念, 它们分别是G, M和P, 没有看过golang源代码的可能会对它们感到陌生, 这三项是协程最主要的组成部分, 它们在golang的源代码中无处不在. G (goroutine) G是goroutine的头文字, goroutine可以解释为受管理的…

Java+MySQL基于ssm的学生宿舍管理系统

随着我国教育制度的改革,各大高校一直在不断的扩招相对应的学生的数量也在不断的增加。在学生数量增加之后学校后勤人员就需要对后勤部分更加精准的进行管理,其中宿舍管理就是后勤管理中比较重要的一个组成部分。如何能够对学生的宿舍信息进行更加科学合理的管理是当前大多数高…

Word文档误删怎样恢复?6种实用方法分享给你

如果您曾经因为没有保存微软Word文档而丢失了所有工作,那么您就会明白疼痛是多么明显。 幸运的是,自从在软盘上备份文件的黑暗时代以来,Word已经走过了漫长的道路。如今,如果您丢失了未保存的Word文档,可能仍然有一种…

31.Django大型电商项目之加入购物车——Django的增加、删除、修改、查询实操

1. 加入购物车 views # netshop\cartapp\views.py from django.shortcuts import render, redirect from django.http import HttpResponse, HttpResponseBadRequest from utils.cartmanager import * # Create your views here. # 购物车视图 def cartView(request):# 获取表…

高通Ride软件开发包使用指南(13)

高通Ride软件开发包使用指南(13)9.3使用HLOS验证PCIe交换机9.3.1先决条件发行说明9.3.2 PCIE设备枚举9.3.3验证SA9000推断9.3.4芯片对芯片9.3.5 NVME操作9.3.6 10Gb以太网9.3使用HLOS验证PCIe交换机 本节提供有关如何通过HLOS验证PCIe交换机用例的信息Q…

Set接口-HashSet和LinkedHashSet

1.Set 接口 1.1基本介绍 1)无序(添加和取出的顺序不一致),没有索引; 2)不允许重复元素,所以最多包含一个null; 3)JDK API中Set接口的实现类有: 1.2Set 接口的常用方法 和 List 接口一样, Set 接口也是 Collection 的子接口,因此,常用方法和Co…

Pytorch100例 | 用深度学习处理分类问题【实战教程】

PyTorch和TensorFlow库是用于深度学习的两个最常用的 Python 库。PyTorch 是 Facebook 开发的,而 TensorFlow 是 Google 的项目。在本文中,你将看到如何使用 PyTorch 库来解决分类问题。 分类问题属于机器学习问题的范畴,其中给定一组特征&am…

【檀越剑指大厂—SpringBoot】SpringBoot应用

一.配置 1.配置文件 SpringBoot 使用一个全局的配置文件,配置文件名称固定 application.propertiesapplication.yml 配置文件的作用:修改 SpringBoot 自动配置的默认值;SpringBoot 在底层都给我们自动配置好 2.tomcat 配置 server:port: 8081error…

IDEA下使用Git与GitHub【超详细】

IDEA结合Git 初始化Git及提交 查看提交版本 切换版本 创建分支与切换 合并分支 ​编辑 分支冲突 IDEA结合GitHub 创建GitHub账号 上传代码到本地仓库 推送代码 拉取代码 克隆远程库到本地 这里是在学习完Git的基础指令来了解在企业合作开发下如何用集成工具联合Git…

Photoshop - 高反差保留

对图像处理相关学习的一些笔记归档发表,关于锐化的原理; 首先简而言之,当颜色明度为100%的时候,为白色,反之为黑色: 为50%时,就是中性灰; 在混合方式中,变暗这一组&…

JVM之虚拟机栈

1. 虚拟机栈概述 虚拟机栈不存在GC,但存在OOM,程序计数器二者都不存在 2. 栈的存储单位 3. 局部变量表 变量的分类:按照数据类型分:① 基本数据类型 ② 引用数据类型 按照在类中声明的位置分:① 成员变量:在使用前,都经…

【实时数仓】DWM层订单宽表之维表关联异步查询(续)、DWM层支付宽表需求分析、需求实现(源码)

文章目录一 DWM层-订单宽表1 维表关联代码实现(1)优化2:异步查询a 关联省市维度b 关联SKU维度c 关联SPU维度d 关联品类维度e 关联品牌维度f 最终结果展示(2)结果写入kafka sink二 DWM层-支付宽表1 需求分析与思路2 需求…