Quantization noise is fundamental and present in all digital systems.
There is absolutely no way to avoid it.  All you can do is minimize it.

To know how fast a shaft is spinning or how far it moves, you have to count
edges and if you get 100 counts you just can not know if you are closer to
100 or to 101 counts.  Basically the counter always rounds down even if at
100.99999 it tells you "100".    So the cound is "wrong" 50% of the time.
This applies not only to encoders, but A/D converts and every other kind of
measurement.

This is the nature of digital data, of representing the world  with a fixed
number of bits.

On Sat, Jun 19, 2021 at 4:00 PM John Dammeyer <jo...@autoartisans.com>
wrote:

> But doesn't the 7i92 FPGA deal with quadrature encoders and therefore
> doesn't really need to deal with a sampling process but instead looks at
> edges?  And because of the way quadrature works, with the A/B phasing you
> don't get the same types of errors compared to polling a bit level X times
> per second and trying to decide when it's high/low.
>
> John
>
>
> > -----Original Message-----
> > From: Chris Albertson [mailto:albertson.ch...@gmail.com]
> > Sent: June-19-21 3:21 PM
> > To: Enhanced Machine Controller (EMC)
> > Subject: Re: [Emc-users] Machining question
> >
> > There are two kinds of noise,
> > 1) electrical noise superimposed on the signal.
> > 2) quantization noise from the sampling process.  What happens here is
> that
> > the computer counts the number of line crossings during a given time.  it
> > is just random luck when the time starts so on average there is a plus or
> > minus one count error.
> >
> > So a one count error sounds small but lets say we have a 600 count
> > encoder and we are running at 500 RPM and sampling 100 times per second.
> >  This works out to 50 counts per period.  a one count error is a 2%
> error.
> >    You will see a larger percent error at slower speeds or with a lower
> > resolution encoder.
> >
> > So even with perfect wires and perfect grounding and zero electrical
> noise
> > the RPM speed is going to jump around randomly over a 4 RPM range because
> > of unavoidable quantization error.
> >
> > The solutions either the use a larger sample time apply a low-pass
> DIGITAL
> > filter to the signal.  No amount of analog filters on the wires will
> work.
> >
> > On Sat, Jun 19, 2021 at 2:55 PM Gene Heskett <ghesk...@shentel.net>
> wrote:
> >
> > > On Saturday 19 June 2021 12:59:19 John Dammeyer wrote:
> > >
> > > > I need to do a couple of things.  For one the AC Servo makes a lot of
> > > > electrical noise.  The frame of the motor is connected to earth
> > > > through power line ground.  But my bench setup has the control side
> 5V
> > > > not isolated from the 'PC' side (optos are kind of useless here) and
> > > > although the Pi4 doesn't appear to have any trouble the scope shows a
> > > > pretty noisy encoder signal.
> > >
> > > You are about to learn the star ground system I think.
> > >
> > > Thats where all grounds go to a single bolt, and no other grounds are
> > > allowed anyplace.
> > >
> > > Shielding in motor cables ends without touching the motor, only
> connected
> > > to this same single bolt which is grounded. The common line of any
> power
> > > supply is connected only to this bolt, and the common grounds to every
> > > piece of pcb in the system comes from that bolt. The used to be green
> > > static ground wire in any power cord is rerouted to this bolt. And
> > > static grounds on a power supply are fed from this single bolt. Because
> > > the psu case is usually bolted down wherever its at, you may have to
> > > uncover the supply and remove any connection from the earth labeled
> > > terminal, and the psu's case. It may be a screw in the corner of a pcb,
> > > but it needs to be removed.
> > >
> > > Anything connected to ground at some other point in addition to that
> bolt
> > > becomes an antenna, is called a ground loop, picking up both magnetic
> > > and electrostatic noises. I had to learn that the hard way while
> > > building the Sheldon, blowing two 7i90HD boards out by picking up 80
> > > volts p-p of switching noise that reached up to the bandwidth limits of
> > > both of my 100mhz scopes. Hell on an fpga with a 3 volt limit.  I
> killed
> > > the power and redid it to the single bolt model, and that 80 volts of
> > > noise was reduced to under 100 millivolts. Took me about a week to find
> > > all the connections that should not have been made. Even a small bypass
> > > capacitor to a local ground instead of back to that bolt can become a
> > > lethal weapon to the elecronics.  Its a noise injector in that case.
> > >
> > > The whole idea is to make the ground, if it bounces from a lightning
> > > strike on the can on the pole that powers your place, which may make
> the
> > > whole system bounce 100+ kilovolts, and if you are in that circuit at
> > > that instant it WILL get your attention. BUT, everything tied to that
> > > bolt should bounce in unison, meaning an individual board input will
> > > only see the difference signal its being fed with, and it should
> survive
> > > that lightning strike with no damage.
> > >
> > > My soap box as a CET just collapsed, so I'll do an Andy Capp and
> shudup.
> > >
> > >
> > > > ===================== HAL code ===================
> > > > Second is some of the HAL parameters and reducing to 0.003 makes the
> > > > display more stable. #  Use ACTUAL spindle velocity from spindle
> > > > encoder
> > > > #  spindle-velocity bounces around so we filter it with lowpass
> > > > #  spindle-velocity is signed so we use absolute component to remove
> > > > sign #  ACTUAL velocity is in RPS not RPM so we scale it.
> > > >
> > > > setp     scale.spindle.gain 60
> > > > setp     lowpass.spindle.gain 0.003
> > > > net spindle-vel-fb-rps        =>     scale.spindle.in
> > > > net spindle-fb-rpm               scale.spindle.out       =>
> > > > abs.spindle.in net spindle-fb-rpm-abs           abs.spindle.out
> > > >  =>   lowpass.spindle.in net spindle-fb-rpm-abs-filtered
> > > > lowpass.spindle.out
> > > > ===================== end HAL code ===================
> > > >
> > > > But I'm still using the original signal for at speed and the LED
> never
> > > > comes on nor does it know it's at speed.  I should probably be
> > > > filtering the RPS rather than RPM I think?
> > > >
> > > > ===================== HAL code ===================
> > > > net spindle-vel-fb-rps => spindle-near-speed.in1
> > > > net spindle-ramped => spindle-near-speed.in2
> > > >
> > > > # ---Setup spindle at speed signals---
> > > > # the output from spindle-near-speed 'near' component is sent to
> > > > spindle.0.at-speed # and when this is true motion will start. The LED
> > > > in the pyvcp-panel.xml is renamed to be a LED. net
> > > > spindle-near-speed-led <= spindle-near-speed.out =>
> spindle.0.at-speed
> > > > ===================== end HAL code ===================
> > > >
> > > > John
> > > >
> > > > > -----Original Message-----
> > > > > From: andy pugh [mailto:bodge...@gmail.com]
> > > > > Sent: June-19-21 2:48 AM
> > > > > To: Enhanced Machine Controller (EMC)
> > > > > Subject: Re: [Emc-users] Machining question
> > > > >
> > > > > On Sat, 19 Jun 2021 at 07:11, John Dammeyer <
> jo...@autoartisans.com>
> > > wrote:
> > > > > > I'm finding the AXIS Spindle speed oscillates about +/- 5 RPM.
>  I
> > > > > > thought that I was filtering it.
> > > > >
> > > > > It generally needs to be filtered, but it is possible you are
> > > > > filtering it, but not enough to get a steady reading.
> > > > >
> > > > > For whatever reason encoder velocity does always seem to be a bit
> > > > > noisy, despite the counters using timetamped edges and all the
> other
> > > > > tricks that might help.
> > > > >
> > > > > --
> > > > > atp
> > > > > "A motorcycle is a bicycle with a pandemonium attachment and is
> > > > > designed for the especial use of mechanical geniuses, daredevils
> and
> > > > > lunatics."
> > > > > ? George Fitch, Atlanta Constitution Newspaper, 1912
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > Emc-users mailing list
> > > > > Emc-users@lists.sourceforge.net
> > > > > https://lists.sourceforge.net/lists/listinfo/emc-users
> > > >
> > > > _______________________________________________
> > > > Emc-users mailing list
> > > > Emc-users@lists.sourceforge.net
> > > > https://lists.sourceforge.net/lists/listinfo/emc-users
> > >
> > >
> > > Cheers, Gene Heskett
> > > --
> > > "There are four boxes to be used in defense of liberty:
> > >  soap, ballot, jury, and ammo. Please use in that order."
> > > -Ed Howdershelt (Author)
> > > If we desire respect for the law, we must first make the law
> respectable.
> > >  - Louis D. Brandeis
> > > Genes Web page <http://geneslinuxbox.net:6309/gene>
> > >
> > >
> > > _______________________________________________
> > > Emc-users mailing list
> > > Emc-users@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/emc-users
> > >
> >
> >
> > --
> >
> > Chris Albertson
> > Redondo Beach, California
> >
> > _______________________________________________
> > Emc-users mailing list
> > Emc-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/emc-users
>
>
>
> _______________________________________________
> Emc-users mailing list
> Emc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-users
>


-- 

Chris Albertson
Redondo Beach, California

_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to