基于Cortex-M3的STM32微控制器处理先进电机控制方法

发布者:RadiantBreeze最新更新时间:2012-08-07 来源: 21ic 关键字:Cortex-M3  STM32  电机控制 手机看文章 扫描二维码
随时随地手机看文章

变频器的问世和先进的电机控制方法让三相无刷电机(交流感应电机或永磁同步电机)曾经在调速应用领域取得巨大成功。这些高性能的电机驱动器过去主要用于工厂自动化系统和机器人。十年来,电子元器件的大幅降价使得这些电机驱动器能够进入对成本敏感的市场,例如:家电、空调或个人医疗设备。本文将探讨基于ARM的标准微控制器如何在一个被DSP和FPGA长期垄断的市场上打破复杂的控制模式,我们将以意法半导体的基于Cortex-M3 内核的STM32系列微控制器为例论述这个过程。

未标题-1.jpg

3STM32:强固的增长基础


    首先,我们回顾一下电机控制的基本原理。在电机控制系统内,为什么处理器非常重要?我们为什么需要非常好的计算性能?毕竟,Nicolas Tesla在一个世纪前发明交流电机时不需要编译器。只要需要调速,人们无法回避使用逆变器驱动一个性能不错的3相电机,控制一个永磁同步电机(PMSM)运转更离不开逆变器,这个复杂的功率电子系统的核心是一个直流转交流的3相逆变器,其中微控制器起到管理作用,以全数字方式执行普通的三位一体的控制功能:检测(电流、转速、角度…)、处理(算法、内务管理…)、控制功率开关(最低的配置也至少有6个开关)。

    采用标量控制是一个三相交流电机实现变速运转的最简单方式。标量控制原理是在施加到电机的频率和电压之间保持一个恒比。对于入门级电机驱动器,这是一个非常主流的控制方法,适合负载特性非常普通且控制带宽要求不高的应用(如功率非常小的电泵和风扇)。不幸地是,并不是所有的应用都能忍受如此简单的控制过程及其应用限制。特别是,标量控制在瞬变环境内不能保证最佳的电机性能(转矩、能效)。为克服这些限制,人们开发出了其它的电机控制方法,其中磁场定向控制(又称矢量控制)是应用最广泛的方法之一。这种控制方式利用两个去耦直流控制器,不管运转频率如何(例如转速),以驱动分开励磁电机的方式驱动任何一种交流电机(感应电机或永磁电机)。励磁电流与直流的主磁通量(在一个PMSM电机内的磁体磁通量)有关 ,而 90°移相电流可以控制转矩,功能相当于直流电机的电枢电流。当负载变化时,磁场定向控制方式可实现精确的转速控制,而且响应速度快,使定子磁通量和转子磁通量保持完美的90度相位差,即便在瞬变工作环境内,仍然能够保证优化的能效,这是实现以电机拓扑为标志的更复杂的控制方法所依据的基本理论框架,特别是对于PMSM电机,这个理论是无传感器电机驱动器的基础,既可以大幅降低成本(不再需要转速或转角传感器和相关的连线),同时还能提高电机可靠性。在这种情况下,必须只使用电机数学模型、电流值和电压值,通过计算方法估算转子角度位置。在最低分钟转数只有几百转的情况下,这种状态观测器理论(在其它控制方法中)可以实现无传感器的转速控制,在某些情况下,最低分钟转数是静止状态。不过,这对CPU是一个额外的实时负荷。最后,微控制器必须以1KHz到20KHz的速率连续重新计算矢量控制算法,具体速率取决于最终应用带宽,处理Parke和Clarke转换和实现多个PID控制器和软件锁相环确实需要高强度的数字计算,这就是过去为什么数字信号处理器、微处理器或FGPA器件被用作控制器的原因。   

尽管专用双模控制器和低端定点DSP架构已经问世,但是意法半导体仍然选择使用Cortex-M3内核开发STM32微控制器。这个解决方案可很好地满足大量的无刷电机驱动器的要求,从一次性工程费用的角度看,该解决方案的优点是采用行业标准的ARM®内核和标准微控制器的成本效益。[page]

