Let's Make Robots!

LMR Review Dagu Wild Thumper Motor Driver

Drives 2 DC Motors up to 15A per Motor

Here is the video for anyone stuck behind a "Great Firewall"

Overview:

This is a review of the Dagu "Wild Thumper" dual H-bridge motor driver and high-current switch. I will start with a little back story. I came into reviewing this item by chance. I had emailed Oddbot (now working for Dagu) with a story of the excessive problems I was having with my existing motor driver. My robot is driven by (2) DeWalt drill motors, which are clunky and electrically noisy, are hard to stop once going, and are capable of drawing massive amounts of power. I should add that the very high levels of current draw happen only during a stall, with normal "driving around" being in the 6-8 Amp range. Any start-up or direction change that is not "ramped" can double this figure. I told Oddbot of my problems with current draw and the persistent problem I was having with blown FET's. He had mentioned that he had designed a large controller for the Wild Thumper 6x6 platform, that he was curious to see how it would hold up on a different chassis and how it would deal with motors that would pose different demands on the controller. A week later, I opened a yellow DHL bag.


Opening the box:

I received this review unit directly from Dagu so I can't speak as to the packaging one would get when ordering from Robot Shop or the like but simply, it was well packaged in anti-static bags with plenty of packaging surrounding it. It came outta the box in perfect condition. My first thought on handling the unit was to remark on how heavy it is. It is slightly larger than a playing card but weighs as much as a large pair of pliers in your hand. Flipping the unit over quickly shows why --the vast majority of the motor driver is all heat sink! Nice big, heavy, substantial heat sink. So far so good.




Nuts and Bolts of the Driver:

  •     4" x 2 3/8" x 1 1/4"  (W,H,Thickness)
  •     On board Atmega 168 16K (bootloaded with Arduino, (has ISP pins available))
  •     Dual 15A FET H-bridges with fuse protection
  •     Blow fuse detection by processor and LED
  •     (7) General use digital I/O pins with 3-pin "servo" connectors
  •     (5) ADC inputs with "servo" connectors
  •     5 Amp LDO voltage regulator with screw terminals to feed external devices
  •     2A On board charging circuitry for (SLA, NiCd, NiMh)
  •     On board current and voltage monitoring via the Atmega processor
  •     Communicates via USB, serial, i2c, or PWM "RC servo control"
  •     Ready for all you AVR people --Programmable via USB or ISP
  •     Speaks arduino out-of-the-box
  •     Preprogrammed for use with 7.2v RC packs and RC "servo" control
  •     Code for "mixing" X/Y into differential drive included
  •     The Manual is Here





Nuts and Bolts of the High Current Switch:

  •     30A+ Switching ability (I really don't have a spec for this, I'm sure it is much higher than this)
  •     Small Size  (approx) 2 1/4" x 1 3/4"
  •     "Jumpable" to external switch or TTL control (with transistor)
  •     Nice big, fat screw terminals for use with "spade" connectors and heavy guage wire



Lets get into it (I love this driver so these will be "Pros"):

I adore this motor driver. --Let's just get that outta the way. I like the way it looks, I like the exposed glass fuses, it's got a lot of nifty lights and the big-ol' heatsink. I love the fact that it has its own microprocessor on board as well as an on board FTDI and thus, USB programming. The charge circuitry works flawlessly and actually charges my battery twice as fast as my "wall wart" charger. The fact that the microprocessor is keeping an eye on the charging process and it is able to communicate to the "main brain" of the robot, makes it wicked easy to incorporate a "charge routine" into your existing code. Voltage level can also be watched and data can also be sent to the main processor. The 5v regulator is a beast at 5 Amps, but the current does become more and more limited as your Vin increases. The code included with the unit is very complete with one exception: I2c communications. The code is simple, clearly written with a logical easy-to-follow flow, with great comments and obvious "sections". I found it very easy to "strip down" the code to what I needed, and pick and choose what "chunks" I wanted to use. For example, the actual "motor routine" is almost stand-alone, needing only 4 bytes coming in and it works. This allows you to remove it, with little modification, and add it to your control system. Really, it is very nice simple code. I do have to throw in a "however"... However... When you scroll to the bottom of the code, you may be upset to find a comment-line header saying  //*********i2c routine***********  only to find "your code here" just below it. Hmmmmm.

