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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
10/21/07 18:07
Read: times


 
#145975 - Averaging/DSP/FIR filters
Responding to: ???'s previous message
Christoph Franck said:

There are many ways to implement a digital low-pass filter, and trying to imitate a RC lowpass might not even be the best idea.

The simplest way to "stabilize" the last digit would be to use a simple moving average filter, i.e. take the last X ADC outputs, add them together, divide by X, and that's your "stabilized" filter output. Of course, using a power of 2 as X has quite a few advantages, such as making the division by X a simple bit-shift instead of an actual division.


Yes, the above method does stabilise the reading but there are two problems with it.
1) you need to take at least 20 or 50 samples in succession
2) In order to perform(1) only high speed SAR_ADC's are applicable, what about a 200 000 count dual slope converter which I'm using, typically 50 samples equates to at least 20 seconds!

Christoph Franck said:

All other filters will quite quickly start diving into the realm of digital signal processing.


DSP, huh!, well the Fluke 45 uses the 6303 MCU, the Fluke 8840/42 uses the Z86-Zilog MCU, hardly DSP class processors? and yet readings from these meters are encredibily stable.
I am using an AT89S52 and the TC500A D/slope ADC(200 000 counts(overclocked)) each reading (including precharge and auto_zero) takes approx. 400mSec, so my MCU twiddles its fingers inbetween,eh!

Christoph Franck said:

If you want to imitate an actual analog filter (such as RC), you'll have to use an IIR digital filter (infinite impulse response). Unless you're aware of the can of worms that you're opening by using this type of filter (it's recursive, so it may be unstable, depending on the parameters, and it has some additional pitfalls as far as numerics go), you might want to stick with the very simplest of IIR filters, like

Y(n) = X(n) + a * Y(n-1)

or

Y(n) = 0.5 * (X(n) + X(n-1)) + a * Y(n-1).

(Y is the filter output, X is the filter input. a affects the time constant and the gain of the filter, and needs to satisfy -1 < a < 1 for the filter to be stable, and 0


Wow!, how about we start with a first order differential equation, you know, the one that actually governs the CR circuit universally?

Cheers
Jason




List of 64 messages in thread
TopicAuthorDate
ADC last digit stability            01/01/70 00:00      
   DVM            01/01/70 00:00      
      DVM's only 10 bits?            01/01/70 00:00      
         Frequency response            01/01/70 00:00      
            Typically twice or more the sampling frequency            01/01/70 00:00      
               Missing the point            01/01/70 00:00      
   You usually don\'t _want_ a stable last digit.            01/01/70 00:00      
      Result            01/01/70 00:00      
         Hm.            01/01/70 00:00      
      Averaging/DSP/FIR filters            01/01/70 00:00      
         Math lecture ?            01/01/70 00:00      
            Can't use average-too slow            01/01/70 00:00      
               Analysis            01/01/70 00:00      
               already stated            01/01/70 00:00      
               Derivation            01/01/70 00:00      
                  The nitty gritty stuff            01/01/70 00:00      
                     Simulate using a spreadsheet            01/01/70 00:00      
                        Hi Russ and thanks for that            01/01/70 00:00      
                           My spreadsheet vs. your spreadsheet            01/01/70 00:00      
                              Unit test !            01/01/70 00:00      
                     As I said...            01/01/70 00:00      
                        Calibration?            01/01/70 00:00      
                           Horsefeathers            01/01/70 00:00      
                              Longs?            01/01/70 00:00      
                                 A long is more "accurate" than a float.            01/01/70 00:00      
                                    Yes it is, but....            01/01/70 00:00      
                                       _Known_ transfer functions.            01/01/70 00:00      
                                          FP pitfalls            01/01/70 00:00      
                                             The compiler isn't going to take care of that.            01/01/70 00:00      
                                                Mantissa fields            01/01/70 00:00      
                                                   Misunderstandings ?            01/01/70 00:00      
                                                      Adding FP's accurately            01/01/70 00:00      
                                 can you not read ?            01/01/70 00:00      
                           Nonsense ...            01/01/70 00:00      
                              Calculator?            01/01/70 00:00      
                     If you're really curious ...            01/01/70 00:00      
                        Climax time            01/01/70 00:00      
                           OOPS!!....            01/01/70 00:00      
                           Equations            01/01/70 00:00      
                              Quantisation            01/01/70 00:00      
                                 Works in unsigned integer, too:            01/01/70 00:00      
                                    Abstract?            01/01/70 00:00      
                                       Useful abstractions.            01/01/70 00:00      
                                          Nice talking with you, Christoph.            01/01/70 00:00      
                           What are the actual requirements ?            01/01/70 00:00      
                              re filters            01/01/70 00:00      
                              And moving forward            01/01/70 00:00      
               You can not due to Dither            01/01/70 00:00      
         Clueless ?            01/01/70 00:00      
            Just dump the LSB            01/01/70 00:00      
               Don't forget proper rounding.            01/01/70 00:00      
            Speaking of DSP            01/01/70 00:00      
         Fluke stability            01/01/70 00:00      
   Oh yes they do!            01/01/70 00:00      
   my take on this            01/01/70 00:00      
      Walk, don't run            01/01/70 00:00      
         :)            01/01/70 00:00      
      Hello Erik            01/01/70 00:00      
         have fun, Jason            01/01/70 00:00      
            I am having fun            01/01/70 00:00      
               Ok, you are aware of this            01/01/70 00:00      
                  He's learning            01/01/70 00:00      
                  Assumptions            01/01/70 00:00      
                     and I ...            01/01/70 00:00      

Back to Subject List