Forum: Mikrocontroller und Digitale Elektronik ADC Wert ist nicht linear


von Bastler (Gast)


Lesenswert?

Hallo Jungs, ich experimentiere gerade noch mit meiner RGSs herum und 
stellte dabei folgende Phänomen fest:

Ich habe einen 10K Poti and Adc0 eines Atmega8 angeschlossen. Ein Pin 
von Poti ist an 5V das andere an GND. Der ADC Wert

Adc0 = Getadc(0) gebe ich an einem LCD aus ( Kontrolle )

Nun wenn ich am Poti drehe steigt der ADC Wert langsam an. ca bei einem 
drehung von 30% habe ich einen Wert von ca 100 bis 200 danach steigt der 
Wert rapide an, das heisst richtung ende (letzte paar Millimeter ) habe 
ich eine ADC Wert vonn 700 bis 1024. Also die Regelung ist nicht linear 
oder sagen wir so nicht "gleichmässig".

Der Poti hat 10K - Linear ( habe schon andere Potis versucht das gleiche 
Ergebnis )

Den ADC habe ich so deklariert :

Config Adc = Single , Prescaler = Auto , Reference = Avcc
 Start Adc

Der Adc Pin AREF ist mit dem PIn AVCC verbunden und hängt an +5V und ein 
Kondensator von 100nF gegen Masse ist an dran.

Wenn ich die Spannung an ADC0 pin messe ist auch nicht linear, also habe 
das gleiche Ergebnis wie der ADC Wert !!

Was ist falsch hier ?

von Umpa Lumpa (Gast)


Lesenswert?

Das Poti ist eventuell +log. sein.

Gruß

von Raucher (Gast)


Lesenswert?


von Markus O. (pipimaxi)


Lesenswert?

Du kannst ja mal über einen 1:1 Spannungsteiler AVCC/2 an ADC0 anlegen, 
wenn dann etwas um die 512 rauskommt, is der ADC in Ordnung und der Poti 
wird log. sein

LG

von Tester (Gast)


Lesenswert?

Hallo,

einfach einmal mit einem Voltmeter die Spannung am ADC-Eingang messen!

von Raucher (Gast)


Lesenswert?

Markus Oberle schrieb:
> Du kannst ja mal über einen 1:1 Spannungsteiler AVCC/2 an ADC0 anlegen,
> wenn dann etwas um die 512 rauskommt, is der ADC in Ordnung und der Poti
> wird log. sein
>
> LG

Das ist eine gute Idee, probiere dann Nachmittag aus.

von Bastler (Gast)


Lesenswert?

Tester schrieb:
> einfach einmal mit einem Voltmeter die Spannung am ADC-Eingang messen!

Schon gemacht, bereits darüber geschrieben :

"Wenn ich die Spannung an ADC0 pin messe ist auch nicht linear, also 
habe
das gleiche Ergebnis wie der ADC Wert !!"

von Chris (Gast)


Lesenswert?

Schließe mal ein anderen ADC Eingang an. Eventuell ist der Pin kaputt. 
Aber ich vermute .log Poti.

von Nobody (Gast)


Lesenswert?

Miss mal nur am Poti, ohne den Schleifer am Controller anzuschließen, 
wie sieht es dann aus?

von Chris (Gast)


Lesenswert?

AREF muss auf GND! Nicht auf 5V. Natürlich mit dem Kondensator.

von Mario R. (mario001) Benutzerseite


Lesenswert?

Evtl. ist das Poti zu hochohmig, und der Eingangswiderstand des ADC 
"verbiegt" dir das Ergebnis. Schalt mal einen Impedanzwandler 
(Operationsverstärker) dazwischen ....

von Bastler (Gast)


Lesenswert?

Nobody schrieb:
> Miss mal nur am Poti, ohne den Schleifer am Controller anzuschließen,
> wie sieht es dann aus?

Das ist auch ein spannender Ansatz !

ich habe nämlich die Spannung am Schleifer gemessen war aber an ADC 
angeschlossen.Werde auch noch einen anderen PIN bzw. AVR nehmen.

Danke erstmal !!! HAbe nun einige neue Anhaltspunkte.

von Chris (Gast)


Lesenswert?

Mario Richter schrieb:
> Evtl. ist das Poti zu hochohmig, und der Eingangswiderstand des ADC
> "verbiegt" dir das Ergebnis. Schalt mal einen Impedanzwandler
> (Operationsverstärker) dazwischen ....

Er benutzt ein 10k Poti. Das ist nicht zu Hochohmig. Eingangswiderstand 
des Pins ~1MOhm

von Bastler (Gast)


Lesenswert?

Sorry habe mich verguckt !

Bei mir ist pin 21-22 gebrückt, direkt auf GND

Ist es hier die richtige Beschaltung ?

http://halvar.at/elektronik/kleiner_bascom_avr_kurs/adc_mit_getadc/

Was passiert wenn AREF direkt an +5V wäre ?

von spess53 (Gast)


Lesenswert?

Hi

>Danke erstmal !!! HAbe nun einige neue Anhaltspunkte.

Dann wäre noch die Frage nach der Taktfrequenz des ADC.

MfG Spess

von Chris (Gast)


Lesenswert?

Der Schaltplan ist richtig.

Zwischen Pin 21-22 muss(!) der ~100nF Kondensator.

AREF direkt auf +5V habe ich noch nie gemacht. Dafür gibt es ja die 
Option ihn mit Versorgungsspannung intern zu beschalten. Aber ich denke 
du wirst Hausnummern messen.

Ich kann dir, wenn du was neues ausprobierst das Tutorial hier nur 
empfehlen. Auch wenn es Assembler ist, die Grundlagen sind die gleichen.

http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC

Lies einfach mal bis zum Beispiel Program und du hättest den Fehler 
selber gefunden.

von Bastler (Gast)


Lesenswert?

Also was ich gelesen habe, der ADC Frequenz sollte zwischen 50-200Khz 
liegen
(Prescaler-Faktor.)

Nun was macht es bei sowas ?

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Der AVR läuft mit einem 16Mhz Quarz

von Bastler (Gast)


Lesenswert?

Chris schrieb:
> Zwischen Pin 21-22 muss(!) der ~100nF Kondensator.

Upsss....habe übersehen !!!! habe die Tut von Halvar angeschaut und fing 
dann mit der Experimenten an.

( PWM geht schon sehr gut, RGB Wechsler, dimmen mit Tasten, wollte nun 
weitermachen mit einem Poti )

Danke !!

von spess53 (Gast)


Lesenswert?

Hi

>Nun was macht es bei sowas ?

Wenn dein Compiler die richtige Taktfrequenz deines Controllers kennt, 
sollte sich das mit

Prescaler = Auto

erledigt haben.

MfG Spess

von Bastler (Gast)


Lesenswert?

spess53 schrieb:
> Wenn dein Compiler die richtige Taktfrequenz deines Controllers kennt,

Dieses gemeint ? :

$regfile = "m8def.dat"
$crystal = 16000000

von spess53 (Gast)


Lesenswert?

Hi

>Dieses gemeint ? :

Ja.

MfG Spess

von Bastler (Gast)


Lesenswert?

Ich vermute ( muss ich erst messen wenn ich zu Hause bin ) das Problem 
könnte daher kommen, daß der AREF nicht sauber beschaltet ist.
Ich denke, weil ich schon mehrere Potis ausprobiert habe, daß die 
Spannung am Schleifer ohne an AVR angeschlossen zu sein, linear 
verlaufen wird.

von Bastler (Gast)


Lesenswert?

So etwas besser aber nicht gut.

Habe nochmal mein Steckbrett kontrolliert , AREF war offen...Habe mit 
einem 100nF mit  GND verbunden.

Ich habe am Schleifer des Poti die Spannung gemessen, wenn ich den Poti 
langsam drehe. Die Verbindung zu AVR habe unterbrochen. Am Schleifer ist 
die Spannung schön gleichmässig. Danach habe ich es wieder mit Adc0 
verbunden und die Spannung am PIN beobachtet, erstmal steigen die Werte 
Spannung und ADC Wert sauber. Ab ca 3,4 - 3.7V bei der kleinste Drehung 
messe ich gleich 4,99V und der ADCO Wert spring auf 1020 hoch.



An was kann es liegen ?

Die Beschaltung ist wie bei Halvar.at, mehrmals kontrolliert. passt 
alles.Eine Spule habe ich auch noch spendiert.

von Klaus D. (kolisson)


Lesenswert?

Bastler schrieb:
> Ich habe einen 10K Poti and Adc0 eines Atmega8 angeschlossen. Ein Pin
> von Poti ist an 5V das andere an GND. Der ADC Wert

>Ab ca 3,4 - 3.7V bei der kleinste Drehung
>messe ich gleich 4,99V und der ADCO Wert spring auf 1020 hoch.



.. und dein Mega läuft auch mit 5V ?  oder mit 3,3V ?

von Bastler (Gast)


Lesenswert?

Saubere 5V !

von Bastler (Gast)


Lesenswert?

Netzteil ist ganz normal ( habe mehrere ) Trafo Gleichrichter, Kondis, 
78S05.

von Bastler (Gast)


Lesenswert?

Niemand eine Idee ?

von Klaus D. (kolisson)


Lesenswert?

Bastler schrieb:
> Niemand eine Idee ?

Nee eigentlich nicht, da das eigentlich ein absurder Fehler ist.

VCC und AVCC muss auf +5.
alle GND , also GND und AGND müssen auf GND.

Aref ist lediglich mit 100nF gegen GND zu legen und sonst nichts.

wenn alles so gemacht ist und es geht nicht, würde ich mal den uC
tauschen. vielleicht hast du diesen durch die Verbindung von Aref zu 
Avcc
schon gehimmelt.

Gruss Klaus

von gerro (Gast)


Lesenswert?

interner Pullup aktiviert ?

von Bastler (Gast)


Lesenswert?

gerro :

interner Pullup beim ADC0 ?

von gerro (Gast)


Lesenswert?

interner pull up am ADC0 sollte nicht aktiviert sein !

von Bastler (Gast)


Lesenswert?

Fehler habe ich gefunden, erstmal Danke an alle !

Der AVR war Schrott.

Spannend war, habe ich einen nagelneuen genommen, (Pony ) Read all dann 
Write All hat auch angefangen zu spinnen sobald am Poti gedreht habe.

Danach habe ich einen anderen genommen, komplette Prozedur, funzt 
perfekt !!!
Schöner ADC Wert, keine Flatterei..usw

Kann es sein daß auch Schrott ICs auch hergestellt werden ? ( Herkunft 
weiss ich nicht mehr genau. Habe viele AVRs auf Lager, einige von 
Reichelt, einige aus der Bucht, vom Kessler...usw...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.