Arduino小车更换锂电池导致过载的问题分析

一直是用四节镍氢电池来作为小车的电源,某天在网上看到了一个 5V,9V,12V的多用锂电池电源,忍不住就买了个过来,本以为很轻松的换上就可以了,结果当接到12V的电源口子上面的时候,总是自动断开,进入保护模式,感觉很奇怪。

电源图片

image

该电源提供1.5A的极限电流,过流以后会自动切断电源。

感觉尽管小车有四个马达,但是功率不至于达到 12V*1.5A 这么恐怖的地步。

最后用我的直流电源来分析,得到惊人的发现平时的电流也就在300mA左右,但是,某个瞬间,会直接飙升到2.24A以上,这个电流实在是有些恐怖。

直流电源如下:

image

百思不地其解,究竟是为什么导致如此大的瞬间过载电流,幸好电源有过流保护,否则,非出事不可,锂电池可是标准的易燃易爆啊。

细想之下,发觉问题出在如下的代码上面

digitalWrite(MosfetLeftFrontWheel0, HIGH);
digitalWrite(MosfetRightFrontWheel0, HIGH);
digitalWrite(MosfetLeftTailWheel0, HIGH);
digitalWrite(MosfetRightTailWheel0, HIGH);

digitalWrite(MosfetLeftFrontWheel1, LOW);
digitalWrite(MosfetRightFrontWheel1, LOW);
digitalWrite(MosfetLeftTailWheel1, LOW);
digitalWrite(MosfetRightTailWheel1, LOW);
delay(200);

//停车
digitalWrite(MosfetLeftFrontWheel0, LOW);
digitalWrite(MosfetRightFrontWheel0, LOW);
digitalWrite(MosfetLeftTailWheel0, LOW);
digitalWrite(MosfetRightTailWheel0, LOW);

digitalWrite(MosfetLeftFrontWheel1, LOW);
digitalWrite(MosfetRightFrontWheel1, LOW);
digitalWrite(MosfetLeftTailWheel1, LOW);
digitalWrite(MosfetRightTailWheel1, LOW);

这段代码看似没有问题,当时也是为了方便才这样写的。

请注意 “停车”这两个字,当时为了使得小车在获得超声传感器的反馈后才会动作,因此要求小车运动一段距离以后就要停下来等待传感器。

但是如此操作导致一个严重的问题,那就是电机的启动负载问题,电机的启动电流非常大,频繁启动,尤其是多电机同步,会导致不可预测的瞬时启动功率过载,非常危险。小车可是有四个驱动电机啊!

虽然知道原因了,但是,却不好解决,原因在于,直流电机的软启动,国内的技术,唉,不提也罢,随便一个配件都是进口的,都要几张红的,关键是还没有给小车这么小的电机的专用的驱动模块,太难了,也不合适。

没办法,不过可以通过降低启动电压的方式来降低瞬时功率,代价就是电机输出功率的下降。于是把电压切换到9V,瞬时最大峰值电流一下子降到了1.2A左右。

勉强凑合。

不过最根本的解决方法,恐怕还是PWM来降低速度,电机一旦启动,就不要停下来,反而是最节能,最不容易烧毁控制芯片的。

的确是个问题。

发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注