在电机控制中,一半HALL传感器成本低,很多带传感器的方案会选择HALL,利用hall信号可以将电角度分成6个扇区,采用方波控制可利用hall信号的变化实行换相,使得电机转起来。
但方波六步换相一个电周期中只执行六次换相,导致运行不够平滑,且运行噪音较大。而FOC控制方式可以通过细分角度,可使电机运行平滑度大大提升,并提高运行效率。
FOC控制中需要提供实时的转子角度值,才能通过计算得出最终的PWM,而HALL信号只能提供6个有效数据,我们需要做的,就是将6个HALL状态转换成平滑连续的角度值。
众所周知,3个hall信号可以将一个电周期360°划分成6个扇区,每个扇区60°,如下图所示
要将每个扇区的角度再细分,需要计算每个hall状态的时间,可以通过定时器计时,ATC的芯片有PWDT模块,可直接捕获三个hall信号的高低电平周期,非常方便。
基本原理是,得到了一个扇区的保持时间,那么就可以算出角度累加值delta。通过角度累加计算得出平滑的角度。但一般为了计算数据平滑,会读取360°的运行时间进行计算。例如,捕获到hall状态转过6个扇区,记录的运行周期为100ms,也就是电机转过360°电角度用了100ms。PWM的斩波频率为16K,在斩波中断中执行角度累加,为了提高精度,一般会将角度值进行放大标幺,常见的做法是标到16位数据65536.则可以计算出角度累加值delta。
delta=360°/(16K*0.1S) = 65536/(16000*0.1)=40.9
在PWM斩波中断中将角度值每次累加delta值可得到实时角度。
但HALL处理是基于之前的hall时间处理的,不是当前的值,所以这么处理的前提是默认每个扇区的运行时间是不突变的,hall处理总归会存在误差,因此需要进行补偿。
假设定义扇区1是0°到60°。因此,每次检测到hall变化为1时,对比计算出的角度与0°的误差,若还没到0°,说明角度累加值偏小,可将65536再加上误差值;若超过了0°,则说明累加值偏大,将65536减去误差值,以此来修正角度累加值。
|