本着想找一份电机软件驱动的工作目的,我决定开始学习电机。之后学的所有的技术也是围绕着能够自己学会开发车载电机驱动系统为中心,目前据我估算,可能得要需要学会的技术有。
1.电机驱动(PWM、PID、FOC)
2.can通信
3.CANopen/CANoe协议
4.FreeRTOS
5.Autosar
6.QT/C#
7.HAL库
最近面试真的被虐哭了,意识到自己的技术真的拉的一批。
朋友们,道阻且长。我也不知道自己会不会放弃,什么时候放弃,边走边看吧。
一. 电机基础知识
1.基本电路
控制一个电机完成最基础转动,我们至少需要什么元件支持。
理论来说,一个能输出脉冲的单片机,一个电机就足够了,但是我们都知道,实际上生活中的电机功率都比较大,而开发板的电流供应不过mA级别(20~25mA左右哦),电机则是A。所以,我们需要放大电路,那么
——>电机驱动板必不可少!有可以叫电机驱动控制器。当然,继电器也可以承受大电流的脉冲,but,如果我们用到PWM来进行电机调速时,继电器的机械结构承受不了开关不停的变化,容易烧毁,而驱动板/控制器里面使用的是MOS集成的电路,不受影响。
如果我们要改变电机速度,那么就需要用到PWM,如果要对速度进行检测,则需要电机将速度返回给编码器。所以驱动板上一般会有编码器接线,电机驱动线,电源正负极,以及与开发板的连接接口。
那么使用CAN通信和Autosar架构的车载电机控制系统需要什么呢?
当然对应不同的电机,使用的硬件多少会有差别。需要分别讨论 ,比如直流有刷驱动板、步进电机驱动器、直流无刷驱动板。而车载级别的电机则需要用到电机控制器。
驱动板
电机控制器(一般是技术比较成熟的产品,已经配置好对应的接口和上位机)
二. 电机种类
2.1 直流有刷电机
1.工作原理
![](https://i-blog.csdnimg.cn/blog_migrate/6425b1f8a06af2555c393ef77923f69d.png)
左手定则
2.结构
定子:
转子:
电刷:
换向器:
测速:编码器(霍尔传感器)
3.应用场景
简单的电动玩具,如果对扭矩有要求,那么就通过减速器来增大扭矩。
4.功能
1)H桥驱动
2)电流、电压、温度采集
编码器接口
5.驱动功能
1)初始化
定时器初始化
GPIO初始化
电机初始化
2)启停
3)正反转
6.编码器
7.PID
8.参数整定
1.采样周期选择。越短越连续,占用硬件资源越高。
理论:香农采样定理(采样最大值)超过失真
经验:实际值突变能力——>最大突变值相对于实际温度太小了,要取很多次,除非系统精度要求高,不需要频繁采样。类似于温度这种突变小的,采样取大一点。压力流量突变值大的,这种就要取小一点。
2.PID参数整定。
理论计算--数学模型(建立模型后根据实际值来调整)
工程整定--试凑法、临界比例法、一般调节法。
参数调节一般会遇到什么问题呢?
1)系统震荡
先是纯比例调节,发生剧烈震荡。一般是因为比例系数太大了,图形一般是下面这样的。调小比例系数后图一慢慢变成了图三,可是还是有明显的震荡,此时我们调节P已经不顶用了。
开始增大微分调节,1->2
2)静态误差
引入积分环节,增大积分系数
3)超调
如果仍旧有2,先考虑降低积分系数(调节效果更明显),再考虑增大微分系数。
9.PID上位机通信协议分析
1.数据帧格式
帧头+数据类别+数据域+校验和+帧尾
数据类别与数据域相当于C JSON(键与值),
校验和CRC16-MODBUS检验校验范围包括帧头+数据类别+数据域。
2.协议调试
通过串口助手发送给PID调试助手(QT\C#)
根据上位机的串口助手通讯协议找到对应的数据类别+数据域,通过CRC校验工具生成
数据下发。
3.协议代码实现
数据帧的格式适合使用枚举类型进行
2.2 舵机
实际上可以看为一个伺服电机,服从电信号要求,很好的控制电机角度。
sg90轻但是负重小,扭矩小,金属舵机相对好一点,但是贵一点。
应用:机器人,机械手等等。智能车换向
组成:直流电机,齿轮减速组,角度传感器,控制电路。
工作流程图(闭环回路):返回比例电压
电路板给控制信号到舵机控制电路板,电机转动,带动减速齿轮组旋转,并将值传入角度传感器;电压改变,比例电压回传给控制电路板进行回环控制
控制原理:一般要求周期为20ms的PWM信号控制,该脉冲高电平持续时间一般为0.5ms-2.5ms,相对应舵盘位置0-180°。
周期的长短影响什么?为什么一定要高电平维持在0.5ms-2.5ms之内呢?与舵盘是如何对应的?
2.3 步进电机
2.4 直流无刷电机
2.5 PMSM
2.5 FOC
三. PWM专题
四.电机学
电机的基本理论