Forum: Mikrocontroller und Digitale Elektronik Fragen zum ADC-Tutorial


von Michael S. (penumbra)


Lesenswert?

Hallo,

ich hab gerade das Kapitel AVR-Tutorial: ADC durchgearbeitet.
Leider sind die Codebeispiele für den Anfänger ziemlich sperrig und 
schlecht zu durchschauen. Könnte da jemand, der sich auskennt, nicht mal 
ein einfaches Beispiel dazuschreieben - ohne UART-Übertragung und 
ähnliches Beiwerk?

Und eins ist mir auch nicht klar geworden: Wenn man von vornherein weiß, 
dass sich die zu messende Spannung z.B. zwischen 3V und 5V bewegen wird, 
kann man dann den Messbereich auch nach unten begrenzen? Geht das mit 
externen Referenzspannungen (die sind ja nur sehr grob beschrieben) ?

Grüße

von Krapao (Gast)


Lesenswert?

Sag konkret was dir unklar ist, vielleicht geht es anderen auch so und 
man kann das Tutorial verbessern. Ein "Leider sind die Codebeispiele für 
den Anfänger ziemlich sperrig und schlecht zu durchschauen." hilft 
wenig. Die Beispiele sollten an sich anfängertauglich sein.


Begrenzung nach unten sist mir von der Einstellerei des ADC im AVR aus 
nicht bekannt. Man kann natürlich extern von der Spannung 3V abziehen 
(z.B. Operationsverstärker) und so die 3-5V in den Bereich 0-2V 
bringen und mit einer Referenzspannung 2V den vollen Auflösungsbereich 
des ADC ausnutzen.

von Ingo L. (Gast)


Lesenswert?

Wie willst du ohne UART dein Ergebnis sehen. Wenn du weißt , dass das 
Ergebnis zwischen 3-5V groß ist, dann könntest du das mit OPVs so 
ausbalancieren, dass du aus den 2V Differenz 5V machst. So ohne weiteres 
kannst du die Auflösung nicht an den Spannungspegel anpassen. 
Grundsätzlich wenn du messen willst, die eine externe Referenz für den 
AVR, die Versorgungsspannung ist nur selten gut genug.

von Karl H. (kbuchegg)


Lesenswert?

Michael Schmidt schrieb:
> Hallo,
>
> ich hab gerade das Kapitel AVR-Tutorial: ADC durchgearbeitet.
> Leider sind die Codebeispiele für den Anfänger ziemlich sperrig und
> schlecht zu durchschauen. Könnte da jemand, der sich auskennt, nicht mal
> ein einfaches Beispiel dazuschreieben - ohne UART-Übertragung und
> ähnliches Beiwerk?

Versteh ich nicht.
Wenn man das Tutorial von Anfang an durchgeht sollte das eigentlich kein 
Problem darstellen. Alles baut aufeinander auf.

Steigt man allerdings mitten drinn ein, dann hat man eventuell ein 
Problem. Aber auch da sollte eigentlich mit der Beschreibung dazu klar 
sein, wo im Programm der ADC Teil aufhört und der UART Teil anfängt. 
Irgendwas muss man schliesslich mit dem ADC Wert tun um ihn sichtbar zu 
machen.

> Und eins ist mir auch nicht klar geworden: Wenn man von vornherein weiß,
> dass sich die zu messende Spannung z.B. zwischen 3V und 5V bewegen wird,
> kann man dann den Messbereich auch nach unten begrenzen? Geht das mit
> externen Referenzspannungen (die sind ja nur sehr grob beschrieben) ?

Dann brauchst du eine Externbeschaltung, die zunächst die 3-5V in den 
Bereich 0-2V verschiebt und kannst dann mit einer kleineren 
Referenzspannung arbeiten, um die 0-2V auszuwerten.

von Krapao (Gast)


Lesenswert?

Nachtrag: Bei manchen AVRs sind differentielle Eingänge beim ADC 
vorhanden. Da ist quasi der oben erwähnte externe OPV eingebaut. Aber: 
Aufpassen! Ob der ADC dann die vollen 10-Bit Auflösung hat (Datenblatt).

von Ingo L. (Gast)


Lesenswert?

Hat er nicht, 9Bit. Aber das hilft dann nicht weiter, die 
Referenzspannung bleibt ja trotzdem.

von Michael S. (penumbra)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Irgendwas muss man schliesslich mit dem ADC Wert tun um ihn sichtbar zu
> machen.

