一直是用四节镍氢电池来作为小车的电源,某天在网上看到了一个 5V,9V,12V的多用锂电池电源,忍不住就买了个过来,本以为很轻松的换上就可以了,结果当接到12V的电源口子上面的时候,总是自动断开,进入保护模式,感觉很奇怪。
电源图片
该电源提供1.5A的极限电流,过流以后会自动切断电源。
感觉尽管小车有四个马达,但是功率不至于达到 12V*1.5A 这么恐怖的地步。
最后用我的直流电源来分析,得到惊人的发现平时的电流也就在300mA左右,但是,某个瞬间,会直接飙升到2.24A以上,这个电流实在是有些恐怖。
直流电源如下:
百思不地其解,究竟是为什么导致如此大的瞬间过载电流,幸好电源有过流保护,否则,非出事不可,锂电池可是标准的易燃易爆啊。
细想之下,发觉问题出在如下的代码上面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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来降低速度,电机一旦启动,就不要停下来,反而是最节能,最不容易烧毁控制芯片的。
的确是个问题。