Controlling 540 brushed motor with picoborg reverse possible
Forums:
Hi,
I bought a picoborg reverse to control a rc car that is driven by a 540 brushed motor and a 7.2V battery pack.
Unfortunately, if I connect the motor to the reverse board and use the pbrGui.py script to control it, the motor only starts to bleep and won't move. Sometimes I can make it run at full speed if I put the slider to 100. Additionally, the controller becomes very hot during my attempts to run the motor. (However, it doesn't seem to have switched off due to high temperature.)
So the question is: Is it possible to drive the 540 dc motor with the reverse board? May be PWM doesn't work with this kind of motor? Or is it that the motor needs more current than the board can deliver?
I would be very grateful for help and advice what I could do to control my rc car using the picoborg reverse. And if I would need another motor, which type/model could I use?
An additional question I have is, if the board could control brushless motors?
PS: I tested a very small dc motor I had in my spare parts box with the board to test if it works in general. The small motor can be controlled perfectly with the picoborg reverse and the python script.
Regards,
Mike
piborg
Wed, 12/23/2015 - 19:47
Permalink
Brushed 540 motor
From a quick look it appears that the "540" denotes a particular size of motor but not the full specification.
For example all of these are 540 motors:
http://www.amainhobbies.com/rc-cars-trucks/540-size-motors-electric-1-10...
Do you have the specifications or the model number for the motor?
My guess is that the current draw from the motor is probably more than the 5A limit for the board.
What this means is that the chip is heating up too much, causing the thermal limiter to keep turning it off again.
Operating at 100% actually causes less heat to build up, which may be why that is the only working speed.
It may work with both chips combined if the motor draws less than 10A.
To try this you will need to connect the motor to both outputs at the same time:
You can then use the
SetMotors
function to set the speed in Python like this:If you use the combined outputs DO NOT use the
SetMotor1
orSetMotor2
calls, they will likely damage the board by setting the outputs to different values.Also DO NOT run the standard examples or the example GUI, they will set the outputs to different values and will likely damage the board.
mike_hg@hotmail.com
Thu, 12/24/2015 - 05:36
Permalink
Thank you very much
Thank you very much for your quick response!
Unfortunately, the motor has no information printed on it. However, after searching the internet for these type of motors I found that they could easily draw more than 20A (and sometimes even much more). This means that even the combined 10A would not be enough.
An idea that came to my mind was to use a standard speed control unit that is normally used with these motors in rc cars. Usually the speed control is connected to the rc receiver. Probably I could connect it directly to the rasperry pi and try to send control commands to it via GPIO? (I still don't know exactly if this is possible and how, since I don't know what kind of signal the standard speed controllers expect - PWM?)
I would probably still use an ultraborg to control the servo for steering and to connect one or more distance sensors.
PS: I just read that usual speed controllers accept servo input signals. Do you by chance know if I could use ultraborg then to connect to the speed controller? (May be I should ask the question in the ultraborg forum?)
Best regards,
Mike
piborg
Thu, 12/24/2015 - 10:39
Permalink
Speed Controller (ESC) from UltraBorg
If memory serves correctly the control signal from the receiver to the speed controller is typically the same as the ones used to control the servos.
I believe UltraBorg will be able to command the speed controller in the same way, so it should work well.
When using UltraBorg this way the tuning instructions will be slightly wrong:
If you tune the UltraBorg as described the control will also be slightly odd.
-100%
UB.SetServoPositionX(-1.0)
will be stopped.+100%
UB.SetServoPositionX(1.0)
will be full speed.0%
UB.SetServoPositionX(0.0)
will be half speed.In code you can change a
0.0
to1.0
speed value like this:mike_hg@hotmail.com
Sun, 01/03/2016 - 10:22
Permalink
I'm sorry for the late reply.
I'm sorry for the late reply. Thanks again for your help!
I could make the car go by using a sequence that emulates the remote control. I.e. going forward works without problems. But to make the car go backwards, I always have to go the maximum backward first (brakes the car) and then again going to the backward position.
The zero value seems to be the mid of the servo position (or 3000 in the tuning GUI of Ultraborg). I have still to fine tune the maximum and minimum values (the ESC seems to be very sensitive to small changes) and to write a small program to control the car with the PS3 controller.
PS (Just in case somebody tries this out himself): The motor seems to interfere with Wifi and signal was ones lost when the car went at full speed. Probably it is a good idea to avoid interferences by using a capacitor.
Regards,
Mike