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 ?
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
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.
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 !!"
Evtl. ist das Poti zu hochohmig, und der Eingangswiderstand des ADC
"verbiegt" dir das Ergebnis. Schalt mal einen Impedanzwandler
(Operationsverstärker) dazwischen ....
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.
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
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.
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
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 !!
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
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.
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.
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 ?
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
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...