Problem med pot avläsning med uC

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Erik_Lind
Inlägg: 97
Blev medlem: 2 maj 2005, 11:25:03

Problem med pot avläsning med uC

Inlägg av Erik_Lind »

Jag har en pot jag kopplat som spänningsdelare och läser av de med interna 10bitars A/Dn på en Atmega128.

Jag behöver bara 8-bitars upplösning på hela spannet.
Men tyvärr kan den väl alltid stå och slå +/-1bit vilket då och då kan påverka värdet även om jag shiftar bort 2LSb.
Det vart dock bättre när jag medelvärdesbildade avläsningen av poten.

Ett annat problem är att om jag slår av och på systemet så kan den också hamna ett steg upp eller ner ifrån det värdet den läste tidigare.

Är detta sånt man får leva med, eller brukar man lösa det på någe vis?
Användarvisningsbild
Icecap
Inlägg: 26657
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Första steg är att montera en avkoppling mellen GND och den analoga ingången. Nästa steg är att ha GND och VCC till pot'en kopplat direkt till µC'n och att INGET annat sitter på den biten.

Du får alltså brus som är 2 bit och det är en del, hur är hela uppställningen avkopplat? Om du kollar i dokumentationen finns det sannolikt en del beskrivning av hur man ska avkoppla AD-delen, lusläs den biten.

Som avkoppling fungerar 100nF (gärna keramisk) bra, det är värd att se till att ha såna i handfullar till generell avkoppling.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Inlägg av vfr »

Det finns egentligen inget sätt att vara säker på att värdet inte kan "fladdra" en bit upp eller ner. Har du otur och potens inställning ligger precis vid en omslagspunkt mellan två bitvärden, t.ex 127->128 på en 8-bitars AD, kommer den alltid att kunna slå mellan dessa värden.

Däremot går det givetvis alltid att filtrera värdet så att ändringarna i värde inte sker alltför ofta eller mer än ett bitvärde. Både elektrisk filtrering på matning och ingångspinne och sedan programmässig filtrering.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Men tyvärr kan den väl alltid stå och slå +/-1bit

Ja. Det spelar absolut ingen roll hur mycket man än avkopplar
och donar.

> Det vart dock bättre när jag medelvärdesbildade avläsningen av poten.

Ändrar i princip ingenting, det bara "står och slår" lite långsammare.

> även om jag shiftar bort 2LSb.

Även bit 2 (alltså tredje biten) kommer att "stå och slå" när de tre
sista bitarna växlar mellan "011" och "100". OCh det gäller generellt
för alla bitar i resultatat, alla bitar har ett läge där de kan "stå och slå".

Du får helt enkelt acceptera att ett ADC värde aldrig kan vara helt stabilt i alla lägen.

Lite OT, men kan du inte ställa in ADC'n så att de 8 högsta bitarna
hamnar i ett register utan shiftning ? Åtminstående på en PIC kan man
välja om det ska vara de 2 högsta eller de 2 lägsta bitarna som ska
hamna i ett "eget" register ("right/left adjust").
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

vfr> t.ex 127->128 på en 8-bitars AD...

Mycket bra exempel ! :-)
*Alla* bitar kommer att "fladdra" i det läget...

"01111111" <-> "10000000"
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

Sodjans lilla OT : Jo det har du helt rätt i och gäller även AVR, dvs man kan välja om man vill ha höger eller vänsterjusterat.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7487
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

Använd alla bitarna för att räkna ut skillnaden och gör förändring endast om den överskrider ett tröskelvärde. På det sättet så kan man behålla 8 bitars upplösning vid finjustering förutsatt att pot och störnivå medger det. Annars är väl en "digital pot" det bästa om det finns två pinnar att tillgå för den.
Skriv svar