[En-Nut-Discussion] AD conversion resolution?

Alexander Baranov baranov at intech21.com
Thu Dec 15 16:04:22 CET 2005


Well, that is what I mean. If you have missing codes it will cause steps in
sampled sine and immediately increase the harmonics distortion.

----- Original Message ----- 
From: "Gerwin Voorsluijs" <g.m.voorsluijs at wanadoo.nl>
To: "Ethernut User Chat (English)" <en-nut-discussion at egnite.de>
Sent: Thursday, December 15, 2005 9:18 AM
Subject: Re: [En-Nut-Discussion] AD conversion resolution?


> Hi,
>
> Maybe I didn't make myself clear, but I don't need to know if the ADC is
> linear or not, I want to know why I don't get certain values when I'm
> sure they have to be in there (voltage is very slowly varying!) Consider
> the following short int values that are in my data (and their binary
> counterparts): isn't it odd that there is no values in the range
> 256-303? That was btw the way I noticed there was something wrong: the
> value would stay on 255 for a very long time while I was doing my
> voltage sweep.
>
>   156 010011100
>   158 010011110
>   159 010011111
>   176 010110000
>   177 010110001
>   184 010111000
>   188 010111100
>   192 011000000
>   193 011000001
>   195 011000011
>   199 011000111
>   206 011001110
>   207 011001111
>   224 011100000
>   225 011100001
>   227 011100011
>   231 011100111
>   240 011110000
>   241 011110001
>   248 011111000
>   252 011111100
>   254 011111110
>   255 011111111
>   304 100110000
>   312 100111000
>   316 100111100
>   318 100111110
>   319 100111111
>   327 101000111
>   335 101001111
>   348 101011100
>   352 101100000
>
> Cheers,
>
> Gerwin
>
> Alexander Baranov wrote:
> > Hi.
> > If you want to estimate ADC linearity here is one of the ways to do it:
> > Feed pure sine signal to it's input (with a half range offset), program
ADC
> > for measurements with constant sampling rate satisfying Nyquist
criteria
> > and send the samples to PC through serial port. Let it be 1024 samples.
Then
> > you estimate the spectrum of obtained signal (e.g. with the help of
Excell
> > or MATLAB) and get  the linearity characteristics.
> > Regards, Alex.
> > ----- Original Message ----- 
> > From: "Gerwin Voorsluijs" <g.m.voorsluijs at wanadoo.nl>
> > To: "Ethernut User Chat (English)" <en-nut-discussion at egnite.de>
> > Sent: Thursday, December 15, 2005 4:35 AM
> > Subject: Re: [En-Nut-Discussion] AD conversion resolution?
> >
> >
> >
> >>Hi Alexander,
> >>
> >>I am slowly turning a potentionmeter that is linked to an external power
> >>source. To my knowledge that gives a continuously varying voltage and
> >>therefore the AD readout should show the 10 bit resolution plus possibly
> >>a little jitter.
> >>
> >>Alexander Baranov wrote:
> >>
> >>>Hello.
> >>>Do you mean that you control the input voltage steps and they are
> >
> > precisely
> >
> >>>equal?
> >>>
> >>>----- Original Message ----- 
> >>>From: "Gerwin Voorsluijs" <g.m.voorsluijs at wanadoo.nl>
> >>>To: <en-nut-discussion at egnite.de>
> >>>Sent: Wednesday, December 14, 2005 12:50 PM
> >>>Subject: [En-Nut-Discussion] AD conversion resolution?
> >>>
> >>>
> >>>
> >>>
> >>>>Dear all,
> >>>>
> >>>>I'm trying to use the 10bit AD conversion of the Ethernut and with
some
> >>>>trial and error I've managed to get some data out of it. The values I
> >>>>get seem OK, but I'm a little disturbed by the fact that I don't get a
> >>>>continuously climbing value out of it when I raise the voltage slowly.
> >>>>For example, for the purpose I am using it (which I am sure has
> >>>>continuous voltages!) I get the following set of "steps":
> >>>>
> >>>>156   158   159   176   177   184   188   192   193   195   199   206
> >>>>207   224   225   227   231   240   241   248   252   254   255   304
> >>>>312   316   318   319   327   335   348   352
> >>>>
> >>>>I know I am not using the full range of 0-5 V (I measured with a
> >>>>"normal" voltmeter around 0.8-1.7 V so that seems OK)
> >>>>
> >>>>Does anyone have any idea what is going on? Lemme include the little
> >>>>piece of code I used:
> >>>>
> >>>>#include <cfg/crt.h>    /* Floating point configuration. */
> >>>>#include <string.h>
> >>>>#include <stdio.h>
> >>>>#include <io.h>
> >>>>#include <dev/board.h>
> >>>>#include <sys/timer.h>
> >>>>#include <dev/adc.h>
> >>>>
> >>>>int main(void)
> >>>>{
> >>>>    u_long baud = 115200;
> >>>>    FILE *uart;
> >>>>
> >>>>    u_char ad_chk;
> >>>>    u_short adc_value;
> >>>>    NutRegisterDevice(&DEV_UART, 0, 0);
> >>>>    uart = fopen(DEV_UART_NAME, "r+");
> >>>>    _ioctl(_fileno(uart), UART_SETSPEED, &baud);
> >>>>
> >>>>    ADCInit();
> >>>>    ADCSetRef(AVCC);
> >>>>    ADCSetMode(SINGLE_CONVERSION);
> >>>>    ADCSetChannel(0);
> >>>>
> >>>>    for (;;)
> >>>>{
> >>>>ADCStartConversion();
> >>>>while (ADCRead(&adc_value))
> >>>>   NutThreadYield();
> >>>>fprintf(uart, "%i ", (int) adc_value);
> >>>>    }
> >>>>}
> >>>>
> >>>>
> >>>>_______________________________________________
> >>>>En-Nut-Discussion mailing list
> >>>>En-Nut-Discussion at egnite.de
> >>>>http://www.egnite.de/mailman/listinfo.cgi/en-nut-discussion
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>>_______________________________________________
> >>>En-Nut-Discussion mailing list
> >>>En-Nut-Discussion at egnite.de
> >>>http://www.egnite.de/mailman/listinfo.cgi/en-nut-discussion
> >>>
> >>>
> >>
> >>_______________________________________________
> >>En-Nut-Discussion mailing list
> >>En-Nut-Discussion at egnite.de
> >>http://www.egnite.de/mailman/listinfo.cgi/en-nut-discussion
> >>
> >>
> >
> >
> >
> > _______________________________________________
> > En-Nut-Discussion mailing list
> > En-Nut-Discussion at egnite.de
> > http://www.egnite.de/mailman/listinfo.cgi/en-nut-discussion
> >
> >
>
> _______________________________________________
> En-Nut-Discussion mailing list
> En-Nut-Discussion at egnite.de
> http://www.egnite.de/mailman/listinfo.cgi/en-nut-discussion
>
>





More information about the En-Nut-Discussion mailing list