基于Harvard架构,这个32位RISC采用Thumb2指令集,提供16位和32位指令。对比纯32位代码,这个指令集能够大幅提高代码密度,同时保留原有ARM7指令集的多数优点(附加优化的乘加运算和硬件除法指令)。

电机控制系统要求微控制器须具备卓越的实时响应性(中断延时短)、纯处理功能(如单周期乘法)以及优异的控制性能(当处理非序列执行流和条件转移指令时)。Cortex-M3能够满足所有这些要求。例如,当时钟频率是72MHz时,在25µs内对一个永磁电机完成一次无传感器磁场定向控制,这相当于在10 kHz采样率下25% 的CPU负荷。

在STM32微控制器内,该内核与意法半导体优化型闪存接口紧密配合,只需增加很少的外部元器件,周边外设即可处理外部事件(图2所示是STM32F103中容量微控制器的结构框图)。不用说,PWM定时器和模数转换器是最重要元器件。PWM定时器包括最先进的功能,如中央对齐模式PWM信号生成和死区时间插入逻辑,特别强调安全性:该模块直接控制功率开关换向,可控开关功率达到数千瓦。例如,用于配置某些重要参数的寄存器代码可以被锁保护,以防软件失效。只要“紧急停止”引脚被拉低,所有的 I/O引脚都被置于用户可配置的安全状态。这个功能设计采用组合逻辑模块,当主时钟(晶体)失效时,内部切换到后备振荡器之前,可确保保护电路仍然能够正常工作。最后,该微控制器还包含一个第4比较通道,专门用于触发模数转换器,实现最佳的电流测量精度。

未标题-1.jpg

2STM32F103中容量微控制器结构框图

即使最复杂的算法几乎也无法修正不精确的模拟测量值,但是,在某种程度上,电机驱动系统的总体性能取决于模数转换器的质量。STM32F103芯片内置三个采样率为1MSps的12位模数转换器,在整个温度和电压范围内,总不可调整误差 (TUE)低于5 LSB。模数转换器的数字接口有三个主要功能:首先,使CPU摆脱简单控制任务和数据处理;其次连接芯片的其余部件(中断请求、DMA请求、触发输入);最后,使STM32的多路转换器同步操作。在这些对无刷电机控制有用的功能中,我们首先考虑通道读序列发生器。对比传统的扫描电路(按照模拟输入序号,按序转换一定数量的通道), 在一个16个转换通道组成的顺列(例如:Ch3, Ch3, Ch0, Ch11)内,序列发生器可按任何顺序转换通道,当设计人员在设计印刷电路板时,这个功能给设计人员带来更高的设计灵活性,为实现平均转换目的,准许对同一通道进行多次采样(在一个序列内),当整个序列转换完毕后,DMA通道将转换结果送到RAM,中断处理程序产生一个中断请求。

在检测电机相位电流的过程中,瞬变电压在功率开关上产生的噪声(在离线开关应用中,典型噪声达到几百个V/µs)是引起读取误差的一个重要原因,可能导致测量结果的信噪比非常低。解决方案是使模数转换器与控制功率级的定时器同步:因为换向时刻可以预定(由3 PWM定时器的比较寄存器定义),所以可以使用一个额外比较通道在换向时刻稍前或稍后触发模数转换操作。基于这个原因,STM32启用了第二个序列发生器(又称注入序列发生器),该序列发生器的优先级高于正常序列发生器,可以用一个不能延迟的新转换操作使当前的转换操作中断。通常情况下,正常序列发生器负责“内部管理”转换,连续检测温度或直流总线电压(作为后台任务),然后通过DMA通道发送到RAM,而注入序列发生器则将处理时间关键的转换操作,并将转换结果存储在模数转换器寄存器(将会产生一个中断,但是不能接受延时)。

[page]

