「STM32 TALK」电机控制私享会实录(上) - 电机控制的基本实现

有一本名为《刻意练习》的书,不知大家是否读过?这本书是“唯天才论”的否定者,同时也认为被追捧的“一万小时法则”过于简单化、概念化,并不可靠。书中反复强调,要想在某个领域成为资深高手,无不来自刻意练习。

刻意练习并不复杂,总结其关键词:目标明确,专注投入,及时反馈,不断挑战舒适区,找到行业优秀导师,强化动机,坚持练习。

喝完鸡汤,我们来说说举办【STM32 TALK】的初衷,这是一个处处渗透刻意练习理念的小型技术活动。

【STM32 TALK】是依托STM32现有合作伙伴及大学计划搭建的泛生态资源分享、学习、应用平台,采取闭门交流碰撞、共享实战智慧的私享会方式,助力参会者资源协同最大化。私享会计划每月选取不同城市、从多维度考量与会工程师,定向邀请分享嘉宾,并选取热点应用进行主题分享讨论。

定位:小型 深度 干货

愿景:融合+共赢+互助+分享

8月30日,电堂协助ST举行了第一期“电机应用私享会”,有幸邀请到业内20余位资深工程师、高校老师、ST原厂技术大咖参与了闭门交流讨论。会中,不仅交流了彰显时代特征的多样化电机应用方向、丰满了电机控制思路,还探讨了精、坚、深的调试经验与技巧。

本次私享会内容分为两部分,以上下两集方式分享给执着于电机控制开发的工程师好基友。上篇主题为《电机控制的基本实现》,演讲人是来自浙江大学电机系的章玮老师。章老师在浙大学习工作近30年,一直从事电机课程的教学及研究,同时具备极为丰富的项目开发经验。

近年,很多芯片大厂都将电机控制的源代码开放出来,在极大地降低工程师的入门门槛的同时,提升了大家对电机控制的认知。在代码开放的情况下,对最终产品就提出了更高的要求,要出彩,必须有亮点。这需要我们在做电机控制时,学会一些逆向的思维。

问题来了,亮点如何产生呢?有些人会强调产品的难点,比如启动的时候怎么防失步、怎么切换,达到高速后怎么烧管子等等,这些问题最后会决定一个产品的成败。此外,还要考虑低速大力矩,或者高速应用,以及各项参数的精度。

电动机的分类

电机的种类有很多种,发展速度也很快,当我们要用到某种电机时,首先需要研究一下它到底是怎样一种电机。下面的图片列出了比较常用的几种电机。

现在开关磁阻电机、同步磁阻电机和混合励磁电机等,都很新颖,大家关注很多。在这么多的电机里,如何将我们的控制思想贯彻进去?在实施前,对电机需要有认真的研究和考量。

电机控制实施前的准备

各类新型电机

电机的运行原理

对于上面非常新颖的电机,我们可以先从运行原理来分析它是单端口还是双端口,即思考它有哪些量是可以控制的,比如异步电机是一个单端口的,所有有功无功的量都是从三根线进去的;而永磁电机、绕线式异步电机、双馈电机、混合励磁电机都是双端口的,可以有不同的方向进入控制的参数。然后就可以确定有哪些量可以影响电机的转速或者转矩,从而确定了对电机控制的途径。

其次,在对电机的端口做了判断之后,它的磁场是步进式的还是旋转式的,比如无刷直流电机方波的是步进式的;开关磁阻电机也是步进式的;永磁同步电机和同步磁阻电机都是旋转式的。步进式和旋转式反映到转矩生成上面波形也是不一样的。了解了这些特点,我们就对电机控制的方法有了思路。

然后看电机的稳态性能和动态性能跟哪些参数有关。

以上三点,对于一个电机工程师来说都是必须要掌握的。

电机的控制目标

根据动态响应和稳态的要求来确定控制目标是转速控制、转矩控制还是功率控制,比如恒压泵都是恒功率的控制,所以就要着重看它的功率特性。再比如转速控制是双环,对转速动态的要求是怎样的?如果对转速要求不高,可以考虑去掉转速环。

