永磁同步电机FOC调试记录(一)

news2024/11/24 2:57:38

永磁同步电机FOC调试记录(一)

  • 前言
  • 架构
    • 硬件架构
    • 软件架构
  • 调试过程
    • 元器件选型
    • 开环控制
    • 编码器调试
    • 速度采样
    • 电流检测
    • 中断优先级的确定
    • 电流环部分
    • 烧坏IPM
    • 速度-电流环
    • 位置-电流环
  • 结语

前言

这是我个人从零开始尝试永磁同步电机(PMSM)控制的记录,主要是调试过程中遇到的一些问题以及debug思路,欢迎各位前辈讨论交流。
本研究基于硬石电子的硬件开发板以及相关的FOC程序,但本人所有上传的代码除了ST的官方库并没有直接使用其他企业或团体的代码,如果遇到侵权,请联系删除。
代码:Gitee仓库

本文不涉及FOC基础原理的讲解,使用ST官方提供的电机控制库实现FOC计算
本文将按照时间顺序记录调试遇到的问题和解决方法

架构

硬件架构

最开始采用了硬石电子YS-F4Pro控制板和开发板,后期变为自己设计打板的控制板和驱动板。值得注意的是硬石提供的成品驱动板中,线电流采用的是下管分压的采集方式,在电流采样逻辑中需要格外注意。

控制板暂时选用STM32F407 相关例程使用的是正点原子的例程

软件架构

软件架构比较简单,几乎是按照最基础的面向过程的变成方式实现的
主要是由主函数、电流采样、速度采样、FOC计算几个模块组成
详细内容如果有时间会在后面的文章中记录,同样也是因为软件还在不断迭代中,等开发完全之后再进行介绍

调试过程

元器件选型

开始这个项目之前首先进行了相关的元器件选型,选用了杭州微光生产的一款永磁同步电机,以及硬石电子配套的永磁同步电机开发版,这里由于功率板的电流采样功能使用的是下管导通的形式,给后边进行电流采样的时候留下了一个大坑,暂时按下不表。
编码器选择的事多摩川的一款多圈绝对式编码器,单圈精度23bit,多圈13bit,使用485协议与控制板通信。

开环控制

首先要对电机进行开环控制,即生成三路互补的PWM波,本文采用了SPWM的方式(这部分也是由硬石电子提供的)对电机进行开环控制,值得注意的是,在使用硬石原装SVPWM代码进行开环调试时电机不能旋转,最后定位到的原因是MOS管驱动芯片的使能引脚没有设置。这是本次调试遇到的第一个问题,以后如果遇到这类问题的调试思路是在板子上一级一级地看信号状态,这样就能定位到信号时在哪里突然消失的,也就是哪部分出现了问题。

编码器调试

完成电机驱动部分程序的编写后进行反馈回路的调试,首先是调试编码器,也就是需要用485协议与编码器进行通信。遇到的主要问题是485协议本身就是串口的一种形式,只不过使用专用芯片将串口信号转化成了485协议的信号,这里同样有相应芯片使能的问题。
另外一个要注意的问题是通讯时的波特率,我用的编码器通讯波特率是固定的,2.5Mbps,意味着我的速度采样同样不能太快。这里遇到的主要问题是我之前使用的485通信例程中的接收函数主要针对的是和电脑进行通信,而这种与传感器之间的通信可能有许多问题。需要使用示波器观察波形定位具体问题。
发送0x02, 0x08
如上图所示,编码器在接收到单片机的查询指令后会立即返回数据,而此时单片机还没有准备好接收数据,就需要在具体的接受函数内部进行调试,增加或减少一些延时,让单片机能够收到相应的数据。
另外还要注意数据高低位的问题,下图分别是高低位设置错误和设置正常是编码器返回的结果。
高低位设置错误
高低位设置正确
最后一个问题是,读取数据过程中涉及到了IO操作,这样的操作应该在独立的中断中进行操作,不然有可能在读取或发送数据的过程中被别的中断服务函数打断,导致不能正常读取接收到的数据。
同时还遇到了串口中断需要清楚中断标志位的操作,这个可能是由于我在移植程序的时候漏掉了这行代码,导致程序移植卡在串口中断服务函数中不能出去。

