OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3453|回复: 3

平衡小车调了速度环 还是往前跑 怎么肥四

[复制链接]

12

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2018-5-30
在线时间
121 小时
发表于 2018-7-7 21:23:32 | 显示全部楼层 |阅读模式
1金钱
int balance(float Angle,float Gyro)
{
  float Bias,kp=650,kd=3;//700 3.5  400 1  500 2.2    520  2.7  //700  3.3
  int balance;
  Bias=Angle-0;      
  balance=kp*Bias+Gyro*kd;   
  return balance;
}
/**************************************************************************

**************************************************************************/
int velocity(int encoder_left,int encoder_right)
{  
  static float Velocity,Encoder_Least,Encoder;
  static float Encoder_Integral;
  float kp=-130,ki=kp/200;   //-110  
  //=============ËÙ¶&EgraveI¿ØÖÆÆ÷=======================//
  Encoder_Least =(Encoder_Left+Encoder_Right)-0;                  
  Encoder *= 0.5f;                                                   
  Encoder += Encoder_Least*0.5f;                                 
  Encoder_Integral +=Encoder;                                       
  //  Encoder_Integral=Encoder_Integral-Movement;                     
  //  if(Encoder_Integral>10000)   Encoder_Integral=10000;           
  //  if(Encoder_Integral<-10000) Encoder_Integral=-10000;            
  Velocity=Encoder*kp+Encoder_Integral*ki;                        
//  if(Turn_Off(Angle_Balance)==1)   Encoder_Integral=0;      
if(Flag_Target==1)   Encoder_Integral=0;
  return Velocity;
}
/**************************************************************************
**************************************************************************/
void Set_Pwm(int moto1,int moto2)
{
  int siqu=800;//800 4000
  if(moto1<0)   AIN2=1,   AIN1=0;
  else            AIN2=0,   AIN1=1;
  PWMA=myabs(moto1)+siqu;
  if(moto2<0) BIN1=0,   BIN2=1;
  else        BIN1=1,   BIN2=0;
  PWMB=myabs(moto2)+siqu;
}
/**************************************************************************
**************************************************************************/
void Xianfu_Pwm(void)
{
int Amplitude=8000;  
if(Moto1<-Amplitude) Moto1=-Amplitude;
if(Moto1>Amplitude)  Moto1=Amplitude;
if(Moto2<-Amplitude) Moto2=-Amplitude;
if(Moto2>Amplitude)  Moto2=Amplitude;   
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2018-5-30
在线时间
121 小时
 楼主| 发表于 2018-7-7 23:50:23 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-7-8 01:53:08 | 显示全部楼层
帮顶
回复

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2018-6-30
在线时间
42 小时
发表于 2018-9-10 16:55:49 | 显示全部楼层

调好了?可以加QQ2024315152
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 04:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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