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