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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren