Oversampling av ADC på Arduino/AVR

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
JanErik
Inlägg: 3118
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

Oversampling av ADC på Arduino/AVR

Inlägg av JanErik »

Har behov av lite högre upplösning än 10 bit, har tidigare använt en DS2450 men hittade nu detta:
http://www.electricrcaircraftguy.com/20 ... YBc6JTyPmE
http://www.atmel.com/images/doc8003.pdf

Är detta helt kosher enligt signalbehandlingen, är resultatet matematiskt acceptabelt korrekt jämfört med en ADC med högre upplösning?
Borde man använda dithering av nåt slag?
limpan4all
Inlägg: 8195
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Re: Oversampling av ADC på Arduino/AVR

Inlägg av limpan4all »

Ja, det är en utmärkt metod och jag använder den flitigt, 3 bitar ytterligare kan väl få ut som mest i praktiken.
Men det gäller att få till sin brusiga störning på rätt sätt och det är inte helt enkelt.
Det optimala är ett vitt brus med en amplitud på 0,5 till 1 LSB. Egentligen så gör det inte så mycket om bruset är högre men då blir behovet att det är vitt brus större.
Det brukar bli massor av timmar för att säkerställa att man inte överlagrar en känd störning som fuckar upp hela skiten...
Det svåra är att se till att man kan säkerställa att det man mäter är korrekt efter signalbehandlingen, och det är vanligen här de grövsta felen görs att man blandar ihop upplösning med noggrannhet...
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Oversampling av ADC på Arduino/AVR

Inlägg av lillahuset »

Härligt att läsa att fler än jag intresserar sig för DSP!
limpan4all
Inlägg: 8195
Blev medlem: 15 april 2006, 18:57:29
Ort: Typ Nyköping

Re: Oversampling av ADC på Arduino/AVR

Inlägg av limpan4all »

Nope ingen DSP just nu. Cortex M4 i 180MHz för <10USD 2M Flash, 256k RAM Ethernet och en massa periferi. Det kan man inte få i en DSP tyvärr.
Men jag sysslar bara med HW rör inte firmware alls.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Oversampling av ADC på Arduino/AVR

Inlägg av Korken »

Cortex-M4 är nästan en DSP ;)
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: Oversampling av ADC på Arduino/AVR

Inlägg av superx »

Verkligen! Jag blev glatt överraskad av prestandan man kan få från t.ex. NXPs LPC43xx
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Oversampling av ADC på Arduino/AVR

Inlägg av Korken »

Nu inväntas bara Cortex-M7! Då blir det riktig fart!
Samt med stöd för double precision i HW så kan man köra riktiga optimeringsalgoritmer :D
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Oversampling av ADC på Arduino/AVR

Inlägg av LHelge »

Har hunnit leka lite med en STM32F7Discovery och den är ruskigt snabb. I vissa lägen gör den samma sak som en F4 på halva antalet klockcykler. Den tickar dessutom på i 200MHz.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Oversampling av ADC på Arduino/AVR

Inlägg av lillahuset »

Hehe, låter utmärkt. :D

Edit: limpan4all: Klart du håller på med DSP men inte med en DSP. Du decimerar ju. Som jag ser det är största fördelen med decimering att man kommer undan med ett betydligt enklare vikningsfilter.
Den mesta DSP jag gör är på en vanlig PC. Blir något bra/som vi hoppades implementerar jag det i en STM32F4 som ju har ganska mycket DSP-funktionalitet. Ofta räcker det med vanlig C-kod.
Senast redigerad av lillahuset 20 juni 2015, 17:53:44, redigerad totalt 2 gånger.
Användarvisningsbild
Korken
Inlägg: 2230
Blev medlem: 3 februari 2006, 19:19:36
Ort: Luleå, Porsön

Re: Oversampling av ADC på Arduino/AVR

Inlägg av Korken »

Bara synd att F7an går så sakta... :(
Kolla Atmels SAM V serie som också är en M7a, den tuffar i 300 MHz.

Trodde ST skulle kontra fort, men de har hittills inte gjort det.
Samt att ST inte fixat en i 64-pins kapsel än gör mig lite ledsen.
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Oversampling av ADC på Arduino/AVR

Inlägg av lillahuset »

Vi har ett projekt med STM32F4. Jag tyckte jag tog i när jag valde den men har börjat inse att "vissa" har högre förväntningar på prestanda idag än de berättade vid projektets start. Då kanske en STM32F7 kan vara en bra uppgradering.
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: Oversampling av ADC på Arduino/AVR

Inlägg av superx »

LHelge skrev:Har hunnit leka lite med en STM32F7Discovery och den är ruskigt snabb. I vissa lägen gör den samma sak som en F4 på halva antalet klockcykler. Den tickar dessutom på i 200MHz.
Intressant! Vilken typ av kod går dubbelt då snabbt? Blandade funktionsanrop och variabeljox eller tyngre beräkningar som FIR-filter etc?

Strömförbrukningen verkar vara betydligt bättre dessutom.
Användarvisningsbild
LHelge
Inlägg: 1772
Blev medlem: 2 september 2007, 18:25:31
Ort: Östergötland
Kontakt:

Re: Oversampling av ADC på Arduino/AVR

Inlägg av LHelge »

Lite förenklat skulle man kunna säga att M7:an har en 64-bitars ALU som kan köra två 32-bitars instruktioner parallellt. Blandade funktionsanrop t ex vet jag inte riktigt hur stor vinst det är för. Är osäker på hur pipeline och jump prediction kan hantera det tillsammans med featuren att köra två instruktioner samtidigt.

Stora vinsten skulle jag tro är för DSP-algoritmer. Tanken är väl att man ska kunna göra saker en riktigt DSP har hårdvaruinstruktioner för, direkt i C-kod.

Ett exempel var:

Kod: Markera allt

#define NUM_SAMPLES 500
uint32_t samples[NUM_SAMPLES];
uint32_t sum;
uint32_t i;

sum = 0;
for(i = 0; i < NUM_SAMPLES; i++) {
    sum += samples[i];
}
som exekverade på straxt över 500 cykler. Rätt tydligt att det borde ge en prestandaboost för FIR/IIR-filter, FFT, korskorrelation osv.

Bifogar två bilder om någon är nyfiken på discovery-kortet.
* Kapacitiv touch
* två st MEMS-mikrofoner
* Ethernet
* USB FS & HS
* STLink/V2
* Arduino shield
* microSD
* Kamera interface
* SPDIF
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
qx5
Inlägg: 1678
Blev medlem: 14 augusti 2014, 04:23:04

Re: Oversampling av ADC på Arduino/AVR

Inlägg av qx5 »

LHelge, Vad kostar discovery-kortet och var köper man det?
superx
Inlägg: 1127
Blev medlem: 19 juni 2012, 23:28:16
Ort: Linköping

Re: Oversampling av ADC på Arduino/AVR

Inlägg av superx »

Tack för exemplet! Ser väldigt lovande ut.
Skriv svar