Vielleicht mit LCD ausgeben - das würde mit den vorher beschriebenen 
(und als .inc ausgelagerten) Routinen nur eine zusätzliche Zeile Code 
bedeuten.
Ich will aber gar nicht sagen, dass man das so wie es jetzt ist nicht 
machen kann - ich fand es beim Lesen halt nur schrierig, weil zwei 
Problemfelder (ADC und UART) zusammen auftauchen.

Danke für den Hinweis mit dem OPV - das werd ich so probieren.

von Krapao (Gast)


Lesenswert?

LCD ist IMHO in der Praxis wesentlich problematischer als UART.

Bei mir kommt das Inbetriebnehmen der UART als Mund und Ohr zum Anwender 
als wichtigste Funktion direkt nach dem Anschluß der berühmten "Hello 
World"-LED. Danach kann ich mich an die restlichen Funktionen des µC 
rantasten.

von Thomas (kosmos)


Lesenswert?

man kann die Ergebnisse auch im Eeprom speichern und das Eeprom  zur 
Kontrolle auslesen.

von Oliver J. (skriptkiddy)


Lesenswert?

Thomas O. schrieb:
> man kann die Ergebnisse auch im Eeprom speichern und das Eeprom  zur
> Kontrolle auslesen.
Findest du dieses Vorgehen nicht auch unkomfortabel?

von Karl H. (kbuchegg)


Lesenswert?

Michael Schmidt schrieb:

> Vielleicht mit LCD ausgeben - das würde mit den vorher beschriebenen
> (und als .inc ausgelagerten) Routinen nur eine zusätzliche Zeile Code
> bedeuten.

Wenn du die mit den UART Routinen vergleichst stellst du fest, dass die 
Unterschiede so groß auch wieder nicht sind. Das "Hauptproblem", nämlich 
einen Zahlenwert in eine lesbare Form aufzubereiten, ist da wie dort 
gegeben. Ob man dann diesen 'Text' per UART verschickt oder per LCD 
anzeigt, ist so gesehen relativ egal.

Noch einfach wäre natürlich einfach 8 LED an einem Port zu haben. Aber 
auch das erfordert wieder Voraussetzungen, die im Tutorial so nicht 
gegeben sind.

Irgendwann ist es in jedem Tutorial so, dass mein einzelne Konzepte 
nicht mehr für sich alleine einführen kann. Einigermassen 'interessante' 
Programme erfordern nun mal mehrere Konzepte in einem Programm.

von Thomas (kosmos)


Lesenswert?

nicht jeder AVR hat eine UART aber jeder hat eine 
Programmierschnittstelle. Also bevor ich zur Kontrolle ne Software UART 
programmiere gehe ich den Umweg über das Auslesen.

von Tom (Gast)


Lesenswert?

...es ging mir beim ersten Durchlesen des Tutorials ebenso (Das ist 
jetzt auch nicht negativ gemeint, das Tutorial ist gut !).

Das ist aber auch nicht weiter tragisch. Ich habe für mich die Erfahrung 
gemacht, dass ich es einfacher verstehe, wenn ich mir ein konkretes 
eigenes Ziel setze und das Programm selbst schreibe.

Ich würde in diesem Fall vermutlich mit einem Attiny13 auf dem 
Steckbrett einen kleinen Batterietester aufbauen, der mir anhand von ein 
paar Leds die Spannung der Batterie anzeigt (z.B. zwischen 1 und 1,5 
Volt).

Beim Erstellen des eigenen Programms stösst man dann immer auf die ein 
oder andere Frage, die das Tutorial dann beim "zweiten" Lesen schön 
beantwortet....

von Thomas (kosmos)


Lesenswert?

wenn du nur Messen willst ob die Batterien noch gut sind, brauchst du es 
nicht so kompliziert machen. Spannungsteiler mit Mittenabgriff(Poti) auf 
den Referenzspannungseingang, Batterie entsprechend belasten und dann 
Spannung messen. Eine reine Spannungsmessung ohne jegliche Belastung 
wird dir sonst fast immer 100% anzeigen.

von Tom (Gast)


Lesenswert?

Thomas O. schrieb:
> wenn du nur Messen willst ob die Batterien noch gut sind, brauchst du es
>
> nicht so kompliziert machen.

...es ging mir jetzt auch nur um das Verständnis der Arbeitsweise des 
ADC, da finde ich ein "konkretes" Projekt immer schöner. Das das als 
Beispiel genannte auch einfacher geht, sollte klar sein....

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.