嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > PMSM驱动基础篇:怎么设计Q15正弦表?

PMSM驱动基础篇:怎么设计Q15正弦表?

-- The Start --

前言:

根据文章:中的内容,我们了解了获取转子位置θ角的方法。尽管只是对各种方法做了基本理论的介绍,还没介绍实现的具体过程,但是对于新手而言,首先有个概要的理解,对后续明确学习方向也很有必要。
那么,假如我们都已经掌握了获取转子位置θ角的方法,是不是就可以驱动PMSM了呢?答案还是很残酷。还是那句话:做PMSM驱动,一定要有耐心,必须把每个技术点都打通,才能成功。为什么还不行呢?我们知道,在Park变换(文章链接:)和逆Park变换(文章链接:)中,都用到了正弦函数sin(θ)和余弦函数cos(θ),那么,知道θ角,怎么计算sin(θ)和cos(θ)?
有同学一定会说,直接调用三角函数sin(x)和cos(x)计算不就可以了?答案是:理论上可以,但实际情况是因受到通用MCU资源不足(文章链接:)的限制,所以大概率不可以。理论和现实相去甚远,在此体现得淋漓尽致。那么,怎么办呢?答案只能是查表,查正弦表既然要查正弦表,那么就得先设计正弦表。本文就来梳理下怎么设计Q15格式的正弦表。
1. 为什么要设计Q15格式的正弦表?对Q15格式还不了解的同学,可回看文章:。根据该篇文章内容,我们知道在FOC控制中,必须通过Q15干掉所有小数。至于原因,本文就不再赘述。
正弦函数sin(x)值范围为【-1,1】,是不是除了-1和1外,都是小数?所以,我们必须设计Q15格式的正弦表。
2. 怎么设计Q15格式的正弦表?首先,我们看正弦函数y=sin(x)波形,如下图1。图1从图1可知,在FOC控制中,x代表了电角度范围【0°,360°】,y范围【-1,1】。
准备设计的正弦表中的值当然就是x在某电角度范围内,对应的y值的集合。那么,我们需要解决以下几个问题:x的范围多少?x的精度(这是很容易忽略的)多少?怎么设计Q15格式的正弦表?
(1)x的范围设计多少?为了节约存储空间和提高查表效率,结合图1波形特征,x很明显不用取【0°,360°】,而只需要取【0°,90°】,此时对应正弦函数y值范围为【0,1】。其他角度范围对应的y值,可通过角度范围【0°,90°】对应的y值计算得到。道理不赘述。
(2)x的精度设计多少?