I am having some trouble with my Arduino Uno Rev3 and a H-Bridge made by me.
First, let me introduce the landscape:
The H-Bridge was made by me, so, I have almost sure that the problem lies on it. I've taken the schematics from this site: http://www.bristolwatch.com/ele/h_bridge.htm. More specifically, from the image attached below. The mosfets I am using are: IRF630 and IRF9630.
I am trying to run a 12V DC motor which draws a variable current (depending on the load), but it ranges from 100mA to 900mA as I've measured with a multimeter.
To control the motor, firstly and before all the problems, I was using a Motor Shield bought from DX. It features two L9110 microchips on it, but it seems like it cannot handle much current. It has two channels (For two DC motors), one of them got burned (literally, it catches on fire) after some test run on heavy load. Now I have just one channel.
I read both of the following posts, which are similar to my problem. Unfortunately, they don't solved my problem: http://forum.arduino.cc/index.php?topic=69648.0 http://forum.arduino.cc/index.php?topic=70190.0
If somebody is curious, my project is a simple toy (hobby). A RC boat controlled by Arduino + Android. So when I say 'load', I mean, the effort that the motor have to do to push the boat.
Well, now lets go to the 'movie':
As I said, firstly I was running on Arduino Motor Shield, which works perfectly on tests without load, discarding coding problems. Then, I've burned one of the channels and realized that I needed a mosfet H-Bridge. I took some examples from the internet, ending up with the schematics below. After I built it, was time to burn my finger, because with Q5 and Q6 beeing two 2N2222 transistors, don't know how, a shortcut took place and I've touched the mosfet to check how hot they were. They were very hot. After that, I've got the idea to hook up both the inputs directly to the Motor Driver, as it outputs PWM too (The module is connected to ports 5 and 6). Well, it doesn't work perfectly. It does work by turning the motor on and off, clockwise and counterclockwise but it does not PWM. I can only turn to maximum, as if the PWM is at 255, or minimum, as 0. For example, it doesn't matter how much my PMW actually is, when is greater than 0, say 20, it turns on my motor to the maximum.
I think the problem is buffer, or capacitance, or something like that. I don't know how to solve. So simplifying, the problem is: I can't drive my motor using PWM. In my head, I am thinking that: When the PWM is HIGH, it 'charges' the Mosfet's Gate making it conduct from Source to Drain, then, when PMW is LOW, the Mosfet got no time to interrupt and PMW got HIGH again, thus making the motor to runs at maximum all the time. Do I need to replace the Mosfets with faster ones? Obs.: I have pull down resistors of 10K from the mosfet's Gate to Ground. Also, I tried to hook up the inputs directly to arduino digital pins with a 1K resistor in between, but the behavior stills the same.
Folks, first of all, I want to thank you for your attention by reading all of this. Second, sorry by my English, it is not my mother language. And third, I need your great expertise to help me find where the problem lies.
Below is the so called schematics: