仿真原理图如下(proteus仿真工程文件和完整单片机C源码可到本帖附件中下载)
部分单片机源码:
- #include "pid.h"
- #include "huoer.h"
- extern times_A,times;
- float PID_M_Kp =0.1382, PID_M_Ki = 0.001, PID_M_Kd =0.01; //定义 Kp、Ki、Kd 三个参数
- float pid_Sv;
- u16 PID_m_add=0,pid_pwm;
- float PID_current_error; //当前差值
- float PID_last_error; //上次差值
- float PID_prev_error; //上上次差值
- float integrality_date=0; //积分数据
- void Motor(u16 std_speed)
- {
- float P,D;//,I;//,I,D; //定义局部变量
- std_speed+=120;
- PID_prev_error=PID_last_error; //更新每次的差值
- PID_last_error=PID_current_error; //更新每次的差值
- PID_current_error=std_speed-times; //更新每次的差值
-
- integrality_date=integrality_date+PID_current_error;
- P=PID_M_Kp*PID_current_error; //比例 P 输出公式
- // I=PID_M_Ki*integrality_date; //积分 I 输出公式
- D=PID_M_Kd*(PID_current_error-PID_last_error); //微分 D 输出公式
-
- PID_m_add=P+D;//+I;//+I+D+PID_m_add; //电机的 PID 增量值输
-
- output_pwm(PID_m_add);
- }
- void output_pwm(u16 output)
- {
- if(output>200)output=200; //限制电机的最大速度
- if(output<1)output=1;
- pid_pwm = output;
- }
- /*/////////////////
- 60 360
- 420 0
- //////////代码太多放不下,请到附件下载后浏览////////
复制代码 完整单片机源码和proteus仿真文件:
lcd1602霍尔编码电机.zip
(85.26 KB, 售价: 5 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|