Let's Make Robots!

Meet "Walter"

Thanks to the naming genius of GroG... I now proclame thee Walter!


***Major Update 11.16.08***

First test worked perfectly! Even with bad code. The motors came on a little suddenly and I didn't have a good 0 to Full-speed range (code problem) but the basic system is solid. Now that I know everything works, I need to do a total tear-down and start figuring out where everything is going to go. Now, God doesn't open a window without closing a door so it seems that this guy will be taken down and will be donating its boards and sensors:


So there you go! Again, I want to give much thanks to everyone who has given me a hand on this one, from motor control and FET's to EEPROM's and all else. I will keep up with the updates as I go but for now, I have a lot of work just changing the initial MacGyvered set-up (in the video) to a proper one. Then comes the rest!


***Update 11.15.08***

Both drive systems done and installed! You would not belive the torque coming out of the wheels! Both motors are mounted with slotted holes allowing adjustment and tentioning of the drive chains. I am doing the electronic work tonight, maybe I'll have a "driving around" video tomorrow.



***Update 11.14.08***

The Frame is Done!!!

(I added a picture with my boy, Charlie-Mac for an idea of scale)







***Update 11.9.08***

Huge Score, folks!!!

I ran into 2 old-school garage door openers and scored 2 small sprockets! Better than that, the ID was just a tiny bit smaller than the shaft comming out of my drill motor. I was able to run a tap down the middle and thread the inside of the gear to the same threading of my drill! --I also drilled and tapped 2 smaller holes for set-screws to lock it to the shaft! PERFECT!


Score number two: I found that the chain used for the garage door opener is not only 15' long, contains TWO master links but is the same pitch as a standard bicycle!!!! Off to the salvage shop. For free I scored 2 kids bikes both with 36 tooth main sprockets. I have liberated them and well, here we go:


So here's what we got: 2 complete chain-drive systems, with a final gear ratio of 36:6 or 6:1. Not only is this the cleanest possible set-up I can think of but with both drills in low and another 6:1 on top of that, this thing will be able to climb a tree! --One more, I was looking at the shift mechanism on the drills... it seems quite easy and possible that a servo could be used to switch from low to high. Just think about it, the first bot here with a REAL transmission including shift-on-the-fly from  "wicked fast" to "wicked torque"... OH YEAH!!



I know I should wait until I have video of this guy cruising around on the ground but I couldn't wait.

The frame is from a previous project I did and the drive method is a joke --I mean, c'mon two wheels just rubbing on eachother? The drive system on the final bot will, of course, be a belt and pulley or chain/ sprocket. For now, I am still working on the code and being sure it is "friendly" to the motor driver board. I am still suprised how sensitive these FET's can be.

As you can see on the video, I am just running a simple code of Fwd, spin right, spin left and rev. I am using the PWM code and "ramping up" and "ramping down" the speed before and after any and all changes in direction. I will have to play with it a while to see exactly what I can throw at the controller without smoking anything. For now, I have a 20A inline fuse for the main protection and I have yet to blow it. --However, I have not yet done a test with the wheels on the ground.

You can keep up with the video by watching the LED's on the board... The 2 greens are the PWM signal A/B and the reds indicate a reverse for that side.

Here's just a couple pics:





Comment viewing options

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

20 kHz is a standard switching speed for motor controllers, and is a good choice for most standard DC motors. It goes beyond both the mechanical and electrical time constants of the motors, to provide good drive throughout the duty cycle. THere are high end industrial coreless motors that require even higher switching frequencies, from 60 kHz on up to 100 kHz and higher.

Higher kilohertz switching rates are only a problem if there aren't adequate drivers on the FETs. 

How about the MCU switches as fast as it can while still maintaining the mark to space ratio? Traditionaly, PWM implementations work based on a counter. 8-bit PWM would count 0..255, then roll over to 0. Your PWM output can have one of 256 values. If the counter is less than the PWM value, the output is high otherwise, it's low. This way you have a fixed frequency PWM output, that frequency being the inverse of the time taken to count from 0 to 255.

Here's a concept: same counter counts from 0..255, BUT before performing the comparison, you reverse the bit order of the counter value. Suddenly (at 50% mark to space) you have a PWM frequency 256 times higher than before. The frequency is no longer fixed, but is dependant on the demanded ratio.

Am I making sense to anyone other than me?

 Your enthusiasm is really inspiring. The videos really transmit your passion for tinkering.

 Makes me wanna take up soldering Welding as well...

The battery drill powering was genious, classic K.I.S.S. craftsmanship

/ vzz-clck-"Maneuver"

Yup. I just bought two 18V power drills. Where else are you going to get a rechargable battery, motor and gearbox for $20?

For Big Chaser, I paid $30 for each of my motors and about the same for the battery!!

I was reading about BOA's "Big Chaser" and a comment he made then about his driver board explained a likely cause of your FET problem. Your FET driver IC gets it power from the batteries that drive the motors.  When your motors draw more current than the battery can handle the battery's voltage falls towards 8V or less.  For your FET to remain saturated and keep it's resistance low, the gate voltage needs to be at least 8V or more. Here is one solution that will handle short drops in the supply voltage.

FET_solution_1.jpgThe capacitor charges to 0.6V less than your battery voltage. During short drops in battery voltage due to stall current the FET driver is supplied by the capacitor. The capacitor value shown here is the minimum value I'd use. The bigger the capacitor the better!  There are two other options that can maintain a suitable supply voltage reguardless of the motor battery voltage. (1) connect VDD of U1 to the battery pack for your logic if that is 9V or more. (2) replace U1 with a MAX202E RS232 transceiver (yes you heard right!). Run the MAX202E from your 5V and with the help of four external capacitors it will convert your 5V outputs to +/- 10V which is perfect for driving FETs.  I would put 18V zener diodes on your FET gates and upgrade the external capacitors to 10uF which is the maximum value allowed to ensure good output if there is any load other than the gate. See the datasheet.


This IC is also good for driving ultrasonic transducers.

Hope this helps :)

I don't think there is a problem with battery dip from what had been described. THe FET was not getting hot, but the driver was . What that indicates to me was the FET was switching well, but drawing a lot from the driver. The specs on the IRFZ44NPBF indicate a Vgs(threshold) of 4 volts, with switching charecteristics spec'd at 10 volts. I was a little concerned with the possibility of the motor spiking the supply, to have that higher voltage transmitted through the driver to the FET gate, and going beyond the Vgs max spec of 20 volts, possibly killing the FET through overvoltage. Undervoltage driving of the FET would get it into the linear range and generate heat on the FET before failure. Overvolting the gate might not heat the FET while killing it.

The supply seperation with a cap and diode is a good technique, and could be helpful if there is a battery draw down. I've used it to keep micros from resetting when motors draw a bit extra. It might only be partially helpful for a voltage spike though, with the large cap used. A 12 volt zener on the driver output would seem a good cautionary measure to prevent over volting the gate, if that is happening. Or it could be simply draggin' feet across the carpet or petting the cat before installing the FETs.Heaters dry out the air and cause all sorts of staticy situations.

About using an RS232 driver, it can work in some situations but it's a bit of a hack. FET drivers are made as high current capable device for a reason, to quickly get charge on and off a FET gate. IRFs app note 1084 on Power MOSFET Basics talking about gate charge :

The advantage of using gate charge is that
the designer can easily calculate the
amount of current required from the drive
circuit to switch the device on in a desired
length of time because Q = CV and I = C
dv/dt, the Q = Time x current. For
example, a device with a gate charge of
20nC can be turned on in 20msec if 1ma is
supplied to the gate or it can turn on in
20nsec if the gate current is increased to
1A. These simple calculations would not
have been possible with input capacitance

The main point is, if you want to switch the FETs quickly, to not heat them, drive them with higher current capable devices.

I disagree on a few points.

The gate threshold voltage is where the fet starst to turn on eg. variable resistor.  Like most power fets, the IRFZ44 need about 10V gate to source to achieve saturation (min on resistance).

That high current requirement for fet drivers is for high speed switching. With all cmos devices, the higher the frequency, the more power they use/dissapate. For a motor driver like this the switching frequency should be below 1Khz. Even the high power motor drivers on BoozeBot which are rated up to 1KW only switch at 300Hz and the fets are driven by a LM339 quad comparator.

The main point is if Chris is switching his FETs too quickly, not only will the driver get hot but the impedance of the motor will increase, the back emf of the windings will increase and then there's the permability of the rotor core/magnetic circuit which I can't remember the formula's so don't make me get out my old text books or I'll throw formulas back at you and from what I remember some of them hurt :( usually my head.

Anyway it's Chris's robot, we're just making suggestions to try and help him.

Cracking idea. The big chaser will ultimately have an RS-232 interface anyway. May as well make use of the charge pump as a Vref. The FET gates draw nothing anyway.

Here's an extension: use it as a Vref to your PIC ADC, too and monitor your battery voltage.

Can a PIC accept Vref's above or below it's supply voltage? I've always used a voltage divider to bring my voltages down to within 0-5V or used the Vref's to make the A/D converter more sensitive to smaller voltages such as the hall effect sensors where the output might only fluctuate between 2-3V.


Some can. But don't forget how limiting picaxe is in this respect. Just because the pic can doesn't mean the picaxe allows access to that feature.