Forum: Mikrocontroller und Digitale Elektronik Auf der Suche nach dem MaxWert ( ADC )


von Marc Weisner (Gast)


Lesenswert?

Mahlzeit,
folgendes  ich scanne mit meinem ADC (8051 Derivat) mehrere Kanäle und
schreibe die Werte für jeden Kanal in eine Tabelle mit 100 Werten. Dann
durchsuche ich die Tabelle auf den größten gemessenen Wert was auch gut
klappt.
Jetzt mein Problem ich möchte gerne den gemessenen Werten die Zeit zu
dennen Sie gemessen worden sind zuordnen.
Wie stelle ich das an? Die Zeit für eine Wandlung dauert ca 6µs.

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Brauchst du die Werte noh für andere Sachen, dass du sie in eine Tabelle
schreibst?
Sonst brauchst nämlich nur eine Variable für jeden ADC-Kanal:
alterWert.
Der Vergleich läuft dann so ab:
ist alterWert < aktuellerWert?
ja: speicher Zeit ab und setzt alterWert = aktuellerWert
Nein: dann tue nichts.
Für die Zeit musst du halt irgendwelche Variable bei jeder ADC-Messung
inkrementieren... (Zeitbasis sind dann die 6µs).

von Marc Weisner (Gast)


Lesenswert?

Muss noch den Mittelwert errechnen deswegen Tabelle!
Wie meinst du das genau mit speicher Zeit ab woweg nehmen?

von Rolf Magnus (Gast)


Lesenswert?

Ich verstehe das Problem nicht. Wenn es 100 Messungen sind mit jeweils 6
µs, mußt du nur einen Zeitpunkt (z.B. den Anfang) speichern. Danach
kannst du den Zeitpunkt jeder Messung daraus ausrechnen (Start + 6 µs *
(Index * Kanalzahl + aktueller Kanal))

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Wie meinst du das genau mit speicher Zeit ab woweg nehmen?

Was darf mir diese Frage sagen?

Vermutung: Es hat irgendwas mit der "Uhrzeit" zutun.

Man hat eine Zeitbasis, also ein Ereignis, dass in regelmässigen
Abständen auftritt.
Wenn man die Folge dieser Ereignisse mitzählt, kommt man zu einer Art
Uhr (eine "normale" Uhr hat als Zeitbasis eine Sekunde).
Lässt man diese Uhr nun im Controller laufen, dann kann man die
Uhrzeit, zu der ein grösserer Wert aufgelaufen ist, in einer Variablen
abspeichern (die Variable kann auch im EEPROM liegen...).
Wenn du jetzt kontinuierlich den ADC ausliest, könnte man die Messdauer
als Zeitbasis benutzen...
Oder man geht den anderen Weg und lässt den ADC durch ein
Timer-Interrupt auslösen (AFAIK können das eine AVR).

von Marc Weisner (Gast)


Lesenswert?

ja das ist ja soweit auch richtig meinte mit den 6µs nicht das jede
Messung genau diese Zeit braucht da sind schon differenzen drin!
Möchte halt eine Zeit zum Messwert haben die nicht berechnet ist!

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Den Mittelwert kann man auch gleitend bilden...
Und wie Hannes schon anmerkte: Benutze eine Tabellengrösse, die eine
Potenz von 2 ist. Das verringert den Rechenaufwand.

von Rolf Magnus (Gast)


Lesenswert?

Warum hast du uns das den anfangs verheimlicht? Du kannst natürlich,
wenn du noch genug Speicher übrig hast, den Zeitpunkt jeder Messung
auch mit in der Tabelle abspeichern. Den ermittelst du mit einem Timer.
Wie das bei deinem µC genau geht, kann ich dir nicht sagen.

von Hannes L. (hannes)


Lesenswert?

> Und wie Hannes schon anmerkte: Benutze eine Tabellengrösse, die eine
> Potenz von 2 ist. Das verringert den Rechenaufwand.

Das war ich nicht... Auch war das in einem anderen Thread...
Aber dort gibt es ein AVR-ASM-Beispiel für Mittelwert über 256
Messungen:
http://www.mikrocontroller.net/forum/read-1-404515.html#404841

...

von inoffizieller WM-Rahul (Gast)


Lesenswert?

>Das war ich nicht...
Schuldigung. Bist du mir jetzt böse?

von Hannes L. (hannes)


Lesenswert?

> Bist du mir jetzt böse?

Nööö, warum sollte ich? Es könnte aber sein, dass Andere auf uns böse
sind weil wir so oft OT-Dialoge schreiben...

Grüß die Sprotten...
...HanneS...

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.