LROBBINS wrote:That link http://www.precisionmicrodrives.com/app%20...%20m-back-emf describes how one can calculate RPM of a rotating motor under steady load. It does not describe the situation of the stall-to-near stall state when the motor just starts turning (where we need to strongly boost PWM change per unit time=what Roboteq calls acceleration), nor does it describe what happens when the load suddenly changes, such as climbing over an obstacle like a tree root.andWe can calculate the back EMF by measuring the current in steady state with no load (emphasis added) and comparing it to a calculated value for the stall current. We can then use this value with the no load speed and the motor’s constants to calculate the speed for the given back EMF.That is, if stall current is not contributing to the "measured current draw".We now have a way of calculating the back EMF and then in turn the speed of the motor from the measured current draw.
Ciao,
Lenny
There's no need to calculate or measure backEMF for a stalled motor, or one running at negligable speed, in that situation, it's zero/negligable, therfore if backEMF < (some low value you set) then motor is stalled or running slow ... apply boost / don't accordingly as determined by the backEMF at the time and what the controls are calling for, this solves stalled / stopped / very slow.
For the other situations you need rate/direction of change of backEMF as well as the value now if it's falling rapidly, you just hit an obstacle and got slowed, if the operator wasn't throttling back compensate. A sudden rise from one motor would indicate a loss of traction that side (wheelspin) you'd see a drop in current at the same time, and could base your control script decisions for that situation off either, you can determine lots of things from backEMF, if you choose to.
By using the existing instant value of backEMF (which is nothing exept a measure of spindle speed, directly proprtional, at least with permanent magnets things get weird with field coils where you can alter the field strength) and the rate and direction of change, you can pretty much apply boost or remove it in any situation you can define.
If you want boost (for example) below 2mph road speed determine the value for 2mph, which is a constant for a given motor at that rpm, and apply it when the value is lower & the operater is calling for more "go", apply more/less/none at whatever other break points you want.
Just because you're already using it for motor compensation (mimic more stick when it spikes down until it recovers then remove extra boost) doesn't mean the value is useless for anything else, any more than the output from a sensor on yor car's flywheel can't be used both for engine management and to drive a dashboard rev counter at the same time. BackEMF is potentially one of your most useful parameters for all kinds of things, if you have it sensed with sufficient accuracy and resolution you can base lots of your control off it, should you choose to.
It's also a less than ideal parameter to use for motor compensation, because the situations where you really need compensation are the ones where it has tiny/negligable values, you're not going fast enough, generally, when climbing thresholds etc., for it to be significantly > 0 without massive accuracy and resolution on the measurement, though the historic value *just before* you hit the bump might be useful as an indicator on what speed to not exceed when you compensate .. i.e. when to cut the extra motor input off.
It's not the only parameter you can use to make the determination to boost or not, you can have a perfectly controlled motor without ever referencing it directly for any purpose at all if you reference other parameters instead, or base nearly everything off it if you have it accurately and in realtime, designer's choice, but it certainly can be used to determine your motor's spindle speed, and you could base control logic off it for if things should or shouldn't happen above and below certain speeds. Or you can fit a hall sensor on the spindle and use measured RPM, neither of which will be very accurate at really low speeds/stall, there's a reason wheelchair controllers do motor compensation the horrid way they do, it's less horrid than the easy alternatives.