Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
05/15/08 15:07
Modified:
  05/15/08 15:16

Read: times


 
Msg Score: 0
 +1 Good Answer/Helpful
 -1 Answer is Wrong
#154797 - LSB flickering
Responding to: ???'s previous message
I wonder why people so often recommend to mask/truncate the LSB in the hope to inhibit LSB flickering. This is of no help at all!

Assume you have a byte stream coming out of an ADC every 10msec and the LSB is flickering. First, you must realize that you will never be able to remove the flickering, because this is caused by the digitizing concept: There are always these damned thresholds within the ADC, which divide the world into two parts, "u" and "u" + LSB, where "u" is any ADC output signal. And you will have a lot of these thresholds within an ADC. Everytime when the signal is right at the threshold of "u" and "u" + LSB, you will have this nasty LSB flickering.

Of course, you can truncate the LSB and can result in an improvement, when the output signal of ADC flickers arround "1010 0110" and "1010 0111", or "1001 0000" and "1001 0001", and so on. But what, if it flickers arround "0111 1111" and "1000 0000", or "1011 1111" and "1100 0000", and so on? What will you then see when truncating the LSB??

Even heavy low pass filtering cannot remove the LSB flickering. Just imagine what happens if the signal is right at the threshold and the output signal is flickering between "0111 1111" a "1000 0000". There's no time constant you could ever choose that would inhibit the LSB flickering.
Of course, filtering can be helpful to minimize other noise, which is bigger than 1LSBpp and would result in an even "higher order LSB flickering".

Ok, what about moving average? We assumed a data rate every 10msec. Moving average would take a handful of bytes in a row, let's say 8, add them together and divide the result by 8. Mostly you do "decimating" and the data rate also decreases by a factor of 8, means you get a new byte every 80msec. Is the LSB flickering removed? No! But you have to struggle with it only every 80msec instead of 10msec. Not really an improve.
Of course, other noise can tremendously be decreased by averaging!

In your situation I would use two variables of your pot reading, one "real", which is flickering and one "manipulated", which becomes only actualized, when the real changes by more than a certain hysteresis, let's say 4LSB or so.
How big your hystersis should be chosen depends on your application: Midi hand setting changes of less than 1% are rather unrealistic, or am I wong? So, a moving average in combination with a hystersis of 4LSB could already do the trick. The first to remove system noise from the "real" and the second to "remove" LSB flickering from the "manipulated".

Good luck,

Kai

PS.: Your calculation of corner frequency of analog low pass filter is correct.

List of 41 messages in thread
TopicAuthorDate
ADC smoothing assistance...            01/01/70 00:00      
   Low-pass filter            01/01/70 00:00      
      How stabile is your power supply?            01/01/70 00:00      
         Not very, apparently.            01/01/70 00:00      
            Getting better...            01/01/70 00:00      
            To ground            01/01/70 00:00      
            Start by cleaning up the supply ...            01/01/70 00:00      
               Right!            01/01/70 00:00      
            Correction.            01/01/70 00:00      
               Maybe what you need is a low-impedance probe            01/01/70 00:00      
                  Springtime...            01/01/70 00:00      
                     yes, that looks like mine ... sort-of            01/01/70 00:00      
      Still listening...            01/01/70 00:00      
   Digital and Analog            01/01/70 00:00      
   try steady and more than minimum            01/01/70 00:00      
   ahhhhhh...........so its not only me!            01/01/70 00:00      
   is 2 lsb random error close enough?            01/01/70 00:00      
      Thanks...            01/01/70 00:00      
      Yep.....and that IS the final answer......            01/01/70 00:00      
      Don't truncate ...            01/01/70 00:00      
   LSB flickering            01/01/70 00:00      
      Erm ... not quite true.            01/01/70 00:00      
         Specific Case....            01/01/70 00:00      
            Should work in any case ...            01/01/70 00:00      
         Sorry, but you are entirely wrong...            01/01/70 00:00      
            You must know more about the flickering            01/01/70 00:00      
            I shouldn\\\'t post after a long workday ...            01/01/70 00:00      
   I need to chime in on this thread,,,,            01/01/70 00:00      
      throwing away bits            01/01/70 00:00      
      Integrate and Decimate            01/01/70 00:00      
         Here's my code            01/01/70 00:00      
            Where's the integration?            01/01/70 00:00      
         Dropping bits will not prevent flickering...            01/01/70 00:00      
            this confuses the issue            01/01/70 00:00      
               Immanent flickering            01/01/70 00:00      
                  I don't disagree ...            01/01/70 00:00      
                     Precision...            01/01/70 00:00      
   How I solved my Midi Controller LSB Flicker/Flutte            01/01/70 00:00      
      "Slack" same as hystersis            01/01/70 00:00      
         Sorry!            01/01/70 00:00      
      slack            01/01/70 00:00      

Back to Subject List