Analoger Eingang

Hallo meine lieben Arduino-Freunde!

Ich bin schon lange auf der Suche nach der richtigen Antwort, jedoch hat mich keine bisher vollkommmen befriedigt. Vielleicht kennt ihr eine :slight_smile:

Wie wird ein analoger Eingang gelesen?

Ich bin leider noch nicht lange mit dem Arduino vertraut und wÀre deshalb sehr dankbar wenn es relativ einfach erklÀrt ist.

Ich danke euch schon mal im Vorraus!

Es grĂŒĂŸt,

Lars

Meinst Du auf Hardwareebene oder welche Register wie gesetzt werden mĂŒssen um einen Eingang zu lesen?

GrĂŒĂŸe Uwe

Danke fĂŒr Ihre Antwort.

Ich meine dies nicht auf Hardwareebene, sondern wie der Arduino das analoge Signal verarbeitet/liest.

GrĂŒĂŸe,
Lars

Hi Lars,

Ein Analog-Digital-Umsetzer erzeugt aus einem kontinuierlichen Wertevorrat ein gestuftes Signal. Ein Digital-Analog-Umsetzer kann aus dem gestuften Signal nicht wieder ein kontinuierliches Signal erzeugen. Die einmal eingetretene Stufung in Schritten von 1 LSB (least significant bit) ist nicht wieder rĂŒckgĂ€ngig zu machen. Bei einer Folge von verĂ€nderlichen Werten wird die Stufung allerdings durch eine notwendige Filterung verschliffen.

Ein Digitalsignal ist ein zeitdiskretes und wertdiskretes Signal, wie es nebenstehende Darstellung zeigt. Der Digital-Analog-Umsetzer setzt die quantisierten Informationen, die als binÀre Information vorliegen, in ein Signal um, das kontinuierlich einem analogtechnisch arbeitenden GerÀt bereitgestellt werden kann.
Schritte der Umsetzung

Bei einer Umsetzung in ein zeitkontinuierliches (aber noch wertdiskretes) Signal wird der Signalwert bis zum nĂ€chsten Abtastpunkt in einem Eingangsregister[1][2][3] festgehalten. Bei einzelnen Messpunkten und bei langsam verĂ€nderlichen GrĂ¶ĂŸen entsteht am Ausgang ein Verlauf wie im zweiten Bild als waagerechte Strecken eingetragen.

Bei einer raschen Folge von Punkten mit unterschiedlichen Signalwerten sind aufgrund der Abtastpunkte fĂŒr das entstehende analoge (also auch wertkontinuierliche) Signal vielfĂ€ltige VerlĂ€ufe möglich. Die punktierte Linie im zweiten Bild folgt den Abtastwerten, Ă€hnelt aber dem Ursprungssignal nicht. Sie enthĂ€lt höhere Frequenzanteile, welche ĂŒblicherweise durch Anti-Aliasing-Filter auf analoger Seite verhindert werden mĂŒssen. Die Speicherung der Abtastpunkte wird in diesem Fall vom Filter beherrscht.
Spektrum einer Harmonischen am Ausgang eines DAU

Im nĂ€chsten Bild ist der Betragsverlauf des Frequenzspektrums eines DAU ohne Anti-Aliasing-Filter dargestellt, welcher eine Sinusschwingung mit der Frequenz fout ausgibt. Diese Sinusschwingung tritt mehrfach in Oberschwingungen auf. Dabei ist fc die Abtastfrequenz. Alle Signalanteile mit einer Frequenz oberhalb der halben Abtastfrequenz soll das Filter unterdrĂŒcken.

Durch die Quantisierungsstufen weist das Spektrum Verzerrungen auf, welche durch den rot-strichliert gezeichneten und einhĂŒllenden Betragsverlauf der Sinc-Funktion bedingt sind. Dadurch kommt es auch unterhalb der halben Abtastfrequenz, also im erwĂŒnschten Frequenzbereich, zu einer Verzerrung und Absenkung der Amplituden. Diese linearen Verzerrungen werden durch zusĂ€tzliche Filter ĂŒblicherweise auf der digitalen Seite kompensiert, im Bild blau punktiert eingezeichnet. Dabei werden höhere Frequenzanteile unterhalb der halben Abtastfrequenz invers zur Sinc-Funktionsverlauf stĂ€rker angehoben.

Ist die Signalfrequenz deutlich niedriger als die Grenzfrequenz des Filters, nÀhert sich der Verlauf des Ausgangssignals dem gestuften Verlauf an. Die Stufung macht sich als Quantisierungsrauschen bemerkbar.

Liebe GrĂŒĂŸe,
dein Tisch links vor dir :*

Wie wird ein analoger Eingang gelesen?

Als erstes wird der entsprechende Eingang ĂŒber den Analog-Mux (eine Art Mehrfach-Schalter) auf den ADC (Analog-Digital-Converter, die ATmega-Kontroller haben nur einen davon) geschaltet.

Der ADC wiederum ist eigentlich ein DAC (Digital-Analog-Converter) und ein Comparator (Spannungs-Vergleichschaltung). Der DAC produziert eine Spannung, die dann mit dem Eingang verglichen wird, dann wird je nach Ergebnis die DAC-Spannung geÀndert und wieder verglichen. Die Auflösung des DAC bestimmt somit auch die Auflösung des ADC.

Den DAC kannst Du Dir als eine Aneinanderreihung von WiderstĂ€nden vorstellen, die somit viele Spannungsteiler bilden. Über den angelegten BinĂ€rwert wird nun bestimmt, an welcher Stelle die Spannung abgegriffen wird.

War das verstÀndlich genug?

Wenn Deine Frage mehr in Richtung Programmierung ging:

int wert = analogRead(A0);

Diese Zeile liest den Analogwert vom analogen Eingang 0 in die Variable wert. Die Auflösung ist 10 Bit, 1023 entspricht als der Versorgungsspannung, wÀhrend 0 der Masse also 0V entspricht.

Hansistdran:
Danke fĂŒr Ihre Antwort.

Mache ich schon einen so alten Eindruck?
Bitte ein Du.
GrĂŒĂŸe Uwe

uwefed:

Hansistdran:
Danke fĂŒr Ihre Antwort.

Mache ich schon einen so alten Eindruck?
Bitte ein Du.
GrĂŒĂŸe Uwe

Naja bei deinem Wissen könnte man vermuten das du schon einige hundert Jahre auf dem Buckel hast (das ist ein Kompliment)!