Frage bezüglich ADC Datenverarbeitung

Gast #1756620
Lesenswert?
• ▲
▼
Hallo,

folgende Vorgehensweisen sind doch gleichwertig:
8 Ergebnisse eines 12Bit ADC aufsummieren,
durch 8 dividieren und dann mit Konstanten vergleichen
oder
8 Ergebnisse eines 12Bit ADC aufsummieren,
und dann mit 8 facher Konstante vergleichen?

Also z.B.:
unsigned int wAdcSum;

if (wAdcSum / 8 > MAX_XXX)
{
  ...
}

if (wAdcSum / 8 < MIN_XXX)
{
  ...
}

gleichwertig zu:

if (wAdcSum > MAX_XXX * 8)
{
  ...
}

if (wAdcSum < MIN_XXX * 8)
{
  ...
}

Bei der 2.Methode habe ich doch auch einen "Mittelungseffekt"?

Steh im Moment ein wenig aufm Schlauch ...

Bin für klärende Worte dankbar :-)
#1756636
Lesenswert?
• ▲
▼
Urlauber schrieb:

> 8 Ergebnisse eines 12Bit ADC aufsummieren,
> durch 8 dividieren und dann mit Konstanten vergleichen

Hier wird das ADC-Ergebnis abgerundet

> oder
> 8 Ergebnisse eines 12Bit ADC aufsummieren,
> und dann mit 8 facher Konstante vergleichen?

Hier nicht.

Die Wahrscheinlichkeit, dass der ADC-Wert größer ist als die Konstante, 
ist also im ersten Fall größer.

Grüße, Peter
#1756812
Lesenswert?
• ▲
▼
Es gibt schon einen Unterschied. Nehmen wir an, die Konstante ist 
0x0100, die Messwerte sind sieben mal 0x101 und einmal 0x100. 
Aufsummiert also 0x0807. Vergleiche ich das mit der achtfachen Konstante 
(0x0800) ist das größer.

Dividiere ich hingegen , kommt 0x100 als "Mittelwert" der Messungen 
heraus und das ist nicht mehr größer. Der Vergleich ">" wie in dem 
Beispiel ist also im ersten Fall wahr, im zweiten falsch.
Gast #1757064
Lesenswert?
• ▲
▼
Ok,

if ((wAdcSum & 0xFFF8) > MAX_XXX * 8)
{
  ...
}

wäre dann also zur 1. Methode gleichwertig.

Das bedeutet wohl, das die 2. Methode vielleicht sogar genauer ist,
weil Brüche nicht verlorengehen.

Z.B. so:

if (wAdcSum > MAX_XXX * 8 + 4)
{
  ...
}

Ist nur fraglich ob das sinnvoll ist?

Danke an allen die geantwortet haben.

Lg
Gerhard

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.