Steppermotor rotation measuring without sensor but BLDC

Hi all,
I've got a stepper motor with 4 coils. I got it running already with the stepper motor lib. So far so good. The motor is thought to open and close a lid by wire. The thing is, i've got no zero-position information. I can't build any encoder or switch.

So my idea was to measure the induction voltage of partially not used coils as it is done with 3 phase BLDC Motors. At the newstart I let the stepper drive to one direction at more than maximum physical stepps available. So I know definetly its at the one end. But if it was already very close to it at turning on, it runs loads of stepps in block. This is probably not very good for the gearbox. By measuring the "BLDC" voltage, should be able to detect "motion" voltage > still rotation, no voltage > its in block.

At no time all 4 coils are in current, so there are always coils where i could measure the induction voltage. My problem now is, how can i measure and control at one time. I guess, the inductive voltage is not very long availabe, so I need to hit exactly with the adc or? It might be related to the rpm.

What do you think, is this a proper way of doing it? I've been searching google now for days, but I haven't found anything about jet...

Thank you very much in advanced!

BR

Hi,
You have no way of putting limit switches on the lid frame to show fully open or closed?

Reed switch and magnet?

Tilt switches on the door?

Tom.... :slight_smile:

Hi Tom,
the lid is inside a chimney and temp. goes up very high. I wanted it as reliable as possible...

I'm just going into the chimney with a bowden cable.

detecting rotory seems to be quite tricky, but I guess it's the most reliable solution isn't it?

ard24:
So my idea was to measure the induction voltage of partially not used coils as it is done with 3 phase BLDC Motors. At the newstart I let the stepper drive to one direction at more than maximum physical stepps available. So I know definetly its at the one end. But if it was already very close to it at turning on, it runs loads of stepps in block. This is probably not very good for the gearbox. By measuring the "BLDC" voltage, should be able to detect "motion" voltage > still rotation, no voltage > its in block.

At no time all 4 coils are in current, so there are always coils where i could measure the induction voltage. My problem now is, how can i measure and control at one time. I guess, the inductive voltage is not very long availabe, so I need to hit exactly with the adc or? It might be related to the rpm.

In theory this is possible. In practice there are hurdles - noise, cross-talk, timing constraints, current decay
curves for windings, I'd suggest caffeine, blank sheet of paper and an oscilloscope as a starting point.

Sensorless BLDCs have extremely fast current decay as the windings are a few turns only (less than 10
is common), which makes back-EMF sensing in the unused winding relatively straightforward. The higher
the impedance of your motor windings the slower this decay, and until the current decays to zero you
can't sense back EMF.

A stepper going full speed is normally saturated (the current is limited by the inductance of the winding,
not the resistance) - this will probably be true whether or not it has stalled.

Hi Mark,
thanks for your answer. You don't make me optimistic...
I'm only a beginner. I do not even have an oszi.

I tried to measure the total current into the stepper driver L298N with an simple ampmeter, but I couldn't detect any difference between stalled or not. I guess this is what you mentioned with saturated?

I tried to run the stepper as fast as possible, because it looses torque.

I've got the option to measure the inductive voltage with an other arduino. Do you think an arduino is fast enough for measuring?

Stall detection in steppers isn't easy, and isn't possible at low speeds either. The motors
normally take maximum (winding) current when not stepping. Note the maximum power or
maximum supply current is not the same thing as max winding current if using a chopper-drive.

Running a stepper faster will give less torque, not more.

In the situation you describe I would design the mechanical system so that you can safely run the motor against the end-stops. It won't do the motor any harm.

...R

Robin2:
In the situation you describe I would design the mechanical system so that you can safely run the motor against the end-stops. It won't do the motor any harm.

...R

Reminds me of the Commode 64 floppy disk drive.

Maybe the limit switches could be outside of the chimney on the cable itself near the stepper.

Hi all,
thanks for your answers. I think its to complicated for me with just the arduino, but I found an interesting chip L6470. Its a stepper driver with included stall detection! As far as i read the datasheet it's exactly what I'm serching. I just ordered a prototyp board and now waiting :wink:

I repeat stall detection is not easy and doesn't work at low speeds. I've used chips with stall detection
and the performance was completely unreliable for what you want to do. Besides by the time you've
detected it the gears might already be damaged. If you want easily sense load torque, don't use a stepper
motor.

What about a multi-turn potentiometer attached to the shaft of the stepper motor? Read the value of the pot to know what position you are at.

Hi,
I solved the problem now by using a special stepper driver. It's called L6470. Arduino Lib is available in the net. I had to find a stepper, which was "strong" enough to be recognized by the L6470 stall detection. My first 2 steppers did not work, but now I've found one and stall is detected.