A review of the DFRobot 4WD Arduino mobile robot platform

DFRobot 4WD Arduino Mobile Platform Review

I just got my DFRobot 4WD Arduino Mobile Platform from RobotShop (Arduino not included).


The whole kit was pretty simple to put together, and DFRobot throws in a couple of nice extras like a toggle switch for power, and a female receptacle you can use for your charging system. All in all, it seems like a pretty sweet deal at ~$50.

I'm using the platform with an Adafruit Motor Shield and an Arduino to control the four included gear motors. This probably isn't the optimal solution, because the yellow motors that come with the platform have a stall current of 1.5 amps at 3 volts. The Motor Shield has a max current of 1.2 amps per motor. I did some testing and couldn't get the motors to pull more than 700mA so I should be OK, but it is something to consider.

The biggest hurdle in getting the platform working with the Motor Shield was the fact that the motors would not run consistently: they would stop and start at random intervals. After half a day of research, I came across this post describing exactly the symptoms I was experiencing. My solution was to solder .1uF caps across the leads on each motor. They've worked without a hiccup ever since.

My other big concern was load capacity. I've managed to carry about two pounds with the platform, but any more weight and it just won't move.

Also, my original steering plan for the robot would not work here. I had initially planned to rotate the robot by spinning the left and right wheels in opposite directions, like a tank. Due to the spacing of the tires, the four wheels actually work against each other when this is done and the tires will eventually work themselves right off the gear motors (they just press on to the motor nubs). My solution was to only slow the motors down on the side that I want to turn in. The turning radius is greater (no more turning on a dime), but the tires won't pop off and all four motors will push the robot through the turn now.

So it wasn't quite a plug and play solution, but it does look like this will be an adequate base for my next robot. Here's a quick shot of the upper level chassis I've put together paired with the mobile platform:


robotelectronicsreview
Posted by: Scott Metoyer
Last revised: 26 Jan, 2012 04:05 AM History

Comments

Doug
Doug
26 Jan, 2012 04:07 AM

Hi Scott, I found your post about the DFRobot very helpful. I'm thinking about getting one soon and this was full of great info. I'm still a newbie so I have a couple of questions...

In your post, you say "The Motor Shield has a max current of 1.2 amps per motor. I did some testing and couldn’t get the motors to pull more than 700mA so I should be OK, but it is something to consider."

Can you elaborate on that? Specifically, 1) do you want each motor to pull more than 700mA and if so why? 2) Why is it something to consider? 3) Is the lower amperage affecting the bot''s ability to carry a heavier load or move faster?

One other question... what is the possibility of using stronger motors?

Thanks for your insight!

Scott M.
Scott M.
26 Jan, 2012 04:08 AM

Hey Doug, I'm glad you found the post helpful!

I'm a newbie to much of this myself, but I think I can answer your question: Basically, the less amperage the motors pull the better. Ideally you want to remain as far below the current limit of the motor shield as possible. As you start to get closer to the 1.2A peak (and 600mA operating) limit, you run the risk of burning out the motor driver chips on the shield. I mentioned it as something to consider because although it appears to be working well for me, I am getting close to the current limit of the motor shield and your mileage may vary.

There's definitely a relationship between motor speed and voltage. Basically the higher the voltage the faster the motors spin, but the trade off is that the motors draw a proportionately larger amount of current. Push it too far, and the motor shield simply won''t be able to handle it and the driver chips on board will burn out.

As I said, I'm a bit of a newbie myself so I can't offer anything more scientific than that. I discovered what worked best for me by basically piling some weight on the base, and powering the motors with my variable voltage power supply. I checked to see if it could carry the weight, and use a multimeter to check how much amperage was being pulled by the motors at different voltages.

If your interested, I'll be posting over the next few weeks / months about the build of my robot here:

Pedro2 build log

Robert
Robert
26 Jan, 2012 04:14 AM

i was wondering what code you used to make one side go slower then the other i am trying to do the same with a tank style, at current it rips the treads off...

davo
davo
26 Jan, 2012 04:15 AM

any ideas on how to keep the wheels on? mine keep falling off.....smoothing out any jitter has helped and not letting the robot yaw too much helps but fed up with the wheels coming off.

I would think that weight may be an issue with turn, I've got stationary turns and moving turns working as a tank ie opposite direction for stationary or slow dow one side speed up the other for moving turns. But I am using newer solarbotics standard motor with 6.5 V to the motor driver.

I would also advise on suppressor caps on the motors, they will also add some life to the motors. I''d be aiming at 6- 7.5 Volts for the voltage to the motors. Some drivers will drop some and so the voltage at the motors is less than suppplied.

Have fun with Pedro!

Dave

Mitchell
Mitchell
26 Jan, 2012 04:15 AM

Hi Scott, great article. What are you using for power? I''m having a heck of a time getting these motors to work on battery power.

Chris
Chris
26 Jan, 2012 04:17 AM

Great post. I''ve built pretty much the same thing, DFrobot 4wd, Arduino UNO, and Adafruit motor shield. I get movement and turning, I''m just trying to fine tune my code for more control.

What i have noticed is that when i define my 4 motors independently like this:

#define motors
AF_DCMotor motorRF(1, MOTOR12_1KHZ);
AF_DCMotor motorLF(2, MOTOR12_1KHZ);
AF_DCMotor motorRR(3, MOTOR12_1KHZ);
AF_DCMotor motorLR(4, MOTOR12_1KHZ);
...

I seem to get delays when i change the motors speeds

motorRF.setSpeed(255);
motorLF.setSpeed(255);
motorRR.setSpeed(255);
motorLR.setSpeed(255);

The delays are slight. I would say about 500ms between the time motor 1st and motor 4th spin up. In your setup do you see a similar delay, or have you done something to sync the motor starts.

I''m looking to put encoders on my wheels and worry that navigation tracking will be off if I end up dragging an encode wheel.

appreciate any help or referrals to information.

Chris

Don Sorensen
Don Sorensen
26 Jan, 2012 04:18 AM

yessir! Thank you for the tip about the caps on the motors. Was just assembling my chassis today and the soldering iron is warming up. Now, I hope I have a few of those laying around. Also, thanks for the heads up about turning this chassis. Saved me the effort!

Brian
Brian
26 Jan, 2012 04:18 AM

What is the dimensions of the motor enclosure, I know the overall dimensions of the kit but im planning on using a SBC mini2440 for my robot. how high is the secondary "shelf" off of this motor enclosure top surface? Your site has been a big help. Thanks!

Your Comments

Used for your gravatar. Not required. Will not be public.
Posting code? Indent it by four spaces to make it look nice. Learn more about Markdown.

Preview