【开源分享】一个月狂搓卡丁车电机控制器。越野飘逸轻轻松!(用料:MPQ5882,MPQ5884,MPQ4583,MP1921A,MP9943)

image
↑欢迎围观视频,一键三连,谢谢大家!

最近我发现儿子特别喜欢驾驶各种车,而且挂挡、倒车、调头等各种操作看起来有模有样。

后来带他去试玩了一下商场里的卡丁车,没想到这下一发不可收拾了,他天天都念叨着想去商场玩卡丁车漂移。

虽然我也很喜欢去玩,可是钱包受不了啊。于是我动起了自己做一个卡丁车的念头,名义上是给儿子玩,实际上我小时候也没玩过这么好玩的东西啊,现在该弥补一下自己了。

想想自己是硬件工程师,如果想快速把这个卡丁车做出来,那最好就是直接买个车架,自己做电控系统。于是我去闲鱼翻了一下,还真有很便宜的车架,300,我毫不犹豫就下单了。

不过拿到才发现有点惨。卖家把电机、电池、控制器这些值钱的东西全都拆掉了,真的是只有一个车架。不过想想也合理,毕竟300买这个车架也算是赚了,而且最重要的是,制动系统还在车上,这就让diy工作量更小了。

电池和电机好搞定,直接买现成的就行了,毕竟这两样东西我也是在没法diy出来。

至于电机驱动这块,我决定在开源的本杰明电调上进行魔改,把硬件修改一下,在母线上增加e-Fuse电子保险丝来放置过流、保护后端器件。这是我简单规划一下系统框图。

画原理图是一个枯燥的过程。

但是PCB就相比而言有趣多了,怎么布局合理且走线更顺,这个探索的过程比较有趣。

经过漫长的等待,终于拿到了打样回来的PCB板,准备进行焊接。

板子上器件比较多,手工焊接肯定累个够呛,于是我选择使用钢网刷锡膏,然后用贴片机贴装大部分阻容器件。注意刷锡膏的时候最好是一次刮过去,如果多刮一次就可能导致焊盘周围有多余的锡膏,从而导致虚焊短路等问题产生。

锡膏刮得非常成功,没有任何一个焊点缺锡膏或者被涂抹。

我这个板子上最小的阻容是0402封装,这种可以轻松使用贴片机贴装,稍微等待片刻板子上的阻容器件就贴装好了。

阻容器件数量比较多,采用贴片机最节省时间。而稍微大的器件,板子上往往只用一两颗,这如果使用手贴只需要几秒钟,但是使用贴片机的话编程可能就需要几分钟,于是这种大器件全都手工贴片。

板子上的贴片器件都摆好之后,放进回流焊炉设置好温度曲线进行焊接。

从回流焊炉出来的板子,焊接得很不错,这主要得益于锡膏刷得好。

在焊接插件器件之前,需要先测一下,贴片器件的焊接有没有导致板子短路等问题。用万用表简单测了一下发现没问题,就可以愉快地焊接插件了。

用烙铁焊接电解电容、连接器等插件。

焊接完之后,用硅橡胶加固一下NTC热敏电阻和插件电感等,防止后面行车时因震动而掉落。

接下来修改固件,我使用的是75_300_R3版本,这个版本默认的采样电阻是3个0.5毫欧的并联,而我板子上评估之后,只放了一个0.5毫欧的电阻,所以需要在代码里把这个宏定义修改一下。

卡丁车是通过油门来控制车的加速,刹车时是油刹直接作用在车轮上。另外需要有一个倒车按钮,这样的话在电调固件里选择的模式就是ADC_CTRL_TYPE_CURRENT_REV_BUTTON。这个模式的意思就是,油门ADC输入之后,电机运行模式是电流环,倒车通过一个按键来实现。

但是在代码中,这个按键的逻辑是不对的,当按键按下之后,转速立即取反,这导致的结果就是,高速行车中如果按下倒车按钮,电机就会立即切换反转,驱动车辆倒车,这太恐怖了。正确的操作逻辑时,要倒车首先需要把车刹停,或者原本就在静止状态。所以需要修改这里的代码。

给这里增加了速度识别,当速度高于一定值时,就不让倒车按钮生效。

这部分代码修改好之后,就可以重新编译并把固件烧录到焊接好的电路板里了。

把铝合金CNC的底壳和3D打印的外壳安装上去,这个控制器就完整了。