速度采样

完成了编码器的通讯调试之后就可以进行速度环的设计和编写,遇到的问题主要是单位换算的问题,即把编码器的绝对位置换算成速度,这个受到采样频率和时钟频率的影响,例如目前这套程序中速度采样的频率是5000Hz,编码器两次返回数据之差要除以0.2us,当改变时钟频率或者采样频率时,这个被除数也要随之改变。

在这里插入图片描述
在这里插入图片描述

电流检测

这期间遇到了一个故障,就是我在给编码器供电的时候不小心将编码器烧了,替换编码器浪费了很长时间,最终也没能成功,只能是重新购置了一台电机。
电流检测主要是通过采样电阻将线电流转化成电压信号输入给单片机的ADC引脚进行采样,这部分没什么复杂的,主要是要确定好ADC采样的方式,F407提供了多种多样的采样方式,目前我选择了一种最简单的单次采样的方式,采样两个通道大约需要60us左右,不知道后边换采样方式之后能不能降低采样时间,我是用的是12位精度的采样(F407支持的最高精度),后边可能考虑更换成H743芯片以及更换采样方式来降低采样时间。
电流采样时间和编码器读取时间是这套算法中最耗时的两个操作,目前这套程序的控制频率是5000Hz,也就是每次控制环有200us的时间进行采样和计算,速度采样和电流采样本身就要耗时60~70us,大大限制了控制频率的提高。但是一个已知的优化方向是,使用DMA进行相关采样的加速,这样就可以更快完成采样,将时间留给计算或者其他资源。

中断优先级的确定

在加入电流采样之后就会有中断的冲突,最终确定了如下的中断优先级:
串口中断优先级0,0
高速任务优先级1,0
中速任务优先级2,0
其中中断优先级数字越大,代表优先级越低

电流环部分

电流环是FOC程序的灵魂,我在之前的测试中发现ADC能够正常采集电流,但是当电机转起来之后,电流的采样就出现了奇怪的现象,如图,上图为示波器采集的电流采样电阻上的波形,下图为ADC的值,电流似乎成周期性地采样成功。
在这里插入图片描述

在这里插入图片描述
这种周期性出现的问题显然是软件问题,最后请教前辈定位到是之前电流采样电路部分留下的坑,下图为硬石的功率板电流采样部分的电路。
在这里插入图片描述
可以看出Isensor U是在下管(下方的/接地的MOS管)和地之间的,也就是只有下管道通的时候,这里才能采样出电压,而为什么能够周期性地采出波形,就是因为正好碰上了下管道通时候能采样。
解决方法是在电流检测之前加上一个判断条件,判断是否下管道通,具体的实现逻辑是,进入到上文提到的200us的控制周期后,等待下管道通,但是有三个下管,所以选用了三个下管全部道通的时候进行采样的方式,由于我们的PWM采用的是中心对齐模式,只要在PWM生成的定时器的另外一个通道加上一个溢出中断即可,也就是定时器每完成一次计数,出现一个中断,然后前文说的等待下管道通,等待的就是这个中断的标志位。这样就能够采样出还算能看的电流波形。
在这里插入图片描述
上图是开环旋转的时候采样的电流波形,当使用电流环进行控制的时候发现电机会在某一个点抖动,这意味着角度反馈每调节好,后边调节了角度反馈的换算方式,终于完成了电流环的闭环。主要的问题是电角度和机械角度的换算,由于永磁同步电机有的时候极对数不为1,机械角度*极对数=电角度,也就是说编码器返回的角度需要乘极对数,才能够给FOC进行计算。最后电流环闭环效果如下:
在这里插入图片描述
这里还有一个小的插曲,就是电角度调零问题,需要手动旋转电机,然后观察一下电角度和机械角度的关系,一般情况下需要加一个偏置才能正常使用,而这个偏置只要在一个范围内,电流环就能闭合,但是最好还是通过示波器精调一下这个偏置的值。

烧坏IPM

