搜索
bottom↓
回复: 11

求关于数字PID程序增量式或位置式都行

[复制链接]

出0入0汤圆

发表于 2006-4-19 09:36:30 | 显示全部楼层 |阅读模式
求关于数字PID程序增量式或位置式都行,本人使用ATmega128单片机控制晶闸管的触发角其中

PID三个参数中有浮点数,由于单片机的浮点运算能力很次,看哪位大侠有关于浮点运算的PID程序的例子。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2006-4-19 10:43:26 | 显示全部楼层
Atmel的494应用笔记有一个数字PI,参考一下吧!我没有用过这个函数,如你成功了告诉一声!!!



/**

* @file mc_control.c

*

* Copyright (c) 2004 Atmel.

*

* @brief This module provide services to control speed for AT90PWM3 Only

* Type of control : PID means proportionnal, integral and derivative.

*

* @version 1.0 (CVS revision : 1.3)

* @date 2006/02/13 12:32:54

* @author raubree

*****************************************************************************/

/* Speed control variables */

signed int speed_error=0;      //!<Error calculation

signed int speed_integral = 0;

signed int speed_integ = 0;

signed int speed_proportional = 0;



/**************************************************************************************/

/*                          Speed Control                                             */

/**************************************************************************************/

/**

* @brief  speed controller

* @return value of speed (duty cycle on 16 bits)

*         speed_measure has 10 bits resolution

*/

signed int mc_control_speed_16b(signed int speed_ref , signed int speed_measure)

{

  signed int Duty = 0;

  signed int increment = 0;



  // 误差计算

  speed_error = speed_ref - speed_measure ;



  // 比例项计算 : Kp= 7/64=0.1

  speed_proportional = ( speed_error/8 - speed_error/64 );



  // 积分项计算

  speed_integral = speed_integral + speed_error;



  // 速度积分饱和

  if(speed_integral >  32000) speed_integral =  32000;

  if(speed_integral < -32000) speed_integral = -32000;



  // speed_integ = Ki_speed*speed_integral, with Ki_speed = 29/8192=3e-3

  speed_integ = (speed_integral - speed_integral/8 + speed_integral/32) / 256 ;



  // 占空比计算

  increment = speed_proportional + speed_integ;



  increment = (increment/2 + increment/4) ; // PI output normalization



  // saturation of the PI output饱和 PI输出

  if( increment > (signed int)(0) ) {

    if  (increment <= (signed int)(192)) Duty = (signed int)increment ;

     else Duty = 192 ;

  }

  else {

    if  (increment < (signed int)(-192)) Duty = -192 ;

     else Duty = (signed int)increment ;

  }



  // return Duty Cycle

  return Duty;

}

出0入0汤圆

发表于 2006-4-19 10:50:41 | 显示全部楼层
浮点问题多多,建议32bit定点。

出0入0汤圆

发表于 2006-4-19 11:22:27 | 显示全部楼层
在《电动机的DSP控制》中介绍浮点转定点的方法是使用Q格式,也就是将一个浮点数乘以2的n次方的到一个16位整数,以后就用这个16位整数代替浮点数进行运算,运算完毕后,将最终结果除以2的n次方得到一个整数结果。是用Q格式可以最大限度减少运算结果精度丢失,可以根据需要选择n。使用Q格式还有一个好处,你可以用左移操作实现乘法运算,如a*2n(2的n次方)等价于a<<n,用右移操作实现除法运算,如a/2n(2的n次方)等价于a>>n 。



Q表示 十进制数表示范围

Q15  -1≤X≤0.9999695

Q14  -2≤X≤1.9999390

Q13  -4≤X≤3.9998779

Q12  -8≤X≤7.9997559

Q11  -16≤X≤15.9995117

Q10  -32≤X≤31.9990234

Q9  -64≤X≤63.9980469

Q8  -128≤X≤127.9960938

Q7  -256≤X≤255.9921875

Q6  -512≤X≤511.9804375

Q5  -1024≤X≤1023.96875

Q4  -2048≤X≤2047.9375

Q3  -4096≤X≤4095.875

Q2  -8192≤X≤8191.75

Q1  -16384≤X≤16383.5

Q0  -32768≤X≤32767

出0入0汤圆

发表于 2006-4-19 11:27:23 | 显示全部楼层
运算时要注意数据溢出问题!!!

下面是《DSP芯片的定点运算》

点击此处打开 DSP芯片的定点运算.pdf

出0入0汤圆

发表于 2006-4-19 15:47:18 | 显示全部楼层
谢谢阿成兄弟。

出0入0汤圆

 楼主| 发表于 2006-8-10 08:07:26 | 显示全部楼层
非常感谢阿成的热心帮助。

出0入0汤圆

发表于 2008-6-27 21:06:29 | 显示全部楼层
多谢了,正为浮点数发愁呢

出0入0汤圆

发表于 2008-6-27 22:01:18 | 显示全部楼层
阿城兄弟能不能把整本传上来啊??

出0入4汤圆

发表于 2008-6-28 13:38:17 | 显示全部楼层
点击此处下载 ourdev_329862.rar(文件大小:617K) (原文件名:AN_SPMC75_0012.rar)

出0入0汤圆

发表于 2011-6-15 13:59:08 | 显示全部楼层
看看

出0入0汤圆

发表于 2013-4-21 15:50:18 | 显示全部楼层
好东西,谢谢了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 03:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表