它支持两路XT60电源输出,方便扩展其他外设。后续想给卡丁车增加氮气加速效果,实质上就是通过这两个电源口扩展两个高速风机,加上彩色LED形成氮气加速的特效。另外这个控制器支持CAN、UART,方便扩展多电机设备。

接下来,连接电池电机,并使用VESC TOOL上位机对电机进行调试。这一步最关键的是不要把电机安装在车上带载运行,而是要让电机空转。

先自动识别电机的电感、电阻、磁通等参数;然后识别电机的霍尔信号位置;再把油门信号接上,识别油门范围并设置电机控制模式。

做好这些工作之后,才能把电机安装到卡丁车上。为了安全起见,我把车后轮支起来,然后踩油门测试,调整好电机正反转,观测踩油门时电机转动正常,就说明这事成了。

然后把控制器,电池都安在车上。绑扎好线束,并把车放下来。

可以愉快地玩车了。虽然但是,我发现这个车的动力太足了,完全不敢让五六岁的小孩独自驾驶,于是这台卡丁车反而成了我的大玩具。

作为一名硬件工程师,我想和大家分享这块电机驱动板。

整个系统需要一个功率保险丝放在电源母线入口处,如果使用这种传统的一次性保险丝是,烧了就得换,还是挺麻烦的。

我放了一颗MPQ5882,这是一个车规级e-Fuse芯片。所以我其实是把车规级的可靠性和智能保护,带到了这个DIY卡丁车上。MPQ5882提供了一个可编程的、像电子保险丝一样的过流保护。而且它可以实时监控母线电流和温度,如果给这个控制器加一个显示屏,就可以看到实时电流和温度曲线,以后我也会实现这个功能。

这个板子上还有两个XT60输出,针对这两路输出,我也选择了一个合适的e-Fuse——MPQ5884进行保护,它和MPQ5882功能类似,但是阈值电流小一点,用在这里刚刚合适。

众所周知,电瓶车在下坡或者刹车的时候会产生反向电动势,而这个卡丁车也不例外。所以60V的电控系统,至少需要100V的DC-DC控制器,这里我选择了MPQ4583。它把60V的电池电压降压到12V,用来给电机预驱电路供电,它的输入耐压高达100V,可以从容应对反向电动势,并且它的高效率可以避免高差压下产生较高热量。MP4583极小的封装尺寸和简单的外围电路也使得布局布线极其简单。

这是电机驱动电路的原理图,为了驱动这个1800W的电机,我选择了2个MOS并联的方案。这就需要栅极驱动芯片有一定的电流驱动能力。

于是我选择了MP1921A作为栅极驱动芯片,它的作用是把主控MCU发出的PWM控制信号,放大成足以快速开关大电流MOS管的驱动信号,从而控制电机的转速和转向。

image

100V耐压、2.5A驱动能力在驱动双MOS并联的电机驱动电路时简直游刃有余。MOS管驱动最怕供电电压不足,导致管子导通不完全,从而发热烧毁。MP1921内置了高侧和低侧独立的欠压锁定,可以保证驱动电压低于阈值时确保MOS管关断,从而保护MOS。而且它内部集成了自举二极管,极大地简化了外围电路。

另外,板子上还需要一个电源转换电路,把12V电压降压到5V给控制系统使用。这里我选择了MP9943,这是一波面向库存的设计,以前在做飞控时用的就是这个DC-DC芯片,它输入电压高达36V,最大输出电流3A,转换效率高达95%且性能极其稳定可靠,所以这次卡丁车这个项目我就直接拿来就用了。

这次卡丁车DIY过程中,从母线保险丝到DC-DC电源降压芯片,再到MOS管栅极驱动器,都使用了MPS的器件,这些器件在实现功能的前提下,达到了非常优秀的电源管理和热管理性能,使得这个卡丁车可以稳定地在60km/h的速度下狂奔。在这里也真诚地感谢MPS对这次卡丁车DIY的支持。

我把DIY这个卡丁车控制器需要的原理图、PCB、外壳、修改后的固件都开源出来,供有需要的人取用:

1_原理图.zip (123.2 KB)

2_PCB.zip (2.9 MB)

3_固件.zip (284.1 KB)

4_外壳.zip (961.3 KB)

大神,你这哪里是硬件工师,你这是全能型工程师呀,软硬通吃!

你好,我的主业确实是硬件工程师,只是平时喜欢不务正业,3D建模、软件代码、啥都想试试而已!