Rechteckspannung und ADC

OP #905668
Lesenswert?
• ▲
▼
Hallo,

ich möchte die Pegel eines Rechtecksignals mittels ADC bestimmen. Mein
Problem ist jetzt, dass das Signal zwischen zwei Werten pendelt, die ich
vorher nicht kenne. Als Lösung hätte ich gerne den Wert für die
niedrigste Spannung und den Wert für die höchste Spannung.
Wenn ich nun zwei nacheinander gemessenen Werte vergleiche und danach
die Aussage treffe, welcher größer oder kleiner war, ist das Problem,
dass der ADC sowieso nie zweimal den gleichen Wert misst.
Ein weiteres Problem ist, wenn ich genau in der steigenden oder
fallenden Flanke messe, dann kommen noch ungenauere Werte zu stande.

Hat da jemand vielleicht eine Idee?

Gruß
Heiko
Gast #905670
Lesenswert?
• ▲
▼
Ich würde dem zu messenden Signal erst einen Komparator vorschalten. Den 
auf einen ext. Interrupt geben. Somit hast du schon mal die Zeiten wo du 
messen kannst. Danach evtl. mehrere Messungen in dieser Phase und den 
Mittelwert bilden.

MW
Gast #905680
Lesenswert?
• ▲
▼
>Mein Problem ist jetzt,
>dass das Signal zwischen zwei Werten pendelt

Nun, das hat ein zeitlich variantes Signal so an sich.
Für eine sinvolle Antwort auf deine Frage fehlen da noch ein paar Daten:
Frequenz?
Flankensteilheit?
Rauschen?
Ändert sich der low- bzw. high-Pegel im Laufe der Zeit?
Falls ja: wie schnell?


Wenn ich das alles als Freiheitsgrade hätte, dann
würde ich das als ein sauberes 5V-Signal definieren
und einen 1-Bit-AD-Wandler (Port-Pin) verwenden :-)
(Ich liebe den Konjunktiv)
OP #905698
Lesenswert?
• ▲
▼
> Für eine sinvolle Antwort auf deine Frage fehlen da noch ein paar Daten:
Frequenz maximal 16Hz, also sehr langsam
Flankensteilheit im schlechtesten Fall 200us
Rauschen = ADC-Wert +-3

> Ändert sich der low- bzw. high-Pegel im Laufe der Zeit?
> Falls ja: wie schnell?

eigentlich sollte er sich nicht ändern, aber auch das Stecker abziehen 
würde eine Änderung hervorrufen.
OP #905749
Lesenswert?
• ▲
▼
Fabian Harder wrote:
> lkmiller wrote:
>> @   Fabian Harder
>>
>> besser so:
>> :
>> min = 255;  // wenn unsigned!!
>> max = 0;
>> :
>>
>> Weil:
>> was wäre mit "min = 128",
>> wenn das Signal zwischen 200 und 240 schwanken würde?
>
> Jo, stimmt!

Problem an der Sache ist nur, dass bei dieser Möglichkeit Pegel nur 
erkannt werden, wenn sie oberhalb oder unterhalb der Schwelle liegen. 
Sollten beide unterhalb 255 liegen, wird nur ein Wert erkannt.
Wenn sich das Signal auch noch ändert, also erst ein max wert erkannt 
wird und dann wird die Schwelle unterschritten, dann bleibt der Wert 
trotzdem im Register stehen...
Gast #905834
Lesenswert?
• ▲
▼
Das mit dem Histogramm ist schön,
braucht aber einiges an Speicherplatz und Auswerte-SW.
Und eine lange Messdauer, um sicher beide Pegel zu erfassen (<<16Hz).

Wieso nicht do wie die Peak-Anzeigen in einem Mischpult:
z.B. Maximum
A) ein AktWert>MaxPeak setzt den MaxPeak=AktWert
B) dann läuft der MaxPeak zeitlich (z.B. -1 pro 10ms) langsam gegen 0,
   wenn nicht zwischendurch A) eintritt

MinPeak ist eben genau umgekehrt. Das ergäbe eine
schöne Anpassung auch an ein sich langsam änderndes Signal.

Das ergibt ein weniger hartes Verhalten als
>
>Dann setzt man zyklisch min=255; max=0; und
>erhält danach wieder die aktuellen Werte.
>

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.