电机控制--三角函数查表法

关键字 :LPC824查表

在单片机运算中,以整数形式或说定点数形式进行运算会比以浮点数形式运算快。电机控制中,经常需要用到三角函数,正弦,余弦,或者正切,求解这一类函数对于性能没那么优秀的单片机来说十分吃力,实际表现为计算时间长,甚至超过实时运行着的电机系统控制周期,这样对电机控制是十分不利的。

为此可以构建一个三角函数表,使用查表来代替计算,缩短计算所需的时间。以下为构表思路。

一、计算正弦函数值

考虑到在单片机中使用数组去保存三角函数值,为了最大程度节省存储空间,所以在数组中只保存正弦函数在第一象限的函数值,余弦函数和正弦函数其他象限的函数值均由他们之间的关系得出。

以步长1°去构建正弦函数在第一象限的值,同时为了更快地在单片机中运算,把函数值放大1000倍取整,可以得出以下函数值。



补充一个值:10000*sin90 = 9999


二、正余弦函数之间的关系

以下角度范围统一为 -180°~+180°

在第一象限内正余弦函数有如下关系式:

第四象限与第一象限正余弦函数的关系式:

第二象限与第一象限正余弦函数的关系式:

第三象限与第一象限正余弦函数的关系式:



三、根据关系式编写代码

由以上各个象限之间的关系式,编写一个查询函数,如下:

返回值的定义:

三、验证

编写代码将查表的函数值与使用三角函数计算出来的值作对比,一致则建表成功。

验证代码如下:

部分结果输出截图如下:

从输出来看,查表得到的值与计算的值无差异,建表成功。


四、在LPC824上对比使用查表法与实时计算的耗时

单片机的系统时钟为30M,简单测试代码如下:

在循环中插入代码,然后单片机的GPIO0_13接入逻辑分析仪,高电平保持时间即为在单片机中实时计算三角函数的计算耗时。

实时计算的耗时如下:

平均约414us。

查表的耗时如下:

最长耗时一个查表周期约在13us,但绝大部分时间平均4us。


四、总结

从在LPC824上面的测试可以看出,使用查表法大大短缩了计算时间,对于需要复杂计算的控制系统来说,这一方法可以很好地提升系统的性能。在实际应用查表的时候,需要特别留意查表的精度,查表下标的检查,自定义的查表值是否合理。

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论