`Thanks for the replies. I thought I would touch on all of them in one`

`email to keep the reading shorter.`

`It was suggested off the list that I consider a decimation filter to`

`downsample the sample rate. This sounds reasonable, but I implemented`

`the iir filter at a 100 Hz sample rate and still saw a significant`

`offset (500 lsb), with many of the same fixed point scaling problems`

`(resolution less than 16 bits). I would guess that I could get close`

`by cutting the sample rate to 10 Hz. I think that leads me to`

`pre-warping the coefficients since 2*PI is not << 10Hz, but that's`

`just math.`

## Advertising

`I 'think' the decimation filter needs to remove content above 5 Hz`

`(nyquist), then cut the samples to 10 Hz. Wouldn't that be about a 1Hz`

`filter anyway?`

`I think the FIR structure has the most promise, but I have no`

`experience with those, especially on a fixed point machine.`

Quoting rq1...@q7.com:

I don't know much about this sort of thing.

But likely more than I know ;)

I'm guessing that a different implementation could have better numeric stability properties. Your key-phrase seems to be, "Series of first order difference equations." Is that different than MAC-ing a polynomial equation?

That is exactly MAC-ing a polynomial equation: y = b1 * x + z1; z1 = b2 * x + z2 - a2 * y; z2 = b3 * x + 0 - a3 * y;

I've done similar type things with the latter without trouble, but never as low as 1 Hz.

`So have I, but the goal was usually a much higher cutoff frequency,`

`and some DC offset and minor loss of resolution was not a problem.`

`Here, the offset is a major issue.`

Quoting Barton C Massey <b...@cs.pdx.edu>:

Caveat: I have no idea what I'm talking about. Act accordingly.

`I have no idea how to interpret this response :) This could be`

`sarcasm, and you *do* know what you are talking about, but I simply`

`don't understand. This could be truth, and I should go another route.`

You can't do a 1Hz cutoff against a 1000Hz sampling rate with any sane single-stage design, AFAIK.

`I'm not sure what you mean by a single stage... I think of a stage as`

`a memory element when using an IIR filter, in which case I think I'm`

`using 3 stages.`

The usual plan would be to downsample the signal in a series of stages; maybe 5 downsample-by-four stages, which would get you to about 1Hz very nicely.

`Again I'm not up to speed on your terminology, and my googling is not`

`clearing things up. I see some stuff on downsampling, but I've thought`

`of this in the context of throwing out data, not combining it. Perhaps`

`more akin to down-conversion.`

(It also tells you that as a rule of thumb you'd need about a 10-pole Butterworth to do this directly; ...

`Did you mean 10 *tap* Butterworth? I was originally only trying to get`

`2 poles, so 10 poles would be overkill?!?!`

I still wouldn't recommend it, though, as the numerical instability problems will be very real with such high-order polynomials.)

This is the problem I have now.

`I'll have to show off (Tuesday) an integrating device I'm running now.`

`It has zero offset, and filter-like response.`

(2009.11.02) kirk...@pdx.edu:Hey All, I'm looking for advice from someone who's DSP foo is stronger than mine to help with a filter applied to the roll control system.. Problem: Implement a 2nd-order low-pass filter (butterworth would be fine) with a 1Hz cutoff frequency and a sampling rate of 1000Hz. Input is uint16, 0-65535 from an ADC. My usual solution: Create the appropriate transfer function, then use Matlab c2d command to obtain the coefficients. Finally, build the filter as a series of first order difference equations. This is working in several products in production, but isn't quite right for our rocket roll-controller. The reason this isn't working: 1) Matlab c2d gives only 4 significant figures, regardless of the format setting. 2) Using only 4 significant figures propagates errors in the filter which make it unstable. 3) When the coefficients are obtained by calculation (float-doubles), the DC offset is too big to make the filter useful when converted to fixed point math. 4) The fixed point data sizes get kind-of big for such a simple filter (long long) if I want to keep my resolution. 5) Filter coefficients for a 1000Hz sample rate and a 1Hz cutoff are so far apart in size (1 vs. 0.00000009808) that 64 bit math or slower sampling are likely the only solutions. A couple of questions: 1) Is there another way to realize a discrete fixed-point filter that has little (1-2 LS bits) offset and full resolution on a 16 bit input? 2) Can another filter be designed more easily ( I had to derive the filter using a bilinear transform. Frequency warping wasn't used because the sampling frequency is much faster than the corner frequency. )? Anyone have any thoughts?_______________________________________________ psas-avionics mailing list psas-avionics@lists.psas.pdx.edu http://lists.psas.pdx.edu/mailman/listinfo/psas-avionics

_______________________________________________ psas-avionics mailing list psas-avionics@lists.psas.pdx.edu http://lists.psas.pdx.edu/mailman/listinfo/psas-avionics