A/D läsning med AVR

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
gripner
Inlägg: 1169
Blev medlem: 4 december 2007, 14:47:39
Ort: Lidingö

A/D läsning med AVR

Inlägg av gripner »

Har ett i mina ögon skummet.

Har en avr som föds via USB där efter en 3.3 v regulator
Kör jag på pc1 har jag tex ett värde från analog läsning på 14100

Kör jag via pc2 får jag ett värde på 14090

Jag tycker jag borde få samma. Ja USB spänningen är olika med efter USB är det ju en regulator. Och det är ju samma regulator då jag använder samma utrustning.
Den borde ju ha samma utspädning även då inspänningen skiljer någon procent

Intern aref är inte. Den oxå alltid samma oavsett matningen?

Mätvärden till analogingången kommer ej från USB matad enhet.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Adc läsning med avr

Inlägg av sodjan »

> Har en avr...

Finns väl flera hundra olika AVR (om det är det som avses).

> ett värde från analog läsning på 14100

Hur ser du det?
De flesta AVR'er har väl en 10-bit ADC som ger från 0 till 1023.

> Jag tycker jag borde få samma.

Omskalat till 10 bitar så är det ju samma värde.
Skillnaden (10) är rellativt mindre än en LSB.
gripner
Inlägg: 1169
Blev medlem: 4 december 2007, 14:47:39
Ort: Lidingö

Re: Adc läsning med avr

Inlägg av gripner »

16bits
Användarvisningsbild
lizerdboy
Inlägg: 1610
Blev medlem: 6 oktober 2003, 22:24:12
Ort: Stockholm

Re: Adc läsning med avr

Inlägg av lizerdboy »

Vilken AVR är det som har 16bit ADC inbyggd, den skulle jag vilja se :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Adc läsning med avr

Inlägg av sodjan »

> 16bits

Ja, det var ju väldigt uttömmande.
Du är alltså inte så värst intresserad.
Helt OK. Lycka till...
gripner
Inlägg: 1169
Blev medlem: 4 december 2007, 14:47:39
Ort: Lidingö

Re: Adc läsning med avr

Inlägg av gripner »

Kan vara så att det ej är en avr, hade för mig det men kan kolla när jag får Chippen i handen.

Programmerad via arduino så exakta modell har glömts av, men kollar så fort jag kommit åt Chippen och läst beteckningen

Det är dock en 32bit uC med 16bit adc
3.3v chip
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Adc läsning med avr

Inlägg av sodjan »

> Kan vara så att det ej är en avr.

Men du skrev ju ganska säkert att det var en AVR.

> Det är dock en 32bit uC...

Och då faller ju alla "AVR" så som de flesta känner till dom bort direkt.
Det här är väl ett bra exempel på att inte starta trådar innan man
har förberett och gjort lite "hemjobb" först. :-)

Vad det nu än är, skillnaden du angav (14100 och 14090) är pass liten
så utan speciella åtgärder så är det kanske så bra som man kan komma.
Om jag fattade rätt så var också matningsspänningen ref till ADCn (?).
gripner
Inlägg: 1169
Blev medlem: 4 december 2007, 14:47:39
Ort: Lidingö

Re: Adc läsning med avr

Inlägg av gripner »

Intern aref
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Adc läsning med avr

Inlägg av sodjan »

> Intern aref
> Intern aref är inte. (är inte vadå?, i och för sig...)

Ja, inte lätt att hänga med. :-) Kanske bättre att du väntar tills
du har prylarna till hands och kan skriva något vettigt om det.
gripner
Inlägg: 1169
Blev medlem: 4 december 2007, 14:47:39
Ort: Lidingö

Re: Adc läsning med avr

Inlägg av gripner »

ser att min tjocka mobilfingrar varit framme.

Använder intern aref, interna aref bör väll vara samma oavsätt späningskälla?
Givetvis kanske den inte är 3.30000000000 volt utan kanske 3.293 eller liknande dock alltid samma även då späningskällan varierar några procent ?
Användarvisningsbild
lizerdboy
Inlägg: 1610
Blev medlem: 6 oktober 2003, 22:24:12
Ort: Stockholm

Re: Adc läsning med avr

Inlägg av lizerdboy »

Haha vilket intresse TS har för sin egen tråd!!
Det kan inte vara någon AVR då ingen av dessa (8/32bit) har 16bit ADC

Vad jag vet så har Freescale / allra senaste PIC24F "fåtal" / STM32F3 av de MCU'er som har 16bit ADC.
interna aref bör väll vara samma oavsett spänningskälla
Beror helt på vilken noggrannhet vi pratar om samt vilken precision som den interna Vref har.
Så svaret på det är båda Ja och Nej
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Adc läsning med avr

Inlägg av bearing »

Ledtrådarna "Programmerad via Arduino", 32-bit, och 3,3V, stämmer in på http://arduino.cc/en/Main/ArduinoBoardDue som har en Atmel SAM3X8E ARM Cortex-M3 http://www.atmel.com/Images/doc11057.pdf
Det är alltså inte en AVR, men iaf en Atmel.