由于后边我们使用自己设计的板子进行调试,发现会把IPM烧掉,在烧了好几块之后发现是功率电上电之前必须打开控制电,不然MOS管的驱动信号不确定,也就导致了MOS管的开关状态不确定,有可能直接短路功率电,导致击穿IPM,同样的,也不能够在接通功率电的时候烧写程序,在烧写程序的过程中单片机的引脚状态也是不确定的。
另外引出了一个小的问题,就是一定要使用示波器观察一下单片机从上电启动,到正常工作这段时间内,PWM的输出引脚的状态是否是确定的,之前遇到了某些管脚在高低电平之间波动一下,再变成可控的状态,这一般是某些冗余代码没有删除,在不影响主逻辑的情况下一直被保留了下来。

速度-电流环

这部分主要是PID参数的调节,选用了大家常用的“实验法”一步一步试出来一个还可以的参数组合

位置-电流环

在闭合了速度-电流环之后尝试闭合速度环,一个小的问题是即便使用同一套电路参数和电机,内环的PI参数也有一些不同,在闭合不同外环的时候本项目使用了不同的内环参数,在闭合位置环时,电流环的Kp较小,也就是启动和停止的比较“软”

结语

本篇文章到这里就结束了,但是调试还在继续,后边我会使用别的文章记录硬件调试过程中遇到的问题,欢迎大家批评指正。
鸣谢:PSZ、CB、LH、YKT、LXY、LWT、LH几位老师和同学

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

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

相关文章

别只看影响因子了!又1本毕业神刊偷偷被On Hold了!请谨慎投递

【SciencePub学术】昨日,2023JCR正式发布,现在影响因子的话题依旧是“热搜第一”。大家可以根据自己的研究方向,参考最新发布的JCR报告进行投稿选刊。若大家对于投稿选刊方面有任何问题,都可联系张老师为您解答! 相关…

Qt源码阅读笔记:初步了解QtCore模块目录结构

Qt框架是一个跨平台的C应用程序框架,广泛用于开发图形用户界面程序以及用于无界面后台操作的工具和服务器。它由多个模块组成,其中QtCore模块提供了核心的非GUI功能。 QtCore 提供了元对象系统,扩展了c 在元对象系统的基础上,qt又…

timescaledb:创建real-time aggregate

创建hypertable【chz_a】 create table chz_a (time timestamp,device_id int8, value double precision,primary key (time) ); SELECT create_hypertable(chz_a, by_range(time) );往表里面写入数据 # 当天的数据 insert into chz_a (time, device_id, value) values (now(…

七人拼团:互助共赢,电商新动力

在当前繁荣的电商领域中,七人互助拼团模式以其别具一格的激励机制和互助合作理念,成为了消费者和商家共同瞩目的焦点。接下来,我们将详细解读这一模式中的直推激励、滑落补偿以及团队成就奖,并探讨其如何体现互助合作的精神。 一、…

Android面试题:App性能优化之电量优化和网络优化

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 电量优化 Doze模式 系统的行为进入Doze后看看App有没有奔溃就可以 Standby待机模式 针对某个应用 处于上述模式,App会无法访问…

Spring Boot中的各种事件

spring boot 各种事件贯穿整个启动的生命周期,读懂了这些事件也差不多理解了springboot的启动流程。 SpringApplicationRunListener中的事件 接口org.springframework.boot.SpringApplicationRunListener定义了spring启动过程中各个事件被触发的顶层方法 public …

内容安全复习 1 - 信息内容安全概述

文章目录 信息内容安全简介网络空间信息内容安全大模型 人工智能简介 信息内容安全简介 网络空间 网络空间是融合物理域、信息域、认知域和社会域,控制实体行为的信息活动空间。 上图展示了网络空间安全的结构。可以看到将网络空间划分为了网络域和内容域两个部分。…

图片的格式怎样在线转换?在线改图片格式的操作技巧

图片作为日常生活中常用的内容展示方式,面对不同的用途图片的格式也是不同的,那么怎样快速完成图片格式转换呢?通过软件来修改图片格式比较麻烦,现在可以在网上使用图片格式转换器工具来在线改图片格式,这种方式会更加…

RK3568技术笔记十六 QT5开发

背景知识 在阅读本章前,如果对下面所列举的知识点有一定的了解,将有助于更好的理解本章内容。 C基础知识,了解简单的类,继承,重载等面向对象概念;Linux基础知识,了解基本的Shell命令&#xff…

