Forum: Mikrocontroller und Digitale Elektronik AVR ATmega8 DAC Problem


von vlad_tepesch (Gast)


Lesenswert?

Ich habe, wie in dem AVR-Tut beschrieben den ATmega folgenderweise 
beschalten:
http://www.mikrocontroller.net/wikifiles/f/f6/Tut_ADC_03.gif
(außer dass er bei mir an PortC5 (Pin 28) hängt.
Ich mittele jeweils 128 messungen und gebe diese auf einer 
4*7-seg-mentanzeige aus.

AGND hängt an ground
AVCC an 5V
als referenzspannung hab e ich auf intern 5V gestellt.
der VREF port ist also mit dem einen ende des Potis, der Ground mit dem 
anderen und der Abgriff mit PC5 verbunden.
Das Poti hat ich 10kOhm.


Was ich nicht verstehe (und was in meinen augen falsch ist), ist dass 
das Poti bis kurz vor schluss werte im 10er bereich anzeigt und dann 
innerhalb der letzten paar grad (5% des Poti drehspielraums) auf 950 
geht.

Was mach ich denn falsch?

von vlad_tepesch (Gast)


Lesenswert?

Ich meinte natürlich ADC

von Volker (Gast)


Lesenswert?

Häng mal das Poti zwischen Vcc und GND!

von Hubert G. (hubertg)


Lesenswert?

Das eine Ende des Poti gehört nicht auf AREF sondern auf AVCC. An AREF 
gehört ein 100n nach AGND.

von vlad_tepesch (Gast)


Lesenswert?

In dem Tutorial ist diese Möglichkeit ausdrücklich beschrieben:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC#Ein_paar_ADC-Grundlagen

Allerdings habe ich das überlesen:
"Der Spannungsteiler muss einen Gesamtwiderstand von deutlich über 10kΩ 
besitzen. Werte von 100kΩ oder höher sind anzustreben"
Ich hoffe ich habe jetzt nicht den Port geschrottet


Auch mit VCC verbunden, gibt sich das gleiche bild.
Oder muss ich jetzt im ADMUX was umstellen?

von vlad_tepesch (Gast)


Lesenswert?

Ergänzung:
Ich wollte das so machen, da mich die Spannung nicht interessiert und es 
nicht auf Megagenauigkeit ankommt, da ich nur einen internen Parameter 
mit dem Poti einstellen möchte.
Da sah mir das nach der einfachsten Möglichkeit aus.

von Volker (Gast)


Lesenswert?

Also das Poti an Vcc und Gnd. Dann in ADMUX REFS0=1,REFS1=0 und 
MUX0..MUX3 entsprechend deinem ADC-Kanal setzen. Sollte das nicht 
funktionieren poste mal deinen Code

von Hubert G. (hubertg)


Lesenswert?

Die Variable zum Aufsummieren ist hoffentlich ein uint32_t, sonst kommst 
du nicht weit.
Oder du verwendest nur 8 bit.

von vlad_tepesch (Gast)


Lesenswert?

Ahhh,
jetzt beim Code aufbereiten sehe ichs:

anstatt ins DDR hab ich in PORTC reingeschrieben, dass PC6 ein Eingang 
ist -> war also die ganze zeit als Ausgang konfiguriert.

jetzt gehts.
auch mit der Variante mit Poti zwischen vref und ground.

Danke ;)

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.