智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 8257|回复: 14
打印 上一主题 下一主题

直立车的速度控制

[复制链接]

15

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2280
威望
1050
贡献
612
兑换币
676
注册时间
2013-11-16
在线时间
309 小时
跳转到指定楼层
1#
发表于 2014-3-3 21:43:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在情况是轻轻推能稳定住  稍微用点力速度打起来就停不下来了什么情况  能帮我看看程序有没有问题么


float speed_P=1;
float speed_I=0.5;
float speed_D=0;

#define SPEED_CONTROL_PERIOD 35
#define CNT_TO_SPEED 0.02046   //16.5*10*25/24/28/300  //编码器到距离 cm/s

static unsigned char  speed_Count=0;
unsigned int motor_cntL=0,motor_cntR=0;//左右编码器计数值
float speed_Set=0;              //预期的速度 单位:cm/s
float speed_Now=0;              //实际的速度
float speed_L=0,speed_R=0;      //左右轮的实际速度

float speed_pwm_New=0;            
float speed_pwm_Old=0;
float speed_pwm_Out=0;          //速度的PWM输出

unsigned int speed_finish_Count=0;
float test_speed=0;

static float e0=0;              //本次系统存在偏差
static float e1=0;              //上次系统偏差
static float e2=0;              //前次系统偏差
static float u1=0;              //本次系统输出值
static float u_add=0;           //系统增量   


void SpeedControl(void)
{
   if(speed_Count==0)
{
   speed_Now =(float)(motor_cntL*CNT_TO_SPEED);
   if(pwm_out_New>0) speed_Now=-speed_Now;     //---判断速度正负---
   motor_cntL=0;
   motor_cntR=0;
   e0=speed_Set-speed_Now;    //速度差
//-------增量式-------   
      //*
   u_add=speed_P*(e0-e1)+speed_I*e0+speed_D*(e0-2*e1+e2);
   test_speed+=e0;///====test
     //    OutData[2]=test_speed;       
   e2=e1;
   e1=e0;         
   u1+=u_add;   //u1表示PWM的占空比
   speed_pwm_Old=speed_pwm_New;
   speed_pwm_New=u1;
}
   speed_pwm_Out =(speed_pwm_New-speed_pwm_Old)*(speed_Count+1)/SPEED_CONTROL_PERIOD+speed_pwm_Old;
   speed_Count++;
   if(speed_Count>=SPEED_CONTROL_PERIOD) speed_Count=0;
}

回复

使用道具 举报

14

主题

607

帖子

0

精华

会长

魅影

Rank: 8Rank: 8

积分
3808

活跃会员奖章在线王奖章优秀会员奖章

威望
1736
贡献
952
兑换币
1177
注册时间
2013-7-27
在线时间
560 小时
2#
发表于 2014-3-3 22:50:55 | 只看该作者
速度控制没问题,但是,没有根据加速度传感器信号的加减速控制算法。
回复 支持 反对

使用道具 举报

15

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2280
威望
1050
贡献
612
兑换币
676
注册时间
2013-11-16
在线时间
309 小时
3#
 楼主| 发表于 2014-3-4 09:45:50 | 只看该作者
wraith 发表于 2014-3-3 22:50
速度控制没问题,但是,没有根据加速度传感器信号的加减速控制算法。

角度那边的输出的PWM直接加上这个速度PWM等于最后的输出PWM(方向的还没加)
回复 支持 反对

使用道具 举报

14

主题

72

帖子

0

精华

高级会员

Rank: 4

积分
638
威望
347
贡献
185
兑换币
197
注册时间
2013-9-14
在线时间
53 小时
4#
发表于 2014-3-6 23:06:00 | 只看该作者
你的程序现在成功了吗
回复 支持 反对

使用道具 举报

3

主题

17

帖子

0

精华

高级会员

Rank: 4

积分
537
威望
288
贡献
169
兑换币
176
注册时间
2013-7-14
在线时间
40 小时
毕业学校
njupt
5#
发表于 2014-4-13 20:30:07 | 只看该作者
LZ 我想问一下
u1+=u_add;   //u1表示PWM的占空比
这句话  为什么是 +=
回复 支持 反对

使用道具 举报

15

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2280
威望
1050
贡献
612
兑换币
676
注册时间
2013-11-16
在线时间
309 小时
6#
 楼主| 发表于 2014-4-14 18:23:29 | 只看该作者
呼呼呼 发表于 2014-4-13 20:30
LZ 我想问一下
u1+=u_add;   //u1表示PWM的占空比
这句话  为什么是 +=

增量式的就是一直加
回复 支持 反对

使用道具 举报

5

主题

68

帖子

0

精华

高级会员

Rank: 4

积分
554
威望
267
贡献
137
兑换币
171
注册时间
2013-9-22
在线时间
75 小时
7#
发表于 2014-5-11 20:41:44 | 只看该作者
楼主请问小车走得忽快忽慢是该怎么解决?
回复 支持 反对

使用道具 举报

7

主题

85

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1696
威望
871
贡献
471
兑换币
518
注册时间
2012-11-7
在线时间
177 小时
毕业学校
普集中学
8#
发表于 2014-5-11 22:01:09 | 只看该作者
wraith 发表于 2014-3-3 22:50
速度控制没问题,但是,没有根据加速度传感器信号的加减速控制算法。

为什么要根据加速度计的值加减速呢?不懂,能不能详细说明哈,谢谢了!
回复 支持 反对

使用道具 举报

15

主题

119

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2280
威望
1050
贡献
612
兑换币
676
注册时间
2013-11-16
在线时间
309 小时
9#
 楼主| 发表于 2014-5-12 09:34:56 | 只看该作者
鸟人 发表于 2014-5-11 20:41
楼主请问小车走得忽快忽慢是该怎么解决?

应该是你速度控制参数的问题,重新调调参
回复 支持 反对

使用道具 举报

5

主题

68

帖子

0

精华

高级会员

Rank: 4

积分
554
威望
267
贡献
137
兑换币
171
注册时间
2013-9-22
在线时间
75 小时
10#
发表于 2014-5-12 13:37:45 | 只看该作者
你们一般是怎么调的 我试了很多参数 静态效果很好 但是走起来就由问题 是不是结构有问题啊?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-5 17:17 , Processed in 0.093543 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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