Quoc Thang NGUYEN
07-01-2005, 06:38 PM
Dear all,
I have little practical knowledge of digital signal processing, but I am
facing a problem which is beyond what can I think of. Could someone in this
newsgroup help?
The problem is the following:
I would like to compensate for the frequency response of a device, which
behaves roughly linearly (it has a Class 0 servo inside) with an underdamped
step response (the response of the system looks like that of a 3-pole
low-pass Butterworth filter, with a rise time of about 150 us). The device
is controlled by an analog input, which is generated by a D/A board in a
computer. The output from the D/A board has a rate varying between 0.2-1.5
MHz. Because of the slow response of the device, the output of the device is
distorted compared to its input. I'd like to program a linear filter that
would precompensate the input waveform to feedforward correct the response
of the device. I do not know the practical problems that could arise in such
compensation schemes, but I am a bit wary of the behavior of the filter at
high frequencies.
I would like to do the following:
- Record and average the step response of the device over a few trials to
remove noise for a given input waveform rate T
- Differentiate the response to get the impulse response
- FFT the impulse response to get amplitude A(w) and phase F(w) of the
transfer function
- The feedforward analog linear filter will have a gain 1/A(w) and
phase -F(w)
- Use the Matlab invfreqz using the previous gain and phase to identify the
parameters of an IIR digital filter that would do the job.
- Filter the command waveform and send it to the device.
- Any advice on the steps above?
- Once I get the parameters of the IIR filter, how do I adapt them for the
different rates of the device input waveform? Do I have
to recalculate the IIR filter coefficients for each T?
Thanks a lot for all advices.
I have little practical knowledge of digital signal processing, but I am
facing a problem which is beyond what can I think of. Could someone in this
newsgroup help?
The problem is the following:
I would like to compensate for the frequency response of a device, which
behaves roughly linearly (it has a Class 0 servo inside) with an underdamped
step response (the response of the system looks like that of a 3-pole
low-pass Butterworth filter, with a rise time of about 150 us). The device
is controlled by an analog input, which is generated by a D/A board in a
computer. The output from the D/A board has a rate varying between 0.2-1.5
MHz. Because of the slow response of the device, the output of the device is
distorted compared to its input. I'd like to program a linear filter that
would precompensate the input waveform to feedforward correct the response
of the device. I do not know the practical problems that could arise in such
compensation schemes, but I am a bit wary of the behavior of the filter at
high frequencies.
I would like to do the following:
- Record and average the step response of the device over a few trials to
remove noise for a given input waveform rate T
- Differentiate the response to get the impulse response
- FFT the impulse response to get amplitude A(w) and phase F(w) of the
transfer function
- The feedforward analog linear filter will have a gain 1/A(w) and
phase -F(w)
- Use the Matlab invfreqz using the previous gain and phase to identify the
parameters of an IIR digital filter that would do the job.
- Filter the command waveform and send it to the device.
- Any advice on the steps above?
- Once I get the parameters of the IIR filter, how do I adapt them for the
different rates of the device input waveform? Do I have
to recalculate the IIR filter coefficients for each T?
Thanks a lot for all advices.