谷歌Chrome浏览器排查js内存溢出

1. 打开谷歌浏览器检查台 2. 点击memory 3. 点击开始快照录制,时隔一会儿录一次,多录几次 4. 进行快照对比

TMS与WMS海外仓系统:两者分别是什么、区别、结合使用的好处

TMS国际物流系统和WMS海外仓系统都旨在提升海外仓储物流作业的效率,不过他们在供应链中却各自发挥着不同的作用。 今天我们会深入的给大家介绍两者分别是什么,区别在哪,结合使用TMS国际物流系统和WMS海外仓系统的好处是什么。 1、了解WMS海…

AI+前端技术的结合(实现图片识别功能)

随着人工智能技术的不断发展,AI在前端设计页面中的应用变得越来越普遍。比如:在电商平台上,可以利用对象检测技术实现商品的自动识别和分类;人脸识别;车辆检测;图片识别等等......其中一个显著的应用是在图…

爆火的AI姓名头像号篇篇10w+, 流量主赚麻了...

最近二师兄在刷公众号时,看到一个非常有趣的账号。简单又“暴li”。 几乎篇篇10w。点击去一看,内容也是非常极简,利用姓氏生成头像。一个字都不多。 几乎每篇文末都有广告,一篇10w按照800来算, 一个月大概 ~~一七得七、…

【SPIE出版】第六届无线通信与智能电网国际会议(ICWCSG 2024,7月26-28)

随着科技的飞速发展和能源需求的日益增长,智能电网技术逐渐成为电力行业的重要发展方向。与此同时,无线通信技术在近年来也取得了显著的进步,为智能电网的发展提供了强有力的支持。为了进一步推动无线通信与智能电网的结合与发展,…

手机拍照如此强,还有买相机的理由么?

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 我们见证了关于摄影工具的世纪之争。 尽管手机摄影技术飞速发展,但传统相机的忠实拥趸们认为…

Flink入门实战详解

Flink入门实战 Flink项目构建 1)基于MavenIdea创建项目&#xff1a; 使用maven进行项目构建&#xff0c;如图1所示。 图-34 构建maven项目 输入项目中的maven的坐标和存储坐标&#xff0c;如图2所示。 图2 maven坐标和存储位置 2)Maven依赖&#xff1a; <properties>…

BEVM基于OP-Stack发布首个以WBTC为GAS连接以太坊和比特币生态的中继链

为了更好的连接以太坊和比特币生态&#xff0c;BEVM团队正在基于OPtimism的OP Stack来构建一个以WBTC为GAS兼容OP-Rollup的中继链&#xff0c;这条中继链将作为一种完全去中心化的中间层&#xff0c;把以太坊上的主流资产(WBTC/ ETH/USDC/USDT等)引入到BEVM网络。 不仅如此&am…

最新扣子(Coze)实战案例:扣子卡片的制作及使用,完全免费教程

&#x1f9d9;‍♂️ 大家好&#xff0c;我是斜杠君&#xff0c;手把手教你搭建扣子AI应用。 &#x1f4dc; 本教程是《AI应用开发系列教程之扣子(Coze)实战教程》&#xff0c;完全免费学习。 &#x1f440; 关注斜杠君&#xff0c;可获取完整版教程。&#x1f44d;&#x1f3f…

Element-UI实现el-dialog弹框拖拽功能

在实际开发中&#xff0c;会发现有些系统&#xff0c;弹框是可以在浏览器的可见区域自由拖拽的&#xff0c;这极大方便用户的操作。但在查看Element-UI中弹框&#xff08;el-dialog&#xff09;组件的文档时&#xff0c;发现并未实现这一功能。不过也无须担心&#xff0c;vue中…

GaussDB关键技术原理:高性能(一)

引言 对数据库性能进行优化是令人激动的&#xff0c;无论是对其进行性能需求分析、性能需求设计、性能问题定个位都是富于变化又充满挑战的工作&#xff0c;本章围绕“数据库性能”进行全面系统化的介绍&#xff0c;首先从数据库在现代软件栈中所处的位置出发&#xff0c;介绍…