本帖最后由 Go_PSoC 于 2010-11-2 10:57 编辑
基于PSoC3芯片的无位置传感器BLDC电机控制
时间:2010-04-12 15:18:29 来源:CYPRESS 作者: 顾 全 赛普锐斯半导体亚太方案中心
http://www.21ic.com/app/control/201004/57177.htm
摘要
本文介绍基于新一代可编程片上系统芯片PSoC3(CY8C3866AXI-040)的无位置传感器无刷电机(BLDC)控制方案 。PSoC3 片内丰富的资源减少了BLDC无传感器控制对外部器件的依赖。借助于片内模拟多路选择器,一个比较器模块就能采样三路反电势信号。而比较器的时钟同步功能可以在PWM高电平时刻对反电势信号进行采样,并将之与母线电压做比较以获取反电势过零点。此外,该芯片在处理电机控制的同时还可以处理电容感应按键扫描以及与上位机通讯等任务。
Keyword: BLDC sensor-less control, Programmable system on chip
关键词:无刷直流电机 无位置传感器 可编程片上系统
引言
相比传统的有刷直流电机而言,无刷直流电机(BLDC)用电控制装置取代了电刷和换向器,提高了电机的可靠性,减小了电机的噪音,并且方便了电机的维护,正在许多领域获得广泛应用。无刷直流电机的换相是借助于安装在电机定子上的位置传感器(光学,磁性等元件)实现的。常用的三相六状态120度控制方式保证在任何时刻有两项绕组导通,另外一项绕组不导通。当转子转到一定位置时,位置传感器输出信号发生变化提示控制器进行换相。 其换相逻辑如图1所示:
图1 带霍尔传感器的无刷直流电机换相状态图
然而,位置传感器的使用带来一些缺点:增加电机的成本和体积,增加了内部连线降低了系统的抗干扰性, 在特定场合(高温,强震动,高腐蚀性)容易实效等。因而,近些年来,随着控制芯片的性能的日益强大,无传感器的BLDC电机控制逐渐成为研究热点。
无传感器的转子位置检测
无刷直流电机的无位置传感器控制的关键技术在于转子位置信息的获取及估算方法。无位置传感器检测方法主要包括反电动势过零点检测法、反电动势三次谐波积分检测法、续流二极管检测法、反电动势积分法、磁链估计法、扩展卡尔曼滤波法等。本文所采用的位置检测方法为经典的反电势过零点检测法。其原理如下:
图2 无刷电机驱动电路拓扑
图2为典型的三相星型连接的无刷电机驱动电路拓扑。Va, Vb,Vc为三相端电压,Vn为中性点电压。假定C相为非通电相,则根据电机方程有:
(1)
其中E为反电势,I为相电流,L为电感。
A相电流与B相电流大小相等,流向相反。
基于式(8), 采样端电压可以推算出Ec的过零点。而种算法又有如下的细分算法:
1) 直接应用式(8),同时用ADC去采样三相电压。
2)在PWM 输出信号为OFF时采样非通电相电压,将之与零电压比较。
因为在此时,由式(8)得到:
忽略二极管和功率管的保护压降,Vc的过零点就是Ec的过零点。
3) 在PWM 输出信号为OFF时采样非通电相电压,将之与母线电压的一半比较。
在此时,
由式(8)得到:
所以,忽略二极管和功率管的保护压降, Ec的过零点就是Vc与母线电压一半比较翻转的点。
综合上述算法,1)的算法简单明了,但对ADC模块的要求较高,要求同时采多路电压。并且需要ADC的采样与PWM同步以消除PWM斩波所带来的噪声。2)的算法在低速时比较有优势,因为低速时反电势信号比较弱,这种算法的采样区域恰为非通电相端电压过零区域,无需对端电压信号做缩小处理。但当PWM 的占空比比较高时,由于可供采样的时间点太短,容易造成采样失败,所以不太适合全速全载运行的情形。 而3)种算法则具有较宽的调速范围。 本文的实现方法就是采用了第三种方法,在PWM为ON的时候去比较非通电相电压与半母线电压。
PSoC3 芯片介绍
PSoC 是世界独一无二的可编程嵌入式片上系统。它是在一片芯片上集成了可编程模拟和数字外设功能、内存和一个微控制器。赛普拉斯的可扩展PSoC 平台可根据设计需要进行调整,因此不必频繁地更改设计来适应不同的微控制器体系架构。
PSoC1是第一代PSoC芯片,它的特点是借助经过成本优化的8位M8C CPU子系统,获得优异性能、可编程性和灵活性。易用的设计软件无需编写很多代码或根本不需要编写代码,从而缩短了创建嵌入式解决方案的时间。
PSoC3在PSoC1的基础上,赛普拉斯新推出地一款新架构,高集成化芯片。它增加了新设计的高精度、可编程模拟模块,单循环、通道式8位8051内核和可配置的高性能数字系统。由于具有一个高性能8位8051RISC内核(提供高达67MHz和33MIPS),PSoC3体系架构可以比标准8051运行速度快10倍之多。同时,片内还配置了直接内存访问接口(DMA),加速了数据在片内不同外设/内存之间的传输,减少了CPU的开销。
CY8C3866AXI-040 是PSoC3 芯片家族中的一员,它的系统架构如图5所示:
图5 CY8C3866AXI-040的系统架构
图的左边部分为系统资源,包括CPU,DMA, 中断控制器,内存,电源管理器,内置的I2C/USB等通讯模块以及调试接口。中间部分为片上数字系统和模拟系统。数字系统包括24个可编程的通用数字模块(UDB)和固化的计数器,PWM发生器等。而模拟系统包括ADC模块,DAC模块,比较器,运算放大器以及通用的可编程模拟模块。右边部分为IO 的端口。IO口可以通过接口连接到任意的数字/模块单元上。
在本设计中,重点用到的模块包括:比较器,UDB模块,DAC模块等。
电机反电势过零点的监测
利用CY8C3866AXI-040的片上资源,无刷电机的过零点监测无需借助任何外部芯片。监测的原理前面阐述过,即在PWM 输出信号为OFF时采样非通电相电压,将之与母线电压的一半比较。 此方案中PWM调制模式为对上侧开关管进行PWM调制,对下侧桥臂采取恒通的方式进行驱动。电机为24V,30W的低压无刷电机。
图6为检测反电势过零所配置的片内资源框图:
图6 反电势过零点检测框图
A、B、C代表三相端电压输入。Half Vbus 为半母线电压。 片内的模拟信号选择器(Analog Mux)会根据换相状态动态的切换所要采样的非通电相。片内的比较器具有时钟同步触发的功能。该功能使得比较器可以在时钟信号的上升沿采用输入端信号并作比较操作。该设计中的时钟信号来自于数字模块中的PWM模块的输出。 这样,比较器可以在PWM为高电平的时刻将端电压与半母线电压作比较。比较器的翻转时刻即是反电势过零点。而比较器的输出翻转时,可以触发中断,通知CPU作相应的处理。 此实现方法原理简单,无需外部多路选择器/锁存器/比较器。
另外,片上的比较器还具有滞回比较的功能。即比较器输出器自上而下翻转与自上而下翻转的电压并不完全一致,而是有一个10mV左右的滞回电压。此功能可以避免比较器输出受毛刺影响而被误触发,特别适用于夹带许多噪音的反电势信号过零检测应用。 图7就是实验波形: 黄色波形为一相的端电压波形,绿色部分为比较器输出的方波波形。
图7 反电势过零点检测实验波形
图8为反电势监测部分的在PSoC Creator IDE中的原理图设计。PSoC Creator 是赛普拉斯半导体为PSoC3 芯片打造的开发环境。 PSoC Creator 提供了原理图开发界面,用户可以将片上的模块以原理图的方式进行互联。
图8 Creator中反电势过零点检测的原理图设计
BLDC的换相状态机
在图1中,三相六状态的无刷直流电机的换相过程通常由查表或者状态机来实现。在通常的MCU平台中,这部分的工作由软件来完成。而在CY8C3866AXI-040片内,换相逻辑切换是由硬件来来完成的。 这都归功于其内部数字系统中的UDB模块。
UDB模块的架构如图9所示:
图9 UDB模块的内部架构
一个UDB模块由2个小型的12C4 的PLD模块,一个时钟和状态控制单元,一个微型数据处理器(Datapath)组成。UDB模块可以动态配置成为计数器,SPI,UART, 查找表,PWM发生器等数字器件。而UDB模块相互之间可以互联成为更为复杂的数字系统。CY8C3866AXI-040片上有24个UDB模块。
图10为无刷电机换相状态的片内实现:
图10 Creator中换相状态控制的原理图设计
PWM_1 为UDB模块配置而成的8 位PWM发生器。Sector_1 为控制寄存器,控制字包含了无刷电机六个状态信息。LUT_1 为一个4*6的状态表。它的输入端为控制字和PWM输出,输出端为6路驱动信号。状态表中的配置如图11所示:
图11 LUT中换相真值表的配置
此表实现的功能就是根据控制字(即电机位置扇区信息),将PWM调制信号按调制模式分配到6个驱动管脚上上。 这个功能减少了CPU的开销。特别地,如改变电机的PWM调制模式,举个例子,将单管PWM模式改为双管PWM模式,那么只要改变这个状态表的配置就可以了。
对电机速度的计算,也可以通过由UDB配置的计数器来实现。计数器的捕获输入信号即来自于Sector_1控制寄存器的控制字。每当电机换相循环完成一次,即电机旋转一个电气周期,计数器的值就置入缓冲区而当前值被重值。
过流保护
电机的过流保护可以保护电路板及电机免于大电流造成的发热和损坏。过流保护的功能要求快速、准确、灵活。CY8C3866AXI-040片内的模拟模块可以很好的实现这个功能。图12为PSoC Creator中过流保护电流的设计:
图12 Creator中过流保护电路的原理图设计
CurrIn为采样电阻上采样的电流信号,PGA_OC为增益可调的放大器,它将流过采样电阻上的电流信号进行放大。 VDAC8_OC 为8位的数模转换信号,它将用户设置的最大电流阈值转换为模拟电压信号。Comp_OC为比较器。比较器的输出连到PWM模块的Kill端。这样,如果实际电流大于所设定的阈值时,比较器信号发生翻转,PWM输出即被关断,实现了硬件保护功能。
PWM被关断的模式也可以灵活的配置:
图13 PWM模块中Kill信号的模式配置
Disabled: Kill信号不起作用
Asynchronous : 当Kill信号有效时,保持关断
Single Cycle: Kill信号只在当前PWM周期有效
Latched: Kill信号一经触发,即使Kill信号恢复,模块也一直保持关断
Min-Time: Kill信号有效后,用户可以设置模块被关断的时间周期
速度闭环调节
速度闭环设计可以保证电机速度在负载,电压等发生变化时,保持速度稳定。最经典的控制方法为PID控制,其公式如下:
其中 为速度误差, 为积分系数, 为比例系数。
这种为绝对式PID控制,每次计算都把往次的结果累加起来,这增加了CPU的负担。 而相对式PID则是一种改进的方法:
这种方法只计算输出量的增量,对于积分环节,也只计算本次的误差,无需累加计算。这种算法时候与基于微控制器的数字控制系统。
用户界面
本设计提供了多样的用户界面,以方面对电机控制参数的修改,并了解电机的状态信息。
一种用户界面是基于LCD面板和电容触摸按键的,LCD面板为显示接口,电容触摸按键则是用户输入接口。电容触摸按键是利用电容感应技术,通过检测手指与按钮之间的电容来实现按键和旋钮功能。如图14所示,BT1和BT2是两个电容触摸按键,另外还有一个滑条可以动态改变参数:
图14 电容感应滑条和按键
此用户界面的状态机如下:
图15 用户界面的状态机
电机的旋转方向、最大电流、PID参数都可以借助上述用户界面来设置。CY8C3866AXI-040 片内的Capsense模块以及LCD模块能很方便的完成按键扫描已经数据显示。
另外,本设计还允许用户通过UART接口由GUI来实现对电机的监控,这里就不做赘述。
结语
基于PSoC3(CY8C3866AXI-040)的无位置传感器BLDC电机控制利用片内丰富的资源减少了BLDC无传感器控制对外部器件的依赖。片内模拟多路选择器和比较器可以实现在PWM高电平时刻对反电势信号进行采样。换相状态机和过流保护功能完全可由片内硬件模块完成。此外,该芯片在处理电机控制的同时还具备强大的用户界面接口功能。 |