A/D läsning med AVR
A/D läsning med AVR
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.
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.
Re: Adc läsning med avr
> 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.
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.
Re: Adc läsning med avr
> 16bits
Ja, det var ju väldigt uttömmande.
Du är alltså inte så värst intresserad.
Helt OK. Lycka till...
Ja, det var ju väldigt uttömmande.
Du är alltså inte så värst intresserad.
Helt OK. Lycka till...
Re: Adc läsning med avr
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
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
Re: Adc läsning med avr
> 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 (?).
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 (?).
Re: Adc läsning med avr
> 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.
> Intern aref är inte. (är inte vadå?, i och för sig...)
Ja, inte lätt att hänga med.

du har prylarna till hands och kan skriva något vettigt om det.
Re: Adc läsning med avr
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ä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 ?
Re: Adc läsning med avr
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.
Så svaret på det är båda Ja och Nej
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.
Beror helt på vilken noggrannhet vi pratar om samt vilken precision som den interna Vref har.interna aref bör väll vara samma oavsett spänningskälla
Så svaret på det är båda Ja och Nej
Re: Adc läsning med avr
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:
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.
Re: Adc läsning med avr
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 ?
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 ?
Re: Adc läsning med avr
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.
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.
Re: Adc läsning med avr
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 ?
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.