关于PID算法!
我一直在听说什么PID算法在PWM控制中的应用,可是一直对这个不是很了解,不知道哪位dx知道它的原理或者是这方面的资料,我在网上查过,只有一些很复杂的应用!所以想知道它的基本原理啊!谢谢
全部回复(39)
正序查看
倒序查看
现在还没有回复呢,说说你的想法
@jamsdbx
在学校曾跟导师做过单片机控制的电源驱动系统,我主要负责PID控制算法,感觉程序比较简单,但调试比较烦,主要是P,I,D三个参数比较难调.
这位仁兄,我是大四的学生,正在做有关于PID算法的毕业设计,名字叫《全数字伺服系统》,用单片机控制直流步进电机的转角,正转反转.采用闭环控制,也就是用到PID算法.现在问题是,我对那算法一点头绪都没有,因为是第一次接触这东西,能够帮我个忙不?教我怎么着手编这程序,电路图如下,谢谢各位啊500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/28/1112668606.gif');}" onmousewheel="return imgzoom(this);">
0
回复
提示
@jjok809
这位仁兄,我是大四的学生,正在做有关于PID算法的毕业设计,名字叫《全数字伺服系统》,用单片机控制直流步进电机的转角,正转反转.采用闭环控制,也就是用到PID算法.现在问题是,我对那算法一点头绪都没有,因为是第一次接触这东西,能够帮我个忙不?教我怎么着手编这程序,电路图如下,谢谢各位啊[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/28/1112668606.gif');}"onmousewheel="returnimgzoom(this);">
我这有一个用单片机c写的pid算法,用的是归一化整定pid参数.控制两个电机,可以供大家参考,程序是测试,电机用的,不是太成熟.
系统也是8051内核的单片,用的i/o接口是8155就是了,驱动器是自己做的,是电磁式的,所以频率不高,因而控制作用不明显.
还有一个问题是8051的单片,也就12mhz的频率,8位的汇编没有固化的乘法,作起乘法就是四十个周期,这是不是算法效果不明显的另一个原因.
我也希望得到高手的指点,看看作用不明显的原因
1112954814.c
系统也是8051内核的单片,用的i/o接口是8155就是了,驱动器是自己做的,是电磁式的,所以频率不高,因而控制作用不明显.
还有一个问题是8051的单片,也就12mhz的频率,8位的汇编没有固化的乘法,作起乘法就是四十个周期,这是不是算法效果不明显的另一个原因.
我也希望得到高手的指点,看看作用不明显的原因
1112954814.c
0
回复
提示
@jjok809
这位仁兄,我是大四的学生,正在做有关于PID算法的毕业设计,名字叫《全数字伺服系统》,用单片机控制直流步进电机的转角,正转反转.采用闭环控制,也就是用到PID算法.现在问题是,我对那算法一点头绪都没有,因为是第一次接触这东西,能够帮我个忙不?教我怎么着手编这程序,电路图如下,谢谢各位啊[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/28/1112668606.gif');}"onmousewheel="returnimgzoom(this);">
哥们,你们导师给你的题目吧?
你确定用单片能胜任吗?
你确定用单片能胜任吗?
0
回复
提示
@jjok809
这位仁兄,我是大四的学生,正在做有关于PID算法的毕业设计,名字叫《全数字伺服系统》,用单片机控制直流步进电机的转角,正转反转.采用闭环控制,也就是用到PID算法.现在问题是,我对那算法一点头绪都没有,因为是第一次接触这东西,能够帮我个忙不?教我怎么着手编这程序,电路图如下,谢谢各位啊[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/28/1112668606.gif');}"onmousewheel="returnimgzoom(this);">
算法就是你解决一个问题的方法,是程序编写的依据.PID算法是一种过程控制算法,就是对误差信号(采样信号与给定信号的差)通过比例,积分,微分的运算后的结果作为输出控制信号,来控制所要控制的对象.PID算法有个标准公式,已经很成熟了,不用你再研究,你只要把那个公式变为程序就行.你这个课题很典型,贴片机(如松下,三洋)上都是使用伺服马达,架构类似.伺服马达与步进马达不同,伺服马达要求在某一时刻能转到某一具体位置,控制精度很高,步进马达则不要求达到具体位置,如控制汽缸活塞就使用步进马达,它只要控制活塞的上和下.所以伺服马达才使用PID控制算法.PID控制算法有位置式和增量式两种,你是通过正负脉冲的数量作为输出控制,不存在误差的积累,可以采用位置式.我以前做的是温度控制,也是采用PID算法,你可以参考1113012047.rar
0
回复
提示
@jamsdbx
算法就是你解决一个问题的方法,是程序编写的依据.PID算法是一种过程控制算法,就是对误差信号(采样信号与给定信号的差)通过比例,积分,微分的运算后的结果作为输出控制信号,来控制所要控制的对象.PID算法有个标准公式,已经很成熟了,不用你再研究,你只要把那个公式变为程序就行.你这个课题很典型,贴片机(如松下,三洋)上都是使用伺服马达,架构类似.伺服马达与步进马达不同,伺服马达要求在某一时刻能转到某一具体位置,控制精度很高,步进马达则不要求达到具体位置,如控制汽缸活塞就使用步进马达,它只要控制活塞的上和下.所以伺服马达才使用PID控制算法.PID控制算法有位置式和增量式两种,你是通过正负脉冲的数量作为输出控制,不存在误差的积累,可以采用位置式.我以前做的是温度控制,也是采用PID算法,你可以参考1113012047.rar
请问一下PID公式当中的参数应该怎么确定,如果仅仅是这么一个公式,编一个程序当然并不困难
0
回复
提示
@rpower
汇编10多行搞定,那就需要极高的本事了,这个东西没有这么简单的!
新手求助:
本人大四,刚刚接触微机控制的PID算法,用的教材是清华大学于海生的《微机控制技术》.
今天在写第四章作业习题4.4时,卡住了…… 500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/36/1134282273.gif');}" onmousewheel="return imgzoom(this);">
因为书上前面有这样的介绍
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/36/1134282400.gif');}" onmousewheel="return imgzoom(this);">
这下子我就胡涂了,为什么习题4.4的传递函数D(s)的分母还有常数项1?我该怎样求解Kp、Ti、Td??
书上没有相应例题……还望前辈高人点拨一下小弟,这道题该怎么解?谢谢^_^QQ:85508001
本人大四,刚刚接触微机控制的PID算法,用的教材是清华大学于海生的《微机控制技术》.
今天在写第四章作业习题4.4时,卡住了…… 500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/36/1134282273.gif');}" onmousewheel="return imgzoom(this);">
因为书上前面有这样的介绍
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/36/1134282400.gif');}" onmousewheel="return imgzoom(this);">
这下子我就胡涂了,为什么习题4.4的传递函数D(s)的分母还有常数项1?我该怎样求解Kp、Ti、Td??
书上没有相应例题……还望前辈高人点拨一下小弟,这道题该怎么解?谢谢^_^QQ:85508001
0
回复
提示