I like the fact that I have an extra brain doing some of the thinking grunt work on the robot and freeing up thinkin' space on the main processor. Not to mention simply having extra pins available for accessories. In terms of using this with a Propeller, in addition to a motor driver, you are also getting a 5-channel ADC input chip as well. Hell, you get a 7-channel servo driver as well, if you want. On that note, skip the "main brain" on your robot all together --This one motor driver unit would be happy being the "main brain" of any robot. One more... This is the first time I had brakes available from a motor driver and I will NEVER go back to not having them ever again.

The "Switch":

I have little to say about the switch. Maybe this is a good thing. I plugged it in, it works great, I have not needed to give it a single thought --it just works. It was a little funny to install as it was designed specifically for the wild thumper, but really, mounting was nothing more than being sure the FET's (which serve to secure 1/2 the PCB to the chassis) need to be attached to something that can conduct some heat. The switch itself does feel a bit "plastic" and weak but then again, my intention is to jump over this switch to an external one. If one did not choose to do this, the switch is a cheap and easy thing to replace. It appears it uses standard 3-pin .1" spacing.

(This switch unit itself is not quite available --coming soon.)


Why everyone might not like this controller (These would be the cons):

Out of the box, this guy is pretty specific to the Wild Thumper. It is preloaded with software, with the battery pack voltage, max current draw, charge routine and control method already set. It comes working as if it were 2 servos --One would plug their "RC car" style receiver in and the motor driver would use the X and Y of the transmitter's joystick to control the motors. Now, if one would want to change any of this, even just the method of control, say, to serial input, somewhere along the line, you are going to have to get into some Arduino. We are not talking about any major code writing here, anything you would need to change is clearly marked in the code --the fact of the matter is that you HAVE to do it. If you are not set-up for Arduino, it is going to be a pretty big PITA to download and install the whole Arduino IDE just to change one variable from a 1 to a 2. Same goes for anything else you would want to set: Current-sense calibration, max current levels, battery voltage, etc. all can (but sometimes NEED TO) be changed and this can only be done via the Arduino editor. This is of course, if you don't intend to rebootload the brain to BASCOM or the like. The bottom line is that you will only see a very small portion of the capabilities of this unit if you don't speak a little Arduino along the way.

I also quickly found that there is no obvious way to mount this guy. There are a total of 10 holes in this thing, but each one contains a bolt holding a voltage regulator or FET. I suppose, you could remove the (4) bolts closest to the corners, replace them with longer ones and spacers, but great care must be taken that A) the plastic screws remain plastic and B) the insulators under the voltage regulators remain in place. I opted to remove the PCB from the heatsink, drill mounting holes, re-gunk with new thermal stuff and remount the PCB.

The screw terminals are a bit funky as well, sitting in the center of the PCB. This was done obviously for practicality, to keep traces shorter and efficiency higher. I guess I can't complain, I would rather have function then form. Never the less, a little funky.

There is a small, noticeable "singing" from the driver itself. I did not find it objectionable at all but it is there. I would say that unless your motors are completely silent, as soon as they start turning, you won't hear the controller noise over them.

Note: I found out the hard way that the FET's do NOT play nice when you try to run them at 31,000 Hz (the highest you can go when changing the Arduino's PWM frequency). At this speed, both sides of the H-bridge are on at the same time and well, this is not good. Don't do this and future manuals will reflect this fact.


Final Thoughts:

The bottom line is: If you speak a little arduino, or are willing to learn the smallest amount of it, this controller completely rocks. You will also be happy if you are a AVR person and program it that way. It is rated and documented (and contains fuses) for use up to 30 Amps total. This is not to say that it could not do much more. Proceed at your own risk, but if you keep a very watchful eye on the heat, you could probably stretch the capabilities quite a bit. It is rugged, ballsy, solid and comes with a ton of bells and whistles.