对于一个能够执行先进的电机控制功能的通用微控制器,拥有微控制器是一回事,而开发轻松入门却是另一回事。利用软硬件工具可以把这个问题的两个方面都处理好。首先是拥有一套电机控制开发入门工具,包含测试工具(JTAG探针和光隔离器)、 微控制器芯片以及功率级电路板和演示用PMSM电机,这套工具用于产品性能评估和开发用途。模块化设计有助于升级演示应用(例如双电机控制微控制器电路板),评估多个(或定制)功率级。最后,意法半导体为STM32客户免费提供电机控制软件库。2.0版电机控制软件库利用头文件内的一个简单且低廉的 #define声明列表支持各种配置。软件库包含交流感应电机和同步电机的磁场定向控制算法,为简化代码的可读性和可维护性,这些算法采用C编程语言,再次证明了现代编译器的效率。该软件库还针对PMSM电机提供一个稳健的无传感器控制算法(基于磁通观测器),以及一个超高速内部永磁电机 (IPM)专用控制算法。当然,该软件还支持普通转速和位置传感器(增量编码器、霍尔传感器或转速传感器)。通过使用隔离传感器或分流器,STM32支持三种电流检测方法。STM32外设可以实现一个创新的单电流检测方法,利用成本最低的配置(一个简单的独特的电阻器)执行矢量控制。因为能够最大限度降低本征电流失真率,这项技术已取得专利权。

意法半导体目前的主要开发项目是控制电机直到静止状态的无传感器永磁电机控制和内置功率因数校正功能的双电机控制。最近,意法半导体成功演示了单电流检测方法,仅一个STM32微控制器就能执行两个单电流检测矢量控制功能,同时还用一个40 kHz的控制回路管理PFC级(详见图1)。

未标题-1.jpg

1STM32F103HD可以同时处双电机控制和PF

从功率开关分立器件,到复杂的系统芯片,意法半导体承诺以其独有的产品组合长期支持电机控制市场。STM32微控制器产品线将继续沿四个新方向部署,如图3所示,其中两个方向适用于电机控制。第一个产品线将面向低成本市场,开发低端的16位电机控制微控制器。另一个产品线以高性能为诉求,面向需要更高处理性能、更大存储容量和高带宽接口的应用。如此宽广的产品组合结合Cortex-M3内核,势必确立STM32架构适用于现在和未来电机驱动的多功能性。

关键字:Cortex-M3  STM32  电机控制 引用地址:基于Cortex-M3的STM32微控制器处理先进电机控制方法

上一篇:基于STM32F103的深海远程电机控制系统设计
下一篇:基于STM32F103XX微处理器的Micr0 SD卡读写

推荐阅读最新更新时间:2024-03-16 13:05

Keil环境,在调试STM32中犯过的错
1、貌似的变量冲突 程序中有一个全局变量赋值gUI = 0x0A;可是发现gUI并没有获得这个值,而是另一个位于RAM区首地址0x2000 0000的全局变量获得了这个值,感觉奇怪,堆栈溢出? 后来检查发现,在程序的前一个子函数中有语句: char ID ; sprintf(ID, %02X%02X%02X%02X , Card_Id , Card_Id , Card_Id , Card_Id ); OLED_8x16StrP(0,2,(u8 *)ID); //液晶显示ID号 上面代码中ID 缺少了字符串结束符,而OLED_8x16StrP()函数是以字符串结束符,也就是某个字节为0值判断显示结束的,于是不知道这个函数
[单片机]
sim800L调试问题
SIM800L默认上电开机,若此时没有把rst和pwk引脚提前设置好,SIM800l会使stm32进入硬件中断(这可能是因为方面电源的原因导致的),同时sim800L开机后需要一定的时间稳定下来,建议采取方法:上电后立刻用软件方式控制PWK引脚使模块开机,这样到了后面执行连接服务器函数的时候该模块也已经基本稳定了。 sim800L gpio脚的初始化需放在程序前面
[单片机]
STM32 LL库为什么比HAL库高效呢?
概 述 有些应用要求MCU能高效处理,特别是跑一些算法时,对CPU执行效率要求较高。 网上有很多文章说STM32Cube HAL执行效率不高,代码量大等问题 ,导致很多还没有入门,或初学的读者就产生各种各样的疑惑。 说实话,HAL相对标准外设库来说确实存在代码效率不高、代码量大灯这些问题,那么与之对应的STM32Cube LL恰好避免了这样的问题。 LL能高效的原因 简单总结一下原因: 巧妙运用C语言静态、内联函数直接操作寄存器 。 当然,这是其中重要的原因,还有一些其它原因,这里暂不描述。 你会在LL库.h文件中发现大量类似,静态、内联函数直接读写寄存器的函数。 比如读写IO口: __STATIC_
[单片机]
<font color='red'>STM32</font> LL库为什么比HAL库高效呢?
STM32的八种GPIO模式
STM32有八种IO口模式,分别是:模拟输入、浮空输入、上拉输入、下拉输入、开漏输出、推挽输出、复用开漏输出和复用推挽输出。 1、模拟输入 GPIO_Mode_AIN模拟输入,即关闭施密特触发器,将电压信号传送到片上外设模块(不接上下拉电阻)。 2、浮空输入 GPIO_Mode_IN_FLOATING浮空输入。浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。 3、上下拉输入 GPIO_Mode_IPD下拉输入,GPIO_Mode_IPU上拉输入。一般来讲,上拉电阻为1K-10K,电阻越小,驱动能力越强。 电阻的作用:防止输入端悬空,减少外部
[单片机]
STM32系列MCU解决方案展示
  STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。按性能分成多个不同的系列,满足不同应用的不同需求。由于STM32系列在开发工具的成本和广泛度;存储器的种类、规模、性能和容量;以及各种软件获得的难易度方面都做了非常出色的准备,因此迅速在市场上取得巨大成功,成为最受欢迎的工业及消费市场应用的MCU产品系列之一。   STM32系列 E-METER产品方案介绍   友尚集团   与传统的机械式电能表相比,eMeter能够更快、更便宜、更可靠地报告用电量。友尚推出ST于智能电表上的运用方案,整个方案中的架构主要包括计量芯片、MCU和外围芯片三个部分。   计量芯片   单相表
[单片机]
<font color='red'>STM32</font>系列MCU解决方案展示
STM32开发 -- Git的详细使用
在GPS部分有用到DMA,接下来看一下它的使用。 一、DMA简介 直接存储器存取(DMA) 用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。 两个DMA控制器有12个通道(DMA1有7个通道, DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。 二、DMA主要特性 ● 12个独立的可配置的通道(请求): DMA1有7个通道, DMA2有5个通道 ● 每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置。 ● 在同一
[单片机]
<font color='red'>STM32</font>开发 -- Git的详细使用
STM32-自学笔记(2.ARMCortex-M3内核构架)
Cortex-M3 的CPU:32位CPU cpu的两种运行模式:线程模式(Thread)和处理模式(Handler)。 cpu不处理异常事件时,会运行在线程(Thread)模式下。而当cpu需要处理一个异常事件时,就会切换到处理(Handler)模式下。 此外 Cortex-M3的cpu还有两种处理代码的方式:私有模式和非私有模式。 私有模式下,cpu可以执行所有指令。 非私有模式下,部分指令是被禁止执行的(xPSR寄存器操作的MRS和MSR指令)。同时也不能对cpu的系统控制区中的寄存器进行进行操作。 另外,堆栈的使用也是可以设置的,主堆栈在线程模式和处理模式下都可以使用。通过设置,Handler模式也可以使用进程堆
[单片机]
基于GAL器件的步进电机控制器的研究与设计
摘要:介绍了利用阵列逻辑器件GAL16V8对三相六拍步进电机实现控制的方法及其电路设计。通过计算机编程器对GAL进行编程,可以满足各种控制要求。该电路简单,工作稳定可靠,编程灵活方便。 关键词:通用阵列逻辑器件 步进电机 GAL16V8 三相六拍 步进电机广泛应用于对精度要求比较高的运动控制系统中,如机器人、打印机、软盘驱动器、绘图仪、机械阀门控制器等。目前,对步进电机的控制主要有由分散器件组成的环形脉冲分配器、软件环形脉冲分配器、专用集成芯片环形脉冲分配器等。分散器件组成的环形脉冲分配器体积比较大,同时由于分散器件的延时,其可靠性大大降低;软件环形分配器要占用主机的运行时间,降低了速度;专用集成芯片环形脉冲分配器集成度高、可
[半导体设计/制造]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved