智能车制作

标题: 舵机控制 [打印本页]

作者: 小河北    时间: 2013-12-15 10:05
标题: 舵机控制
float  get_position(void){
   
    float N,result,base_pos,pos,pos_os;
    Max();
    SecondMax();
    Min();
    pos=(ad_value[num_second]-ad_value[num_min])*100;
    N=pos/(ad_value[num_max]-ad_value[num_min]);
    base_pos=num_max*weight;
    pos_os=(weight*N/100-weight/2);
    if(num_max>=num_second) {
      result=base_pos-pos_os;
    } else{
      result=base_pos+pos_os;
    }
    if((N<50)&(num_max==0))  {
      result=0;
    }
    if(result>(4*weight)){
      result=4*weight;
    }
    return result;
}//获取赛道位置//

void saveposition(void){
  unsigned int i;
  for(i=0;i<3;i++)
    save_position[i+1]=save_position[i];
  save_position[0]=position ;
}//保存位置//

unsigned int duoji_PD(void){
    float error,s_error,ss_error;
    unsigned int pwmdty_23;
    error=save_position[0]-save_position[1];
    s_error=save_position[1]-save_position[2];
    ss_error=save_position[2]-save_position[3];
     pwmdty_23=angle_mid+duoji_kp*(error-s_error)+duoji_kd*(error-2*s_error+ss_error);
     if(pwmdty_23>2060)
     pwmdty_23=2060;
      if(pwmdty_23<1420)
     pwmdty_23=1420;
      return pwmdty_23;
}//舵机PD控制//

这样写对么   明天准备去试车








作者: Jyoun    时间: 2013-12-15 10:42
应该不会有人给你分析程序吧,除非他真的闲。反正我是最讨厌分析别人的程序。
作者: dapan945    时间: 2013-12-15 12:35
留个记号,貌似……
作者: 奔逸绝尘子不语    时间: 2013-12-15 13:21
标题: 电磁求解:XS128只有一路脉冲累加计数器,有什么好办法实现两路编码器计数?
Jyoun 发表于 2013-12-15 10:42
应该不会有人给你分析程序吧,除非他真的闲。反正我是最讨厌分析别人的程序。

电磁组用的是C车模,两个电机,用四路PWM控制两个电机正反转,再用两路级联控制舵机,一共用了六路。两个编码器,可是输入捕捉只有一路,该怎样解决?换一款单片机吗?求大神指导
作者: Jyoun    时间: 2013-12-15 14:01
奔逸绝尘子不语 发表于 2013-12-15 13:21
电磁组用的是C车模,两个电机,用四路PWM控制两个电机正反转,再用两路级联控制舵机,一共用了六路。两个 ...

编码器可以利用中断捕捉。

作者: feichelong    时间: 2014-3-2 15:42
你是做的是电磁组吧?问题怎么样?跑得还行吗?





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2