logo资料库

后轮双电机差速小车控制原理.pdf

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
后轮双电机差速小车控制原理 汽车在转弯时,后轮的内轮和外轮行驶距离不同,行驶的时间却一样,因此, 后轮之间存在差速的问题。很容易想到,转弯的时候内侧的轮胎要比外侧的轮胎 转速慢。传统汽车使用机械差速器完成差速,机械差速器的基本运动规律是:无 论转弯或者直行,两侧驱动车轮的转速之和始终等于差速器壳转速的 2 倍。比如 差速器壳转速为 V,内侧后轮转速为 V-a,则外侧后轮转速为 V+a; 最近几年以特斯拉为代表的电动汽车企业迅速崛起,在电动汽车中,由于使 用两个电机直接驱动后轮,不需要机械差速,使得机械设计更加简单。这样在电 控方面就更加复杂一点。我们也车模也是类似的原理。 1.运动学分析 设舵机控制转角为θ,车前进速度为 v,前后轮中心距为 L,后轮轮距为 T, 后转弯内侧轮速度为 v1 后 转弯外侧轮速度为 v2 ; 因为角速度的一致性,根据运动关系分析得知: 1
由此可得: 2.C 语言实现 车模上面有 2 个带编码器的电机和一个舵机,我们需要通过 C 语言写出上面 的运动关系,然后对电机和舵机进行控制。代码如下: void Kinematic_Analysis(float velocity,float angle) { } Target_A=velocity*(1+T*tan(angle)/2/L); Target_B=velocity*(1-T*tan(angle)/2/L); //后轮差速 Servo=SERVO_INIT+angle*K; //舵机转向 以上语句在已知前轮转向角度和目标速度的前提下,求两个后轮电机的速度 大小。velocity 和 angle 分别是由用户输入的速度和前轮转角。K 是小车整体的 系数,和舵机的安装、PWM 的初始化都有关系,需要实际测量,主要作用是完成 舵机 PWM 控制引脚的脉冲宽度与前轮转向角度之间的转换。具体测试方法:设置 Servo=SERVO_INIT+a 控制舵机输出一个固定的脉宽,然后测量前轮的转角为, 容易得到该系数为: aK  舵机的控制是比较简单的,因为内部集成了控制电路,把修改后的参数赋值 给 STM32 的相关寄存器即可。但是直流电机的控制要麻烦的多,我们上面的运动 学分析得到的是电机的目标速度,我们需要把这个目标值送入 PID 控制器进行速 2
度闭环控制,使得电机的实际输出速度趋近于目标值。 /*********************************************************** 函数功能:增量 PI 控制器 入口参数:编码器测量值,目标速度 返回 值:电机 PWM 根据增量式离散 PID 公式 pwm+=Kp[e(k)-e(k-1)]+Ki*e(k)+Kd[e(k)-2e(k-1)+e(k-2)] e(k)代表本次偏差 e(k-1)代表上一次的偏差 以此类推 pwm 代表增量输出 在我们的速度控制闭环系统里面,只使用 PI 控制 pwm+=Kp[e(k)-e(k-1)]+Ki*e(k) ************************************************************/ int Incremental_PI_A (int Encoder,int Target) { static int Bias,Pwm,Last_bias; Bias=Target-Encoder; Pwm+=Velocity_KP*(Bias-Last_bias)+Velocity_KI*Bias;//增量式 PI 控制器 Last_bias=Bias; return Pwm; } //保存上一次偏差 //计算偏差 //增量输出 具体调用过程如下,通过速度闭环控制计算电机 A 最终 PWM: Motor_A=Incremental_PI_A(Encoder_Left,Target_A); 以 100hz 的频率执行相关的代码即可完成速度闭环控制。 3
分享到:
收藏