Back-EMF speed detection in motors

Oh, it works great in the static case.

Reply to
Tim Wescott
Loading thread data ...

Well, first, the dead time is a minuscule fraction of the PWM cycle time

-- fast FETs are cheap these days, and motors seem to prefer PWM speeds in the low 10's of kHz.

And second, just today I made an RC filter so that I could clip a volt meter onto my motor leads and get a nice filtered DC to the meter. It reads within 1% of the voltage I calculate from the duty cycle and motor supply voltage.

(You cannot beat measurements. When all your calculations are going to hell -- measure).

Reply to
Tim Wescott

Yup. No field winding.

Reply to
Tim Wescott

(Oh sorry, damn sign error again.) George H.

ttdesign.com- Hide quoted text -

Reply to
George Herold

OK then my final plan of attack is to try and make it worse! Inductive? Stick more iron around it, Thermal... heat and cool. Add some more cable here... resistance there... George H.

Reply to
George Herold

Could i persuade you to post a waveform of the R-sense voltages and the inputs to the ADCs? Could you also compare the timing of the ADC trigger commands?

?-)

Reply to
josephkk

Motor current readings have also been double-checked with a multimeter and verified correct.

Reply to
Tim Wescott

Except that the motor windings are a kind of field winding - the current you drive through the motor winding acts to reduce the magnetic field that the permanent magnets are creating at the motor windings. Not much, but maybe enough to mess up your calculations.

Reply to
Bill Sloman

Well you might need a bit of care with the sign but if you consider that the voltage drop across the brushes can only dissipate energy not create it then including brush drop always results in a lower calculated (and real) rotor winding voltage and therefore speed, regardless of direction, as long as you do not regenerate (use the motor as a generator), although sign consistency should get you the correct answer there too. Adjust brush voltage drop factor in your calculation for minimum calculated to real speed error. Tweak it on the fly based on measured error, and have the controller request motor brush service when the calculated brush voltage drop factor goes above 3 volts or so :-).

Reply to
Glen Walpert

Is the current sense resistor common to both halves of the H-bridge?

What is its value relative to the motor winding resistance? ...Jim Thompson

Reply to
Jim Thompson

It's amazing how long this thread has gone on. And one of the factors that no one is touching on is the field of the motor?

I see in early post it was stated that it has no field(stator) coil, this means it is a PM motor. (Most likely)

In case some one needs a refresher in the effects of variable field densities, it will vary the speed of the motor with a fixed armature voltage applied.

Being it is a PM motor, weaker field will cause more RPMs and of course stronger fields more foot lbs but less RPMS at the same armature voltage.

Motor temperature is going to make the PMs change their density. As they heat up, they'll attempt to spin faster at the same arm voltage but also increase the current slightly.

Then you start putting loads on the shaft, the motor is going to drop back and exert additional current from the drive which will increase the magnetic field in the armature to only increase speed in the hopes of bringing it back to speed per armature voltage, which it never makes it to the speed of unloaded conditions.

There is the function of auto field control to help maintain the motor RPM at vary loads, which reflect back to the drive electronics as armature current. But since we have a PM motor, that just isn't going to work here.

How many of those remember the DC motors used in tape drive systems that had the centrifugal speed control electronics integrated in them? There was a good reason for that of course, mostly due to the facts that similar attempts were made to maintain a controlled speed with DC brushed motors with no feed back..

Simply put, a good many DC drives do have current compensation controls on them when feed back is not in use. They scale the output verse A(i) and must be set at installation time.

That's my rant for this holiday weekend.

Jamie

Reply to
Jamie

I don't understand.

At 0 RPM, there is no error?

At all other RPMs , the error = 30 RPM?

so at 1 PRM it read 31?

Is it an offset error or a gain error?

Again, I suggest as a troubleshooting aid, you program the error out by whatever fudge factor it takes. Then analyze the fudge factor.

Mark

Reply to
MarkK

That is not what i asked. I do not so much care if you post, but that you at least make the measurements asked.

?-)

Reply to
josephkk

Another test, switching, varying both duty-cycle and VM...

formatting link

So my latest suspicion is that the voltage across the sense resistor, due to the full-H drive, flips sign and is not accounted for in the math. ...Jim Thompson

Reply to
Jim Thompson

I think this is the proper equation...

Vspeed = (2*Duty - 1)*Vcc - Imotor*(Rmotor + Rsense) ...Jim Thompson

Reply to
Jim Thompson

Thank you for going to all the trouble to do that (well, if it were me I wouldn't be able to prevent myself -- but thanks anyway).

The current is measured in the middle of the on-time of the lower FETs of the bridge. Because of the way that the processor wants to drive the FETs this happens to be at the same time, but that's probably immaterial (if anything it should help).

To the extent that the current thusly measured is representative (and it certainly double-checks against meter readings pretty well) it does not need to get flipped -- the current read at the - terminal of the motor is subtracted from the current read at the + terminal of the motor, and that's that.

(In theory I could just use one -- with two I get a bit of improved SNR).

It looks like it. Rmotor is calibrated for what works in practice, which should take Rsense into account (Rmotor also visibly changes with temperature, by much more than Rsense).

In operation there is a "drive" variable that ranges from -1 to 1, from which the duty cycle is computed such that -1 drive generates a duty cycle of 100% in the minus direction and +1 drive generates a duty cycle of 100% in the plus direction. Then the drive absolute value is limited to a bit less than 1 so that the charge pumps work correctly and so that the current reading settles before the ADC reads it.

Reply to
Tim Wescott

Any problem that I don't see a solution to... drives me nuts. Besides, the wife was attending her annual Easter brunch with a bunch of retired Girl Scout Leaders she's worked with for 40 years, so I was "home alone" ;-)

I've never encountered this sort of problem... my motors haven't had to turn around on the fly, so I was trying to find how a fixed offset could get in there _before_ it happens to me on an actual project.

"Sampling" always bothers me. How much ripple? (Live by digital, die by digital ;-)

How is that done??? Do you mean that one sample is negative, so they, in essence, add?

Charge pumps? Schematic? ...Jim Thompson

Reply to
Jim Thompson

But are they the same the ADC in the microcontroller is measuring?

Reply to
Nico Coesel

I have verified my Algebraic rendition via simulation, so we're left with two scenarios, (1) Your implementation has a flaw, or (2) We're both missing something in the modeling of the motor, perhaps the brush/commutator overlap??

Time for some lab work >:-} ...Jim Thompson

Reply to
Jim Thompson

I don't have access to IEEE, but this paper may point you in the right direction....

Xplore

IEEE

Modeling of universal motor performance and brush commutation using finite element computed inductance and resistance matrices

formatting link
...Jim Thompson

Reply to
Jim Thompson

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.