智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1491|回复: 0
打印 上一主题 下一主题

[通讯类] 希望大神指教

[复制链接]

6

主题

22

帖子

0

精华

高级会员

Rank: 4

积分
632
威望
316
贡献
192
兑换币
97
注册时间
2017-3-9
在线时间
62 小时
跳转到指定楼层
1#
发表于 2017-3-16 21:33:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
10贡献
#include "common.h"
#include "include.h"
struct _pid
{
float setspeed;  //设定速度
float actualspeed; //实际速度
float err;        //偏差
float integral;
float voltage;
float err_last;  //最上前的偏差
float kp,ki,kd; //定义比例、积分、微分系数
}pid;

void PID1_init()
{
  printf("PID_init begin \n");
pid.setspeed=0.0;
pid.actualspeed=0.0;
pid.err=0.0;
pid.err_last=0.0;

pid.kp=0.2;
pid.ki=0.015;
pid.kd=0.2;
printf("PID_init end \n");
}


float PID_realize(float speed)
{

pid.setspeed=speed;
pid.err=pid.setspeed-pid.actualspeed;
pid.integral+=pid.err;
pid.voltage=pid.kp*pid.err+pid.ki*pid.integral+pid.kd*(pid.err-pid.err_last);

pid.err_last=pid.err;
pid.actualspeed=pid.voltage*1.0;
return pid.actualspeed;
}

void main()
{
  float speed=1.0;


PID1_init()  ;
printf("system begin\n");
while(1)
{

speed=PID_realize(200.0);

  printf("%f\n",speed);


}
}

这个程序哪里错了,为什么串口调试助手无法显示speed,并且干扰电脑运行。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 14:17 , Processed in 0.041481 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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