智能车制作

标题: 提取中线后怎么控制舵机 [打印本页]

作者: wsxz-zyq    时间: 2014-3-4 22:06
标题: 提取中线后怎么控制舵机
中线提取后,怎么反馈控制舵机的转动 ,求算法和公式。  

作者: wsxz-zyq    时间: 2014-3-4 22:08
不要沉  ,  求各位大神不吝赐教

作者: glacier0    时间: 2014-3-4 22:28
你猜
作者: rubick    时间: 2014-3-5 01:53
我猜,我猜,我猜猜猜!
作者: 零度的亲吻    时间: 2014-3-7 14:00
偏差值,在控制舵机转向
作者: stxhb    时间: 2014-3-8 03:39
调CCD的时候随便写的一个舵机控制,其实本质和电机控制一样
void servo_control(void)
{
  float s_kp=0.3,s_kd=0;                 //舵机 P,D初始化
  int8 servo_duty;
  servo_duty =(int)(s_kp*servo_err[0] +s_kd*(servo_err[0]-servo_err[1]));
if(servo_duty>20)
  {
    servo_duty=20;
  }
  if(servo_duty<=-20)
  {
    servo_duty=-20;
  }
   LPLD_FTM_PWM_ChangeDuty(FTM0, FTM_Ch0, angle_to_period(servo_duty));
}

作者: wsxz-zyq    时间: 2014-3-8 17:08
stxhb 发表于 2014-3-8 03:39
调CCD的时候随便写的一个舵机控制,其实本质和电机控制一样
void servo_control(void)
{

LPLD_FTM_PWM_ChangeDuty(FTM0, FTM_Ch0, angle_to_period(servo_duty));  这个函数能给写一下吗

作者: 小布的梦    时间: 2014-3-8 21:08
好!
作者: stxhb    时间: 2014-3-8 23:12
本帖最后由 stxhb 于 2014-3-8 23:31 编辑
wsxz-zyq 发表于 2014-3-8 17:08
LPLD_FTM_PWM_ChangeDuty(FTM0, FTM_Ch0, angle_to_period(servo_duty));  这个函数能给写一下吗


就是LPLD例程库里面的

uint32 angle_to_period(int8 deg)
{
  uint32 pulse_width = 500+2000*(96+deg)/180;
  return (uint32)(10000*pulse_width/20000);
}


舵机PWM频率50,直接更改占空比angle_to_period为0-10000,代表0%---100%占空比
作者: yangjie1995    时间: 2014-3-9 19:34
能分享一下你的中线提取程序吗?QQ:836365972
作者: yangjie1995    时间: 2014-3-9 19:34
能分享一下你的中线提取程序吗?QQ:836365972
作者: 英姿飒爽    时间: 2014-7-6 13:21
再求中线和车子中点误差,使用pid算法就可以控制了吧

作者: 钢琴曲    时间: 2014-7-6 14:21

作者: Levy    时间: 2014-7-6 21:02
怎么提取中线
作者: 冰峰花少    时间: 2014-7-7 00:12

作者: 天天聊聊    时间: 2015-3-8 20:32
能告诉我,提取完中线后 ,怎么控制啊
作者: spinningtime    时间: 2015-12-18 16:49
stxhb 发表于 2014-3-8 03:39
调CCD的时候随便写的一个舵机控制,其实本质和电机控制一样
void servo_control(void)
{

请问servo_err[0],servo_err[1]分别代表什么?谢谢啦!
作者: spinningtime    时间: 2015-12-18 16:52
wsxz-zyq 发表于 2014-3-8 17:08
LPLD_FTM_PWM_ChangeDuty(FTM0, FTM_Ch0, angle_to_period(servo_duty));  这个函数能给写一下吗

请问你看懂servo_err[0],servo_err[1]分别是什么了吗?求赐教,谢谢!

作者: 小苏_y515S    时间: 2016-1-28 15:25
stxhb 发表于 2014-3-8 03:39
调CCD的时候随便写的一个舵机控制,其实本质和电机控制一样
void servo_control(void)
{

s_kp*servo_err[0] +s_kd*(servo_err[0]-servo_err[1]请问这条语句中的servo_err[0]和servo_err[1]这两个变量是什么意思啊?

作者: 要相信,不放弃    时间: 2016-2-20 10:31
小苏_y515S 发表于 2016-1-28 15:25
s_kp*servo_err[0] +s_kd*(servo_err[0]-servo_err[1]请问这条语句中的servo_err[0]和servo_err[1]这两个 ...

指本次偏差和上一次偏差做差,,,求偏差率

作者: 木易逢春    时间: 2016-3-16 17:33
:o:o:o:o
作者: 木易逢春    时间: 2016-3-16 18:36

作者: 直觉    时间: 2016-3-18 19:33
求中线提取程序~~ 邮箱1543153730@qq.com
作者: cxp123    时间: 2016-3-22 16:56
求中线提取程序~~ 邮箱1812525615@qq.com  谢谢。
作者: 韶光易逝    时间: 2016-4-11 11:34
stxhb 发表于 2014-3-8 03:39
调CCD的时候随便写的一个舵机控制,其实本质和电机控制一样
void servo_control(void)
{

servo_err[0] 和servo_err[1] 是什么?

作者: 驻足、回眸    时间: 2016-4-27 18:55
。。。




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