Forum: Mikrocontroller und Digitale Elektronik schnelle AD/DA-Wandlung


von Jazz (Gast)


Lesenswert?

Moin,
mal nen paar fragen.

Wovon hängt die Konvertierungszeit des AD Wandlers ab? Beim Atmega644 zb 
steht was von 65 bis 260µs - das ist ja schon ne recht hohe Differenz. 
Ich brauche eine Umwandlungszeit von maximal 90µs. Da ich 143 Sensoren 
innerhalb von 10-13ms auslesen will. Alternative wäre noch ein 
Controller mit 2 AD Wandlern dann ist das nicht mehr so zeitkritisch. 
Aber wovon hängt das ab, ob ich nun 65 oder 260µs brauche?

Ne andere Frage: ich muss Werte auf dem µC zwischenspeichern, aber auch 
so, dass diese auch ohne Spannungsversorgung erhalten bleiben. gibt es 
da µCs die nen durch das laufende Programm beschreibbaren Flash Speicher 
oä haben?

Jazz

von Timmo H. (masterfx)


Lesenswert?

Auflösung und Takt des AD's und uC. Die zu messende Impedanz dürfte auch 
ne Rolle spielen. Die S&H braucht halt immer etwas.

von Gast (Gast)


Lesenswert?

>Da ich 143 Sensoren innerhalb von 10-13ms auslesen will.

Willst Du die Werte nur messen oder auch etwas damit anfangen?

Da würde ich zunächst einmal sehen, wie leistungsfähig der Prozessor für 
die Auswertung sein muß und dann prüfen, ob hier ein AVR überhaupt 
angemessen ist.

von Matthias L. (Gast)


Lesenswert?

>ob ich nun 65 oder 260µs brauche?

Klingt nach Atmel. Der interne ADC braucht 13 ADC-Takte für eine 
Umwandlung. Da das maximal 90µs dauern darf, musst du mind. 150kHz als 
Taktfrequenz für den ADC einstellen.

von Daniel Goosmann (Gast)


Lesenswert?

Ohne das Datenblatt studiert zu haben. Ist es bei der AD-Wandlung auf 
dem AVR nicht vom Eingangswert des Signals abhängig? Je nach dem wie 
schnell der entsprechende Wert gefunden wird, steht der gewandelter 
Digitwert zur Verfügung: Sukzessive Approximation

Gruß
Daniel

von Peter Diener (Gast)


Lesenswert?

Hallo,

die Konvertierungszeit hängt von der Taktrate ab, mit der der Wandler 
betrieben wird, die wiederum hängt vom verwendeten Quarz und der 
Vorteilereinstellung ab.

Für 143 Analogwerte, wirst du 286 Byte Arbeitsspeicher benötigen, um sie 
zu speichern. AVRs gibts bis 8kB internen Arbeitsspeicher. Man kann an 
busfähige, z.B. den ATMEGA 162 oder 64, 128, 1280, 1281, 2560, 2561 bis 
zu 64kB externes Ram anschließen, das sich auch batteriepuffern lässt 
(Lithiumbatterie 3V für 10 Jahre).

Ich rate davon ab, für die Messwertspeicherung das Flash zu beschreiben, 
für jede Änderung eines einzelnen Byte muss immer eine ganze Page 
gelöscht und wieder beschrieben werden, das geht nur ca. 10000 mal, dann 
ist das Flash defekt.

Auch mit inernem Ram kann man eine Batteriepufferung realisieren, man 
muss nur erkennen, dass die Versorgungsspannung fehlt und in einen 
low-power Modus umschalten, die CPU anhalten und dann braucht der 
Controller weniger als 1µA und der Speicherinhalt bleibt erhalten. Mit 
3V geht das aber nur mit einem Low-Voltage-Typ, z.B. ATMEGA2560V.

Wenn die Speicherung nicht für Jahre funktionieren muss, kann man auch 
einen Goldcap mit 5,5V verwenden. Wenn man sofort bei Stromausfall die 
CPU anhält, sind mit 1F Speichererhaltungszeiten bis 2 Monate möglich.

Viele Grüße,

Peter

von Jazz (Gast)


Lesenswert?

Moin, danke für die hilfe,
ich werd das wahrscheinlich so machen, dass ich die werte die 
gespeichert werden müssen auf einer sd karte speichere und beim start in 
den ram des µCs lade.

von Gast (Gast)


Lesenswert?

@Daniel Goosmann

>Ist es bei der AD-Wandlung auf dem AVR nicht vom Eingangswert des Signals 
>abhängig?
>...Sukzessive Approximation

Nee, gerade nicht.

@Jazz

Du kannst beim AVR den ADC ruhig so schnell, wie im Datenblatt angegeben 
betreiben: 65µs. Wenn Du keine 10Bit Genauigkeit brauchst, auch noch 
schneller.
Wenn Du aber alle 10ms alle Sensoren einlesen und auswerten willst, kann 
beim AVR die Rechenzeit knapp werden.
Da Du auch noch eine Menge externe Multiplexer verdrahten mußt, würde es 
auch nicht ins Gewicht fallen, einen separaten ADC zu verwenden.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Dummerweise benötigt der Eingangsumschalter in den AVR eine 
Umschaltpause. Abwechselndes Umschalten zwischen nur zwei Eingängen 
kostet so fast die doppelte Zeit. Es dürfte sinnvoller sein, die 
Sensoren mit einem externen Analogschalter umzuschalten und nur einen 
ADC-Eingang zu verwenden.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Da habe ich das Datenblatt falsch verstanden, nach dem Aufwecken aus dem 
Stromsparzustand braucht der ADC eine Pause, aber nicht zum Multiplexen.

von Thilo M. (Gast)


Lesenswert?

>nach dem Aufwecken aus dem Stromsparzustand braucht der ADC eine Pause

Und nach dem Umschalten der Betriebsart (single ended <=> differentiell)

von Jazz (Gast)


Lesenswert?

Moin, noch ne frage, ich kann bei reichelt oä keine analogen multiplexer 
finden. weiß jemand wo ich die her bekomme - ohne mich auch dusselig zu 
bezahlen (also unter 2€ für einen 8 Kanal Multiplkexer wäre schon toll)

von Gast (Gast)


Lesenswert?

Kein Problem: 74HCT4051

von ... .. (docean) Benutzerseite


Lesenswert?

Gast wrote:
> Kein Problem: 74HCT4051

der kann nur digitale Signale ....

oder wie willst aus einem anleigenden analogen 3 andere Signale machen?

von Gast (Gast)


Lesenswert?

>der kann nur digitale Signale ....

Gut zu wissen. Dann mache ich wohl jahrzehntelang etwas falsch :-)

von ... .. (docean) Benutzerseite


Lesenswert?

Wenn du mir dann erzählst wo ein analoges Signal (z.B. ein Sinus) 
rauskommt, wenn ich den am ersten Eingang anlege...

Oder wie nutzt du denn?

von NochEinGast (Gast)


Lesenswert?

Schau einfach mal ins Datenblatt, wenn ich mich recht erinnere sind dort 
sogar die Verzerrungswerte angegeben.

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.