I hesitate to give anything a 10, but the guy is certainly in the 9++ category. Simply a great controller. Well done.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

There is no reason you couldn't run a lipo. You will not be able to charge that lipo (and should probably comment-out the charge routine in the code) but other than that, the motor driver has no idea where it's power is coming from.

Are you saying that nicads can only supply 2A? I have shorted a few of them and melted a lot of wires --I am pretty sure they can dump a lot of current if you ask them to.

 

No, I said NiMh cant do more then 2A while not dropping the voltage. The more the current from NiMh the more the drop. NiCd can do high current, but the technology is outdated. Better stick to LiPo.

Its a shame it doesnt support LiPo as NiMh cant provide high current, up to 2A AFAIK. And NiCd are simply outdated :(

And what could be the reason you cant hook up LiPo to that thing ?

OB, Wan Kenobi --That's a good one. I gotta remember it.

I assumed as much. One thing I have learned with these drill motors is that if no one rocks the boat, we stay happily in the 8A range. Lurch start-ups, fwd/rev slams and the dreaded lock-up is when the 60 amp shenanigans start. I think I will take your advice and take it easy. The main issue I have is during autonomous navigation. It is just much simpler code when the robot is allowed to change motor direction whenever it wants to --a little more work to figure in ramps and braking routines between any direction change. Probably for the best, in the long run he is going to look a lot better with nice swoopie corners instead of slamming it into a spin. When you think about it, people don't "slam" into any direction when they walk around!

Everything is working so well right now, why press my luck?

Thanks.

Chris,

The "shenanigans" you mention. Do they result in the controller needing to be reset?

I am playing with a wildthumper and matching controller ( and having a blast thanks oddbot ) and find 3 or 4 rapid turns or no break direction changes stop me dead. A reset later and I am back tackling the challenges of my unmowed lawn

Sounds like an over current situation to me. The code detects these and will hold the motors still for a preset period of time. You should not need a reset if you wait long enough. Check the tuneable settings in the code. Perhaps you can tweak a few.

A second possibility is something that happened to me (I own a 6x6 with this controller). My battery pack is low quality. Sudden jolts in the current demand will pull the battery voltage down below the "I need a recharge" threshold in the code. I tweaked the code so that very short living under voltage situations do not send the code into recharging mode.

Happy hacking!

Thanks Rik,

Your second suggestion nailed it. A change to the "#define lowvolt" has the thumper climbing steps and completing slalom.

I had not considered that current draw to be an issue. I had read about it but did not make the connection. Much to to learn :)

Like shooting and posting videos!!!

(please?)

I understand your dilima, my code often uses a single interger for speed and direction (-255 to +255) so as long as I limit the maximum rate of change (which normally I don't) then that is enough.

Just a thought.....

Since low PWM tends not to work anyway perhaps you could have your code so that between values of say -32 to +32 braking occurs.Below is a sample pseudo code to give you an idea what I mean.

If abs(speedPWM<32)
{
   braking PWM would equal 255-abs(speed)*8
   motor mode=1 // braking
}

As speed falls below 32 the brakes gently engage so that when speed=0 the brakes are at 100%

 

I'm not saying, I'm just saying :D

 

Quick question, Oddbot...

What are your thoughts on quick forward/reverse direction changes? Currently, I am running a ramping loop within my code to not allow this. I.e. if the motor is going forward and I make a request for reverse, it does a quick ramp-down to STOP (no brakes) before moving on to reverse. This is of course, from the days of getting my reverse from relays.

How tolerant of this is your controller? Can this become a (bad) issue for my motors? Are there limits to how severe the change can be before the controller throws a fit? So far, I have been slowly asking more and more from this driver and again, so far, it has done everything I have asked. --I just don't want to find the "limit" the hard way.

I thought I would ask before I have another "32,000 Hz" sorta incident.