Okuma machine builders really don’t like quantization noise so they use 40 
million CPR encoders on the axis motors.

> On Jun 21, 2021, at 11:34 AM, Chris Albertson <albertson.ch...@gmail.com> 
> wrote:
> 
> 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


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

Reply via email to