运动控制系统是通过控制电机电压、电流、频率等输入量,来满足工作机械的转矩、速度、位移等机械量,使各种工作机械按照人们期望的要求运行,以满足生产及应用的需要。
运动控制系统由电机、功率变换装置、控制器及相应的传感器构成,其框图及涉及学科领域如下图:
对照运动控制系统的结构框图,可以推断出智能车中的运动控制系统如下:
被控对象
电机是门深奥的学问号称自动化专业的天书之最(笔者当初被电机学折磨的有阴影,故有关电机不做分析)。
(此处所提到的电动机都是车模上指定的普通直流电机,不包括十七届中的无刷电机)智能车中的电机都是用于调速系统的拖动电机,而舵机则是用于伺服系统的伺服电动机的一种。
执行机构
功率放大与变换装置在智能车系统之中指的是电机驱动,能够根据主控输出的信号,动态的调节被控对象(直流电机)的驱动电压来控制电机的转速从而达到控制车身速度的作用。
控制器
智能车运动控制的控制器一般采用数字PI控制(关于PI控制器后面会出一篇PID的文章描述),大家姑且先把PI控制器当做一个公式,只用输入误差,输出的就是根据内部算法计算后的结果。这里借用龙邱科技的 代码片。
// An highlighted block
typedef struct
{
float kp; //P
float ki; //I
float kd; //D
float imax; //积分限幅
float out_p; //KP输出
float out_i; //KI输出
float out_d; //KD输出
float out; //pid输出
float integrator; //< 积分值
float last_error; //< 上次误差
float last_derivative;//< 上次误差与上上次误差之差
unsigned long last_t; //< 上次时间
}pid_param_t;
pid_param_t Speed_PID;
Speed_PID.kp = 130;
Speed_PID.ki = 2.5;
Speed_PID.kd = 0.25;
/*************************************************************************
* 函数名称:void Motor_Control(void)
* 功能说明:电机控制
* 参数说明:
* 函数返回:
* 修改时间:
* 备 注:这类设计PID运算的函数一定要放在定时器中断内保持控制周期稳定
*************************************************************************/
void Motor_Control(void)
{
MotorDuty1 = (int)PidIncCtrl(&Speed_PID, Target_Speed - ECPULSE1);
if(MotorDuty1 > 8000)MotorDuty1 = 8000;else if(MotorDuty1 < -8000)MotorDuty1 = -8000;
if(Speed_PID.out > 8000)Speed_PID.out = 8000;else if(Speed_PID.out < -8000)Speed_PID.out = -8000;
Motor1Ctrl(MotorDuty1);
// 电机闭环控制
}
/*************************************************************************
* 函数名称:float constrain_float(float amt, float low, float high)
* 功能说明:pid增量式控制器输出
* 参数说明:
* @param pid pid参数
* @param error pid输入误差
* 函数返回:PID输出结果 注意输出结果已经包涵了上次结果
* 修改时间:2020年4月1日
* 备 注:
*************************************************************************/
float PidIncCtrl(pid_param_t * pid, float error)
{
pid- >out_p = pid- >kp * (error - pid- >last_error);
pid- >out_i = pid- >ki * error;
pid- >out_d = pid- >kd * ((error - pid- >last_error) - pid- >last_derivative);
pid- >last_derivative = error - pid- >last_error;
pid- >last_error = error;
pid- >out += pid- >out_p + pid- >out_i + pid- >out_d;
return pid- >out;
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
电机控制
+关注
关注
3465文章
1704浏览量
264432 -
运动控制
+关注
关注
4文章
523浏览量
32427 -
智能车
+关注
关注
21文章
395浏览量
76694
发布评论请先 登录
相关推荐
智能车设计基础
智能车设计基础 第10章.rar http://filemarkets.com/file/bai2471/9d9e6c95/智能车设计基础 第3章.rar: http://www.t00y.com
发表于 10-21 21:11
菜鸟一枚 0基础做毕设 基于labview的智能车控制系统的设计
设计目标:①软件设计基于单片机的智能车系统;②实现操作界面登录功能;③实现管理员操作系统界面功能;④实现用户操作系统界面功能;⑤实现智能车
发表于 04-26 20:55
树莓派智能车AlphaBot系列教程
;catid=57树莓派智能车AlphaBot教程1:人生若只如初见 ...树莓派智能车AlphaBot教程2:直流电机控制 ... 树莓派智能车AlphaBot教程3:避障树莓派
发表于 05-15 15:39
智能车系统解决方案总体设计
大神提出改善的建议。资料在闯客网技术论坛下载 整个系统分为悬停半空的摄像头识别系统和地面的智能车控制系统,这两个系统均采用MKL26Z256
发表于 10-24 19:17
基于光电管路径识别的智能车系统设计
。 4 结语 本文设计了一个智能车控制系统,实现了快速自动寻迹功能。在硬件上,该系统采用MC9S12DG128B单片机为控制核心,协调电源模块、路径识别模块、车速检测模块、舵机
发表于 11-06 15:08
Infineon功率芯片应用于智能车灯控制系统的解决方案
的电压进行控制,以达到限制车灯电流,延长使用寿命的目的。本文介绍了Infineon高端开关应用于智能车灯控制系统中的应用经验,与传统技术进行了对比,结合实例具体分析了其实现的
发表于 12-06 09:45
怎么实现基于9S12DG128的智能车控制系统设计?
本文介绍了一种智能车控制系统的设计与实现方法。通过大量实验测试证明,该智能车能快速平稳地在制作的赛道上跟踪黑色引导线并行驶,而且寻迹效果良好,控制
发表于 05-18 06:46
基于NRF24L01的智能车控制系统设计
摘要:针对智能车的控制系统, 选用STC89C52作为整个系统的主控芯片, 并进行硬件电路设计;以NREF24L01作为无线接收模块, 选取E18-D80NK-N红外光电传感器作为避障模块的核心器件
发表于 08-23 07:49
怎样去设计一个基于STC89C52针对智能车的控制系统
摘要:针对智能车的控制系统, 选用STC89C52作为整个系统的主控芯片, 并进行硬件电路设计;以NREF24L01作为无线接收模块, 选取E18-D80NK-N红外光电传感器作为避障模块的核心器件
发表于 12-08 08:30
双舵机模糊控制在智能车控制中的应用介绍
智能车系统以—个标准的汽车模型作为载体,要求实现在白色场地上,通过转向和车速的控制 ,使其自动地沿着一条任意给定的黑色带状引导线行驶,在保证稳定性的前提下以最短的时间完成 自动寻迹。在该智能车
发表于 09-19 08:03
Infineon芯片在智能车灯控制系统中的应用
本文介绍了在智能车灯控制系统中功率芯片的应用经验,现今MCU和电力电子技术在智能车灯控制系统中发展的趋势是用
发表于 06-29 15:04
•1846次阅读
评论