Victor 884 output decoding / General question

I have a pretty basic understanding of PWM h-bridges like the 884, that there are P and N MOSFETs that control the flow of current forward and backward through the motor. In terms of operation, the proper P channel FET is switched on, letting Vbatt get to the motor. Then, a PWM signal is applied to the faster N channel FET, who’s source gate is connected to Vss. By varying the pulse width of the signal, you can control the motors speed, from 0%/100% which is coast to 100%/0% which is full. Additionally, if both P or both N FETs are turned on at the same time, the motor’s coils are shorted and the motor slows down rapidly (brake).

Now my question is: How would you go about decoding the output of an existing H-Bridge (with out modifying it) to drive an additional, discrete (possibly larger :cool:) MOSFET H-Bridge on a shared ground plane?

(note: NOT for our FRC robot)

Well here is where I am so far… My gut reaction was to slap an 8 bit PIC in with some diodes, run a timer to decode the PWM and spit it out on another pin. Stumbling around on the internet, I found a very interesting example of using 2 AND gates (74 series logic) to prevent accidental shorting of the shared terminal FETs together (here). From this circuit I was able to eliminate the need for the PIC, however I was left with a bulky and awkward network of bipolars, pull-ups, and diodes before the gates. The chip I have been working with is a 74AC11008 quad AND gate from TI.

So, does any one have any “Duh” ideas that I have totally missed because I have been staring at this for the last 36 hours? I also tend to over-complicate things, and I am sure there is a very simple solution…

Thanks all!

JD

JD,
First, the 884 uses only one flavor of HexFET, the IRL3103. http://www.irf.com/product-info/datasheets/data/irl3103.pdf
There is no simple way to interface to a higher current device without modification to the 884. You would need to decode directional data as well as PWM switching. At this point you should know that the FET used in the 884 is capable of 64 amps of drain current, each. With three devices in parallel you have the potential to control 180 amp loads. The downside of this implementation is heat sink, of course. The power dissipated in the devices causes a heat rise within the case of each FET. Without an adequate way to rid themselves of the heat, they eventually would self destruct. That is why the 884 is rated at 40 amps with fan.
The design criteria for this controller is first to read the incoming PWM and determine from that decode process the magnitude and direction information. Then provide drive and directional commands for the output FETs. The rest of the circuitry provides the needed power supply conditioning, tally LED drive, PWM input conditioning etc. If you could provide a suitable heatsink would the 180 amps be sufficient? Remember that all the tabs of the FETs are not at the same potential. If you are looking for even higher currents, there is always the possibility of removing the FETs and using the gate drive to control external FETs. At this point I should tell you that handling high currents requires a good working knowledge of electrical design. Even the 40 amp design of the 884 required considerable knowledge of the tradeoffs and device design specifications of the FETs chosen as well as the layout of the controller. High currents can cause conductors to vaporize so there is some danger invovled for amateur experimenters. Proceed with caution.

Al - Thanks for your detailed answer. The problem with using the 884 is not that it is under powered, but rather that it is over powered. I was trying to use a Victor as a common example of an H-Bridge, however I am actually trying to use a larger motor on a cheap RC car that has been adapted to computer remote control. It has no external motor drivers for me to tap into - everything is potted in one epoxy smear.

I have attached what I have so far. The outputs are around six volts, the positive side is constant and the negative side is switched between float and ground. There is a brake function that I would like too keep. The circuit needs to perform 3 functions – decode direction, extrapolate PWM width, and properly drive the new h-bridge.

To get direction, there are two diodes (one per side). If there is a positive voltage (presumably the 6 volts constant from the controller) present at either of them, it will override a pull-down resistor, and bring the line attached to ¼ AND gate (acting as a buffer here) which goes to logic H. If there is anything less then .7 volts before the diode, the buffer input will be logic L. The respective top/bottom output indicates which direction to turn (logic H = + output on motor)

To get pulse width, a diode with a pull-up resistor is found on each side. As the PWM is pulsed between GND and float, the base of the PNP transistor alternates between ~5.3 volts and GND. This transistor is set up as an inverter, so that when there is a ground signal at the input, the output from the transistor is logic H, and when the input floats, the transistor outputs logic L. The output of each transistor is a positive voltage representation of the pulse width modulation of the opposite of each respective side (i.e. channel 1’s pwm will be reflected in channel 2’s output, and channel 2’s pwm will be reflected in channel 1’s output)

The last step is to take this data and drive the h-bridge. The first ½ of the 74AC11008 is configured so that it is impossible to short circuit the bridge (i.e. turn on Q1 and Q3 or Q2 and Q4), while also integrating the PWM signal. This works because the P channel FETs are active when their base is negative, while the N channels are active when the base is positive.

As for the brake function – when both inputs go high, low, or float, the motor is shorted through itself. At very low PWM rates (down to %0/%100) as long as there is still positive on one the one side, the motor will coast, but as soon as both inputs go to the same state it brakes.

I appreciate you all taking the time to look over this. JD





Wow - I had totally forgotten about my old account… Well theshadow = me. Sorry about that :confused:

Jacob,
I am not sure I understand your application fully. Are you using a standard PWM signal as an input? If so, the PWM does not change polarity. The pulse width relates to a 256 step decode where 0 is full throttle in one direction and 255 is full throttle in the other direction with 127 decoded as stop. The current Victor design decodes this PWM signal after some input signal conditioning and then uses the data to produce a proportional PWM output at a repetition rate of 120 Hz. The IFI website has some great discussion on the operating parameters and input PWM and decoded output.

If you are trying to perform a similar function with a custom controller then your circuit might work. If you are able to send PWM to one pin for forward and another pin for reverse that would simplify things a little. I see a few things as not needed and few things missing. The diodes would not be needed for instance since a FWD or REV signal would feed a dedicated input. You will need some input conditioning to insure that the device is getting reliable signals, a little low pass filter for RF protection and a few zeners to ground if there is a distance between your control and the drivers. The FETs need some resistors on the gates to make sure they turn on and off and so you don’t blow them up, so check on FET design and applications. You need some way to determine “off” and could easily decode that from an absence of signal on either input pin. Then you want to make sure that the FET you use has some reverse voltage protection for when the motor is running with no drive signals. The FET the 884 uses has a reverse diode built in. Don’t forget a little power supply filtering to prevent false operation and I think you would be close.

Al - Thanks for your answer. I took a few days off to let things simmer, and everything is a bit little clearer now. I have taken your suggestions and completely re-designed my circuit.

No - my application is increasing current handling capabilities of a cheap RC car receiver. In this case, the direction selected with P-FETs, and the PWM is applied with N-FETs at around 345hz with a duty cycle of ~ 0% - 95%.

Basically, this is what comes in (and also out):

http://www.theeshadow.net/files/sigs.jpg

Here is what I have worked out, version 3…

http://www.theeshadow.net/files/v3.jpg

The thing that was giving me problems is that the negative signal is either grounded or floating (essentially tri-state). This was an interesting problem, but I think that pull-up resistors on the inputs can take care of it the way it is set up above.

What do you think?

Jacob,
The top two gates appear to be cross coupled and will act as a flip flop. i.e. change state whenever a new pulse comes in on the positive or negative input. (There is also a connection on the input to FET Q2 that I think is a mistake.) I am guessing that in the real device what you are looking at is a circuit that pulls down to ground when the negative lead goes open.

I think you can handle this with two simple inverters feeding one of the upper and lower FETs. When the + lead is positive, turn on one of the postive lead and one of the negative lead FETs. The - input lead is connected the same way. So the output of the inverter connected to the - lead goes high when that input closes to - and turns on a negative lead FET. When the signals reverse, the inverters change state and turns on the opposite FETs changing the direction on the motor. Effectively, this becomes a simple bridge switch. (think a diode bridge where the diodes are actually FETs) Design the circuit so that the negative lead FETs can both be turned on ( and the postive leads FETs will turn off) when both the + and - inputs go high and you will have the braking function.

Al -

Nice catch on the FET cross up. Got that taken care of:
http://www.theeshadow.net/files/v3_1.jpg

As for the inverters – those were my first thoughts as well. As I looked into it further, it turns out the inverters aren’t even needed: P MOSFET’s are on when their base is low, and N MOSFET’s turn on when their base is high. So just link up Q1 with Q3, and Q2 with Q4. I severely overcomplicated this with my first circuit, which turned out to not work anyway (I proto’ed it). I guess I’ve gotten a bit rusty on my electronics – I was mixing up all sorts of analog and digital circuitry – I was getting something like 3.2 volts on one AND gate and 2.8 on another, plus frequency on all of them.

I took a few steps back, and realized a couple of things. This system would really only work for a full speed bi-directional bridge, i.e. “on” or “off”. From what I’ve gathered, trying to send PWM to this kind of bridge would be fairly inefficient, as it would slow the motor down (by applying brake) between every pulse, but also because it has to turn on and off both MOSFETs with every cycle, and there is always a time delay between the switching times. Also, there is no provision to coast, so you would be going either full speed or dead stop. It would something like this:


Vcc -> Q1 & Q2, Vss -> Q3 & Q4
M+  -> Q1 & Q3, M-  -> Q2 & Q4

A B | Q1 Q2 Q3 Q4 | M+ M- | D
---------------------------
L L | L  L  L  L  | +  +  | Bk
H H | H  H  H  H  | -  -  | Bk
---------------------------
H L | H  L  H  L  | G  +  | Rev
H Z | H  H  H  H  | -  -  | Bk
---------------------------
L H | L  H  L  H  | +  G  | Fow
Z H | H  H  H  H  | -  -  | Bk

At this point I was stuck, so I changed gears and started looking for a better method of driving the FETs (You made an excellent point that hooking them straight to input or logic would probably fry something). That is when I stumbled across the Microchip TC4469 IC. It is designed especially for driving power MOSFETs, but instead of having 4 inputs and an enable, there is a gate for every output. I figured that this would save me the trouble of using the AND chip that I was mucking with and having separate FET drivers.

Looking through the datasheet, I found an app note that did essentially what I needed it to do, using AND/INV logic. This made everything easier… After playing with truth tables and messing with a logic emulator for a while, I managed to get to where I am now. Back to the table:


Vcc -> Q1 & Q2, Vss -> Q3 & Q4
M+  -> Q1 & Q3, M-  -> Q2 & Q4

A B | Q1 Q2 Q3 Q4 | M+ M- | D
---------------------------
L L | L  L  L  L  | +  +  | Bk
H H | X  X  L  L  | +? +? | Cst*
Z Z | X  X  L  L  | +? +? | Cst*
---------------------------
H L | H  L  H  L  | G  +  | Rev
H Z | H  L  L  L  | Z  +  | Cst
---------------------------
L H | L  H  L  H  | +  G  | Fow
Z H | L  H  L  L  | +  Z  | Cst

*Note: When A and B go high at the same time, 
either M+ or M- will go V+, while the other will float.

The main difference is how it treats the “H” signal: the flip-flop makes the output of the second “H” dependent on the first one. Picking which of Q1 or Q2 goes “L” (i.e. on) and which one floats depends on the first input to go H (if they go high at the same time, such as when the circuit is disconnected, the outcome is “Random” - splitting nS here…)

This does not have provisions for low-side braking; however I can’t see this being a significant drawback.

Sorry for being long winded :eek: , I am just trying to work out all the kinks before I have a couple boards cut. Thanks again Al!

Jacob