智能车制作

标题: 编码器脉冲数与占空比 [打印本页]

作者: 蓝翔一头驴    时间: 2015-11-7 10:01
标题: 编码器脉冲数与占空比
Struct
{
sint16 current_error; //当前差值
sint16 last_error; //上次差值
sint16 prev_error; //上上次差值
}PID_M; //定义一个名为 PID_M 的结构体
uint8 std_speed[5]={0,55,90,110,128}; //存放期望速度脉冲数
float PID_M_Kp =49,PID_M_Ki = 0.7,PID_M_Kd =0.5; //定义 Kp、Ki、Kd 三个参数
uint8 pulse_count; //记录欧姆龙编码器的脉冲个数
uint16 PID_m_add ; //PID 的增量输出

void Motor_ctl(uint8 i)
{
sint16 P,I,D; //定义局部变量
PID_M.prev_error=PID_M.last_error; //更新每次的差值
PID_M.last_error=PID_M.current_error; //更新每次的差值
PID_M.current_error=std_speed[i]-pulse_count; //更新每次的差值
P=PID_M_Kp*(PID_M.current_error-PID_M.last_error); //比例 P 输出公式
I=PID_M_Ki* PID_M.current_error; //积分 I 输出公式
D=PID_M_Kd*(PID_M.current_error-2*PID_M.last_error+PID_M.prev_error); //微分 D 输出公式
PID_m_add=P+I+D+PID_m_add; //电机的 PID 增量值输出
if(PID_m_add>1500)PID_m_add=1500; //限制电机的最大速度
if(PID_m_add<1)PID_m_add=0; //限制电机的最小速度
Pwm23_duty(PID_m_add); //将增量值输出传给电机执行
}


问 我觉得增量值应该是编码器的增量值  为何却将它赋给电机的占空比去处理

作者: 蓝翔一头驴    时间: 2015-11-7 10:09
求顶

作者: 风来了    时间: 2015-11-7 12:25
顶顶顶顶
作者: haven75    时间: 2015-11-7 15:04
顶!d=====( ̄▽ ̄*)b
作者: 天边不够远    时间: 2015-11-7 18:46
顶顶顶!
作者: 天边不够远    时间: 2015-11-7 18:46
顶顶顶!
作者: 天边不够远    时间: 2015-11-7 18:47
顶顶顶!
作者: 天边不够远    时间: 2015-11-7 18:52
顶顶顶!
作者: 1062070659    时间: 2015-11-7 20:48
顶顶顶顶
作者: 与自由不分彼此    时间: 2015-11-7 22:54
ding~~~~~~~~~~~~~~~~~~
作者: g847279681    时间: 2015-11-8 10:16
你的脉冲值得大小时由电机的速度来决定的所以你想改变一定时间的脉冲就得改变占空比,你的增量值给了编码器编码器也没用啊
作者: g847279681    时间: 2015-11-8 10:16
你的脉冲值得大小时由电机的速度来决定的所以你想改变一定时间的脉冲就得改变占空比,你的增量值给了编码器编码器也没用啊
作者: YMH_smartcar    时间: 2015-11-8 10:21
同问,占空比和脉冲数怎么转换?
作者: 浮华→三生    时间: 2015-11-8 11:00
顶顶顶 !!!
作者: 浮华→三生    时间: 2015-11-8 11:05
顶顶顶  。。。
作者: YMH_smartcar    时间: 2015-11-8 16:32
楼主解决了吗
作者: 浮华→三生    时间: 2015-11-11 18:39
顶顶顶!!!




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