电机的控制方式

电机的控制方式分为标量控制、矢量控制和直接转矩控制,对应于控制目标。

异步电机以前大量使用标量控制,为了让它动态响应快,换成了矢量控制,而且异步电机不存在失步的问题,因为它是感应电机,存在转差率,可进行功率的自动调整。

而为什么同步电机控制最关心的一点是会不会失步呢?做的不好就会失步,失步的表现就是电流很大导致功率管烧掉。同步电机会失步的原因在于它的两个磁场是独立的,一个磁场(电枢磁场)在前面走,后面的磁场(转子磁场)如果没跟上来,转一圈,电压向量和电势向量夹角超过90度,进入不稳定区域。所以同步电机的控制关键之处在于会涉及到两个磁场,但在低成本的情况下,一般用途的同步电机也可以用标量控制;但是在转矩变动很大的时候,就会烧电机。这是因为异步电机有转差率在自动调整,而同步电机在用标量控制的时候,不能简单的把标量控制用到永磁同步电机里面,而是要去构造一个约束条件,类似于异步电机的转差率的一个调整参数,对同步电机的功率角进行调节。如果能把自动调节的量放到同步电机里面,从而解决同步电机的失步问题,确保电机能够先运行起来,再去考虑电机的高效运行问题。

在拿到一个对象之后,要对转子位置做一个判断,位置的判断分为低速、中速和高速三段。

我们一般是顺向的启动,要控制电机首先要知道转子的位置,然后加一个Iq,知道Dq,再进行一些其他操作。那我们能不能逆向来思考呢?顺向的东西有很多途径可以给我们提供,那产品想要更好的话,可能就要逆向。转子位置会影响电机的电流电压,电机的转矩、功率、电流都包含了电机所有参数的影响。所谓的逆向就是从这些参数中去提炼所需要的位置,用比较时髦的话就叫做观测器,滑膜观测和卡尔曼观测器都是通过电流电压反过来去观测它的位置。

在运行过程中会特别关注以下问题:低速启动、防失步、风吹的顺风逆风的启动,对于风机和泵来说,还要考虑堵转情况下如何启动?

对于行走的机器来说,如割草机,会涉及到什么呢?对于边界怎么处理;还有两个电机的协同和转矩的分配,怎么走直线;另外这种行走的机器会有堵转的问题,有时候是真的堵转,有的时候是假的堵转,真堵转和假堵转的差别就依赖于电机的运行;还有路径规划。

开关磁阻电机在很多领域已经很受人关注了,比如油田对电机的启动转矩和制动转矩的要求特别高,就会考虑用开关磁阻电机。做磁阻电机时,会涉及到怎么判断角度,在没有位置的时候,对于开关磁阻电机无位置传感器的东西怎么进行,还有开关磁阻电机怎样提高电流的采样精度。

分享几个波形:

开关磁阻电机最大的问题是它的电流波形和旋转磁场的电流波形完全不一样,是脉冲式的电流波形,所以得到的转矩是波动的。开关磁阻电机可设计成三相或四相的,四相会平滑一点。开关磁阻电机以前的做法都是有位置的,有位置就要加霍尔,还要加光电编码器,知道了位置之后来切换a相b相c相。

无位置开关磁阻电机是通过电机内部的磁场对电流饱和的影响判断出转子大概在哪个扇区以及什么位置,然后进行控制。

常见问题

最后分享一下做控制程序中的常见问题。

控制中最大的问题是嵌入式C语言的编写经常会出问题。新手在编程时,特别对于一个溢出和数制之间的自动变换,往往会出现一个bug,也就是程序看起来是对的,但运行以后发现不是我们要的结果。

另一个问题是标么值的使用。我们的程序中往往都会采用一些标么值,如果峰值限定和本身两者之间没有匹配好,特别会涉及到Kp、Ki的设定,Kp、Ki太大,一直饱和运行,这个时候肯定调不出来。

还有就是PI参数的调整,先调P,再调I。有参数借助基本公式进行粗调,没参数学会看响应波形。只能通过多调整才能解决,调的次数多了自然就积累出经验。