I figured out that my mosfet driver chip was bad. Not sure what I did, maybe I zapped it with static electricity, but it was definitely bad.

By testing the voltage going in and coming out, I saw it was not working.

Fortunately I had another one to use, popped it and it worked.

For some reason which I cannot figure out though, PWM is working for my forward (m1BHI High, and m1ALI PWM) but it is not working reverse, I am only getting one speed with the reverse m1AHI High, m1BLI PWM.

The P-ch MOSFETs are backwards. Their Sources should be to the +UB rail. Note the diode drawn inside their schematic symbol, they will always conduct as wired.Their schematic diagram have the source and drain labels on the wrong pins.Re-check the data sheet for the proper pin-out of the MOSFETs.

Do be careful with the signals on JP1. It is possible to turn on both the top and bottom MOSFET on on or both sides. This creates a short from +UB to ground through the MOSFETs, also known as 'the Smoke state'.Could this be the problem for only one speed in reverse?

Also, depending on the motor you may need catch diodes across the MOSFETs drain and source.

First off, before I prototyped this h-bridge, I used the actual data sheets for my mosfets that I bought and made sure the pin layouts were correct, meaning I put my p-ch S pin to the +UB and the n-ch S pin to the GND, so that is all good.

The problem was the pins to the MCU, I had two of them reversed, I am an IDIOT!

I spent 2 hours checking every pin on my prototype board, and never once did I look at my MCU connections!

Well, now I have full forward and backward speed control, and stop functionality, the h-bridge is working perfectly.

Unfortunately, I destroyed a $160 linear actuator prior to reading these replies!

Yup, I am really an idiot.

I figured maybe, just maybe my cheap $5 6V DC brushed motor was not responding properly, even though I knew better, so, I decided to test out the only other motor I had in my house, a $160 linear actuator.

Well, that is now ruined.

I even tried direct 12V connection to it, and it is just making very slow, small 1/4" movements and than stopping for a second before continuing.

I clearly messed something up.

I am an idiot!

I would like to know what it was that messed it up, my code was simply to move forward for 2 second at speed 1/4, then 2 seconds at speed 1/2....... stop, reverse 1/4 for 2 seconds......

It seemed to "die" when I reversed it, which is what was not working on my DC motor, it went forward very nicely.

So, I am assuming it was the reversed mcu connections trying to send PWM to the L.A., but I am not sure.

The L.A. has limit switches built in.

I also did not have the diodes across the mosfets D and S, so perhaps that could be it?

Man, I am so pissed that I did that, very, very expensive learning experience.

Another question just came up, if someone could be so helpful as to help me understand something.

Now that I have this h-bridge working, I want to make sure I understand everything about the circuit, since I did not create it.

I don't quite understand how or why the resistors are being used in this circuit.

If I look at R1 , it is a 10k resistor, connecting +UB to the Drain of Q7, a n-ch mosfet designed to take the high output of the mcu pin, and send out a negative voltage into the Gate of Q2, a p-ch power mosfet.

I completely understand the source of Q7 being GND, and turning on that mosfet with the high output from the MCU, allowing the GND voltage to pass through the Drain, and into the gate of the p-ch power mosfet, switching it "on".

I am struggling to understand the purpose of R1 in this application, lets say I am using this for 12V as my +UB, 10K resistance is going to allow 1.2mA through that connection into the Gate of Q2, which I suppose is not going to turn on the p-ch mosfet, as that needs negative voltage.

So, the way I see it, the only way that Q7 can be turned on, is if the mcu goes high at that pin, which would send a negative voltage through that 1.2mA into the p-ch Q2.

So, if the mcu goes high to the Gate of Q7, its going to send a negative voltage through the gate of Q2, and if the mcu is low, it won't send anything as Q7 will be off.

I know this is being used as a pull up resistor, I just don't understand why in this application.

Same thing goes for R5, it looks like R5 is acting as a pull down resistor for the Gate of Q7, I just don't understand why it's needed.

R1 and R5 (and their mirrors on the other side) are used to "default" the circuit to a known good state when power is being applied or removed.The gate of MOSFET transistors are small capacitors, that can retain their last switched state for a long time, unless there is something for them to "bleed" that charge into if driving power is removed.

Quote

I decided to test out the only other motor I had in my house, a $160 linear actuator.

If you do not own a digital multi-meter, please buy one! A $20 Radio Shack one will probably do a good enough job. Typically you just need to measure voltage and resistance.

R1 and R5 (and their mirrors on the other side) are used to "default" the circuit to a known good state when power is being applied or removed.The gate of MOSFET transistors are small capacitors, that can retain their last switched state for a long time, unless there is something for them to "bleed" that charge into if driving power is removed.

If you do not own a digital multi-meter, please buy one! A $20 Radio Shack one will probably do a good enough job. Typically you just need to measure voltage and resistance.

Got it, that makes sense, thanks for that explanation!

I actually do own two multimeters, I was just not smart enough to use it!

My DC motor was going forward with PWM working perfectly, and going reverse at just one speed, but going nonetheless.

I assumed (big mistake) that everything would be fine with the L.A., I will be sure to be much more careful in the future!