I'm going to build a robot, but I'm still not sure what motor-controller I should use... I want to control two reversable motors, and I want to be able to measure the voltage and current to find out the stall of motors. The problem is, I have no idea of how to get a nice and steady variable voltage source from 1V (or zero) up to 5V that can source spikes up to 3A of current. And bonus question: Is there a better way of measuring current? I'm planning to measure the voltage drop over a 0,1 Ohm (10Watt) resistor using an A/D Converters, but I was wondering, is there a better alternative? (I have some 13 A/D Converters, so that's not the problem... )
Personally I'd use one of Microchip's PICs with a built in motor controller. They have PWM H-bridge with variable dead-time and 10 bit resolution for speed control. Rather than current measurement, I'd go for motor speed detection. The most unobtrusive way that I've done this in the past on a standard motor is to sample the back emf at regular intervals (50Hz?). The back emf voltage is proportional to motor speed, so you can feed this back into a free ADC pin on the PIC, determine the error, correct in a PID loop and maintain a constant motor speed/detect for stall and stop.
so... a PIC chip with built-in motor-controller PWM... I can get that... next thing... what kind of MOSFET should I use to build me a H-bridge? And how do I get the PWM signal to the motors? (they are 140:1 gear motors) Do I nead to stabalize the voltage with a capacitor?
You should use four MOSFETs that have a suitable rating for your motor. The motor controller has four PWM outputs which drive the FETs. Select 19.53kHz or greater for the PWM frequency to keep it out of audible range- but make sure your FETs have suitable characteristics for this frequency.
remember: Power dissapation is no big deal with PWM, because your fets/pwr devices are only in two states: On Off they dissapate very little power this way. so all you have to worry about is the breakdown voltage, and the current capability.
Not quite. You're right if your PWM frequency is low, but PWM frequencies of 20kHz+ cause the FETs to operate more in their linear region because of the capacitance of the gate (unless you have some good drivers feeding the gate). You end up causing the FETs to dissipate a fair bit of power.
the switching capability of the mosfets i'm not concerned about (special high-current PWM (fast switching) MOSFETs) but the motors... aren't high frequency pulses bad for a motor? Killing the brushes or something? ...
ePanorama has a good overview of motor control. It is also worth reviewing Microchips Brushed DC Motor Fundamentals. Pwm is probably the most efficient method of motor control, and is especially good for providing torque at very low speed - something pure voltage control methods lack. Actually, voltage control may be a misnomer; electromagnetic properties are the result of current flow. It's just that providing more voltage also increases current because the resistance in the motor is (relatively) fixed [ohms law]. The concern with pwm I believe is generally one of heat dissaption in the motor windings, although this is typically more than balanced out by the advantages that pwm control offers. I think you will find pwm is the way to go.
Just curious what your original control plan was? Certainly you can use a pic, but you aren't limited to that foundation... Also, although building an H-bridge controller is not necessarily the most complicated project in the world, there are prebuilt options you can consider that are easy to interface with and will save you the trouble of determing parts and design. Take a look at this DC Motor Control Board from Futurlec, it's pretty rugged (up to 24V 5A) and pretty cheap to boot (but you'll need 1 per motor). I've ordered a lot of stuff from them without any problems, though sometimes shipping can be a week or two if the product comes from overseas. (btw, they've got great prices on all kinds of good stuff) EDIT - Actually this Dual H Bridge Kit might be an even better solution as it provides control for two motors (4A total). Although it is not opto-isolated like the Futurlec board, you could easily add that. Motor drivers can create a large amount of electrical noise and/or spikes, potentially disrrupting your logic controller. The optical isolation seperates the logic and motor power sources. Agreed. Speed is probably more useful than current, unless you are explicitly looking to measure torque or force. I guess it depends on what the motor is doing; transport or finger closing for instance. There is positional (count) feedback as well. You can get direction, speed and position through an optical slot sensor. Many a ball mouse has volunteered for experimental duty here at 420 Labs (sadly, they were never the same )
hmm, I was just thinking, couldn't I just make a switching power supply with a simple PIC chip that has an A/D Converter? Like measuring the voltage of the circuit (which has the 5V rail connected to the ground with a capacitor) and switching of at a specific voltage, and switching on about 0,1V below that? And accepting the wanted voltage from another PIC by I2C or SPI... (ofcourse, both chips on a normal 5V voltage regulator) I think that'd regulate the power a little nicer (for the motors that is) then PWM. And that way I can monitor the in-circuit current. And: Do I need both P-channel and N-channel mosfets to make the H-bridge for my motors, or is all-N-channel possible? (I don't want to have to buy another set of P-channel mosfets, I already have these (datasheet)) And a last one: Would it be possible to get an ADC to readout voltages above 5V? Because my batterypack will deliver 7,4V (at full charge), could I use that as the reference voltage, and read out how much 5V is compared to the battery voltage, and in that way get the battery status?
PWM almost always much better than DC control of motors. But the major advantage to using PWM over DC is the improved torque at low voltages.
You basically just described PWM (switching is pwm to begin with. And if you are on the fence about pwm control, just wait until you try to design a good reliable switching circuit capable of decent current). Personally, I'd go with the simple tried & true rather than attempt to reinvent the wheel. Don't take our word for it; Google how many non-pwm dc motor control circuits are used in robotics. Not many, unless there is some esoteric need. The motor coils tend to average the pulses, so you end up measuring the voltage pretty much the same. I am wondering what your need is for this power monitoring... Most projects I do that have moving motors, I'm much more interested in where the position is than anything else. If my program applies power and there is no associated movement detected, I know the motor has stalled or there is another type of fault that requires attention. I suggest you do some Googling or look at the schematics of the boards I referred to above. There's a million and one H bridge circuits on the web. P channel fets are better suited to high-side switching; N for low-side. Might as well get the right parts for the job, they're not that expensive. You can do anything you like with the approriate resistor ladder voltage divider. ADC inputs are generally high impedance, so you can consider them not to present a load.