BLDC.Utilities.EncoderTimeSpan

# .BLDC.Utilities.EncoderTimeSpan

Time span between edges of incremental encoder signals

## Information

Evaluates the input signals from an IncrementalEncoder:

- 0-track `y[1]` = 1 pulse per revolution with a length of `2*pi/(4*pRev)`
- A-track `y[2]` = `pRev` pulses per revolution
- B-track `y[3]` = `pRev` pulses per revolution, displaced by `2*pi/(4*pRev)`

and determines mechanical angular velocity `w` and mechanical angle `phi`:

- w = angular velocity
- phi = angle = integral of w

The time span from one edge of the input signals to the next is measured, thus calculating the speed of rotation: `2*pi/(4*pRev)/(time - t0)`. Taking both rising and falling edges of A-track and B-track into account, `4*pRev` edges per revolution are observed. Note that the output is discrete w.r.t. to time, it is not differentiable. The algorithm depends on interrupts (which appear in Modelica as when-clauses). The direction of rotation has to be detected by a logic from the values of A-track and B-track. Note that this algorithm depends on the accuracy of the representation of time, but usually gives better results than counting edges during a time gate.

Generated at 2026-05-12T20:19:03Z by OpenModelicaOpenModelica 1.26.7 using GenerateDoc.mos