duxiaodu 发表于 2016-4-18 20:46:05

两轮平衡小车pwm输出问题

本人在网络上找的两轮平衡小车代码,小车成功站立了已经 但是深知自己纯属抄袭,没有学到什么,在研究代码中,希望大家帮忙解答。这个小车有速度闭环但是不需要控制小车速度,只要他稳定站着不向一边倒就行

但是在pwm输出那一快很不理解啊,希望大神帮忙解答一下谢谢! 下面是代码,不懂之处在后面有标注,有的地方我自己标注的理解,不知道对不对,有错也请纠正 谢谢帮忙

void PWM_Calculate()
{

float ftmp = 0;
ftmp = (Speed_L + Speed_R) * 0.5; // 采集两个电机脉冲平均值

if( ftmp > 0)
    Position_AVG = ftmp +0.5;         //为什么分正负还要加减0.5, 0.5这个数值是怎么出来的?
   else
    Position_AVG = ftmp -0.5;
   
   
Position_AVG_Filter = Position_AVG;                         //
Position_Add += Position_AVG_Filter;//position      //这两步在干嘛

Position_Add = constrain(Position_Add, -800, 800);
//   Serial.print(Position_AVG_Filter);Serial.print("\t"); Serial.println(Position_Add);
//Serial.print((Angle_Car-2 + K_Base)* KA_P);Serial.print("\t");
pwm =(Angle_Car-5 + K_Base)* KA_P   //P    //为什么要减5以及加KB
      + Gyro_Car * KA_D //D                         //前两部好像是运用角速度微分,角加速度比例
      +Position_Add * KP_I    //I                //
      +Position_AVG_Filter * KP_P; //P       //position 这两个又不懂了

   pwm_r = pwm
   pwm_l = pwm

}

duxiaodu 发表于 2016-4-18 20:48:30

啊 漏了一个
PositionAdd = constrain(PositionAvg,-800,800);//这个800怎么出来的

数据采集那一块都不太懂

CMartin 发表于 2016-6-15 17:15:11

duxiaodu 发表于 2016-4-18 20:48 static/image/common/back.gif
啊 漏了一个
PositionAdd = constrain(PositionAvg,-800,800);//这个800怎么出来的



做积分幅用的

AhernChen 发表于 2016-6-16 13:32:40

请问你用的是什么板,传感器是什么

好奇吖斌 发表于 2016-7-18 12:45:53

求楼主的平衡小车代码

月上琉璃 发表于 2016-7-18 21:46:34

求楼主的代码啊[email protected]

sylbox 发表于 2016-7-19 08:17:39

好吧,我也求个代码,谢谢楼主
[email protected]

逆天子 发表于 2016-9-20 18:34:18

那个0.5是死区电压,就是说你小车本身有摩擦力加一定电压后来克服摩擦力这个电压范围内小车不会运动的:P

MrRan 发表于 2016-9-25 09:51:00

我是前来学习的,lz不妨把代码也贴出来吧~
页: [1]
查看完整版本: 两轮平衡小车pwm输出问题