Dock är inte pinnarna PC1 och PC2 kopplade till analoga multiplexern, om jag inte missat något. Antagligen en felskrivning.

Chipet har 12 bitars ADC, och det är möjligt att vänsterjustera resultatet med Arduinons mjukvarubibliotek:
"If you set the analogReadResolution() value to a value higher than your board's capabilities, the Arduino will only report back at its highest resolution padding the extra bits with zeros.

For example: using the Due with analogReadResolution(16) will give you an approximated 16-bit number with the first 12 bits containing the real ADC reading and the last 4 bits padded with zeros. "


Ifall 14100 och 14090 var riktiga värden är det något som inte stämmer, eftersom att de inte är jämnt delbara med 16. Men jag antar att det vara exempelsiffror tagna ur luften, och att siffrorna egentligen skiljer i steg om 16. Och det är ju inte så konstigt, eftersom att det då bara handlar om en bit från omvandlaren.

Om du vill ha stadigare värden skulle du kunna ställa om till 12-bitars resultat, och sedan summera 16 omvandlingar för att få ett 16-bitars medelvärde. Medelvärdet borde inte skilja mycket mellan två ingångar. Ett finare sätt är att använda ett rullande medelvärde på 16 omvandlingar (lågpassfilter i mjukvara), som finns beskrivet här på forumet, bl.a.

Något sånt här:

Kod: Markera allt

medel = medel - (medel / 16);
medel = medel + analogRead(PA1);
Senast redigerad av bearing 7 mars 2014, 22:52:27, redigerad totalt 1 gång.
gripner
Inlägg: 1169
Blev medlem: 4 december 2007, 14:47:39
Ort: Lidingö

Re: Adc läsning med avr

Inlägg av gripner »

Det är en MK20DX128
32 bit ARM Cortex-M4

Fick tag i en att läsa på nu.

Vad gäller intern vref så förstår jag att om den är specad till tex 2.56V så är den ej exakt 2.56V
Utan tex 2.557V
Dock vid en inspänning till uC på tex. 3.298V och 3.250V borde den väll båda gångerna vara 2.557V ?
Eller kan interna vref variera med matningsspännigen ?
bearing
Inlägg: 11676
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Adc läsning med avr

Inlägg av bearing »

Förstår du att med 12bit ADC kommer resultaten hoppa några steg om 16 upp/ned? Men i medel borde de vara lika.
EDIT: ser nu att MK20DX128 har en rätt avancerad ADC, som ska ha en "Linear successive approximation algorithm with up to 16-bit resolution". Ifall du läser kapitel 31 i http://cache.freescale.com/files/32bit/ ... 0SF0RM.pdf ser du att det finns några register som är avsedda att trimma in ADC:n med, t.ex ADC offset correction register (ADCx_OFS).

Den analoga delen kommer alltid påverkas av störningar från den digitala delen, men ifall kortet är bra utformat borde det inte märkas.

Har du länk till kortet?
På en vanlig Arduino med AVR finns en 3.3V som kommer från USB-serieomvandlaren, och den spänningen är otroligt brusig. Så jag hoppas att din processor inte matas med en sån spänning.
gripner
Inlägg: 1169
Blev medlem: 4 december 2007, 14:47:39
Ort: Lidingö

Re: Adc läsning med avr

Inlägg av gripner »

Det är ett Teensy kort, finns några olika versioner. det är teensy 3.0 jag kör med nu. underbart kort!

Jag mäter för närvarande med full upplösning. Dvs alla 16bitar

om värdet skall vara tex 10000 studsar det upp och ner lite gran typ mellan 99992 till 10008
Åter igen inte exakta siffror. Och ibland studsar det upp kanske 10012 till och med.

dock vill jag mäta exakt ner på sista siffran, även då jag vet att LSB ej bör användas. Rätt väg att gå är ju att skaffa en tex 18bit adc. Dock är detta vad jag har att arbeta med.

Jag har en fullösning. mäter 1000ggr över 1 sec och tar medel. det ger mig ett mycket stabilt värde ett 16bits värde även då det svajjar 10000 100001 10000, med allt mellan 1 sek till 10+ sek utan att det ändras alls.
Dock är mitt problem inte detta. mitt problem är att mätvärdet som skall vara 10000 vid en spänning på säg 1Volt är 10010 när jag ansluter via usb (USB CDC samt matning) på min laptop. slänger jag in den i en annan dator och bibehåller min insignal på 1volt får jag tex 10000.

I båda fallen pendlar med 1/10000.

Jag tycker att om man använder den interna aref borde detta problem inte finnas. då jag tro att den interna aref är exakt samma oavsätt matspäningen till uCn.
Åter igen dock inte exakt 2.56V men lika fel vid olika matspäningar.

EDIT:
Nu är jag inte expert på att läsa datablad men för mig ser det ut som vref kan sättas till 1.2V + att man kan använda bandgap för att incrementera det värdet med 0.5mV. Tolkar jag det rätt ?
Senast redigerad av gripner 7 mars 2014, 23:31:56, redigerad totalt 1 gång.
Skriv svar