Hello, I am using arduino Uno as an interface between my RC receiver and H-bridge(L293d).I have been able to control the speed and direction of the motor by PWM. But as the RPM of the motor decreases, the stall torque of the motor decreases as well. I need the motors to power a pan tilt head. Any decrease in torque is not acceptable as the camera and the head is pretty heavy. Is there any way of decreasing the RPM while maintaining the torque?Any help would be greatly appreciated.

Can you tell us more about the motor and the supply for it? A good motor will pull lots of current at stall, perhaps the supply isn't up to this on PWM pulses? Torque depends on average current, the supply will probably limit peak current, as might the H-bridge.

BTW the fundamental physics means that torque is related to current and RPM to voltage for a DC motor - but this is only actually true if the windings are superconducting - the winding resistance means deviation from this ideal behaviour. Worth measuring the resistance if you want to estimate the maximum stall current the motor can pull for various voltages.

[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

You could increase torque by increasing supply voltage - which will require a corresponding decrease in PWM duty cycle, since an increase in voltage will also tend to increase motor speed (which you do not want) The increased peak voltage will drive more current through the motor windings and torque is influenced by current.

To maintain high torque at low RPM, use an rpm sensor and PID controller software. The PID controller adjusts the PWM to achieve the required rpm. If necessary it will apply full power (100% PWM) to the motor until it is up to the required speed.

Formal verification of safety-critical software, software development, and electronic design and prototyping. See http://www.eschertech.com. Please do not ask for unpaid help via PM, use the forum.

To maintain high torque at low RPM, use an rpm sensor and PID controller software. The PID controller adjusts the PWM to achieve the required rpm. If necessary it will apply full power (100% PWM) to the motor until it is up to the required speed.

where would you be able to get rpm sensor for Arduino Uno?

I looked everywhere with no luck. And also How can I get PID controller software or rather how I can apply PID to the Arduino Uno whenever I put my finger on the spinning dc motor because when I do that, I want arduino Uno to calculate PID and readjust the rpm. How can I do that?

Another thought: have you optimized the PWM frequency for your motor? Too low a PWM frequency will mean the current draw is spikey and more likely to overload the supply I think. The default Arduino PWM frequencies are on the low side for a motor I think. Anyway it might be worth investigating.

[ I will NOT respond to personal messages, I WILL delete them, use the forum please ]

I don't think you need an RPM sensor... I think you need a position sensor for the pan & tilt. i.e. a servo.

An RPM counter could be a round-about way of making a servo motor, but you should probably just get a real servo motor.

Quote

I have been able to control the speed and direction of the motor by PWM. But as the RPM of the motor decreases, the stall torque of the motor decreases as well.

As mark says, that's pretty-much the physics of a DC motor. The only input-control you have is voltage (via PWM or whatever). Current is then determined by the applied voltage and the load on the motor... i.e. if you put a load on the motor to stall it, current will increase, and if your power supply can't supply the "needed" current, the voltage will drop.

With the proper servo-feedback, the required voltage can be supplied for the proper torque & speed to position the motor at any moment in time.

If you are trying to use slow speed a DC motor is a poor choice without a gearbox to slow things down. The motor has little torque because you are effectively running the motor on low voltage. PWM with a 50% duty cycle is going to behave similar to the motor on 50-60% voltage. To control the position you need some sort of position feedback to "close the loop" and that is a whole bunch of programming in itself. Sounds like a better application for a stepper motor unless you want to get into encoders and closed loop servo control.

A gearbox changes the available torque by the gear ratio. 10:1 means you have 0.1 the speed and 10.0 the torque.