Noise - Typical Problems and Resolutions

From Dynomotion

Revision as of 11:18, 19 October 2015 by BradG (Talk | contribs)

Jump to: navigation, search

What is Noise?

Noise, as it pertains to electronics, is an undesired random fluctuation in an electrical signal.  It can be the cause of random input readings, grounding issues, communication problems, and even motor disturbances.  As an example, limit switch signals can experience random fluctuations due to noise thus causing the control algorithm to think the machine has reached a limit and stop the machine at random times.

What are Common Causes of Noise?

Noise can be caused by environmental electromagnetic disturbances emanating from other machines and equipment.

Using KFLOP Input Filters to Deal with Noise

KFLOP inputs are very fast and therefore susceptible to narrow noise glitches.  KFLOP doesn't have selectable digital filtering.  It is usually best to fix the source of the noise problem in hardware.  Otherwise you might reduce the frequency of the problem but not eliminate it entirely.  You might add a Filter Capacitor (such as a 0.1uf ceramic capacitor) from the KFLOP input pin to the KFLOP GND (in very close proximity to KFLOP). 

To filter the inputs in software you can do so with a User Program that samples the input, performs some filtering algorithm, and sets/clears a KFLOP Virtual I/O Bit (ie bits 48-63) based on the result.   Then configure the KFLOP Axis to monitor the Virtual Inputs rather than the real inputs.   The ExternalButtons.c example shows how multiple inputs can be monitored and debounced using a single non-blocking loop using a state driven approach.  See the Debounce() function, how it's used, and the 3 global variables needed for every input to keep track of the states of the input.