Machinekit

Machinekit

Machinekit Documentation

HAL Component — ILOWPASS

INSTANTIABLE COMPONENTS — General

All instantiable components can be loaded in two manners

Using loadrt with or without count= | names= parameters as per legacy components
Using newinst, which names the instance and allows further parameters and arguments
primarily pincount= which can set the number of pins created for that instance (where applicable)

NAME

ilowpass — Low-pass filter with integer inputs and outputs

SYNOPSIS

ilowpass

USAGE SYNOPSIS

loadrt ilowpass
OR
newinst ilowpass <newinstname> [ pincount=N | iprefix=prefix ] [instanceparamX=X | argX=X ]

( args in [ ] denote possible args and parameters, may not be used in all components )

DESCRIPTION

While it may find other applications, this component was written to create smoother motion while jogging with an MPG.

In a machine with high acceleration, a short jog can behave almost like a step function. By putting the \fBilowpass\fR component between the MPG encoder \fBcounts\fR output and the axis \fRjog-counts\fR input, this can be smoothed.

Choose \fBscale\fR conservatively so that during a single session there will never be more than about 2e9/\fBscale\fR pulses seen on the MPG. Choose \fBgain\fR according to the smoothing level desired. Divide the \fRaxis.\fIN\fR.jog-scale\fR values by \fBscale\fR.

FUNCTIONS

ilowpass.N.funct ( OR <newinstname>.funct (requires a floating-point thread) )

Update the output based on the input and parameters

PINS

ilowpass.N.in s32 in ( OR <newinstname>.in s32 in )

ilowpass.N.out s32 out ( OR <newinstname>.out s32 out ) - \fBout\fR tracks \fBin\fR*\fBscale\fR through a low-pass filter of \fBgain\fR per period.

ilowpass.N.scale float io (default: 1024.0) ( OR <newinstname>.scale float io (default: 1024.0) ) - A scale factor applied to the output value of the low-pass filter.

ilowpass.N.gain float io (default: 0.5) ( OR <newinstname>.gain float io (default: 0.5) ) - Together with the period, sets the rate at which the output changes. Useful range is between 0 and 1, with higher values causing the input value to be tracked more quickly. For instance, a setting of 0.9 causes the output value to go 90% of the way towards the input value in each period

AUTHOR

Jeff Epler <jepler@unpythonic.net>

LICENCE

GPL