50/50-Rechtecksignal

Hallo Leute,

ich bin ein bisschen am speilen, finde auch viele Beispiele aber keine scheint zu functionieren.

Ich suche in eine Frequenz zwischen 5 und 150Hz ein 50/50-Rechtecksignal.

Kann jemand mir da helfen?

Du kennst sicher schon delay und digitalWrite.

Wo genau ist das Problem?

Gruß, H.

Trebbie:
Ich suche in eine Frequenz zwischen 5 und 150Hz ein 50/50-Rechtecksignal.

https://www.elektronik-kompendium.de/sites/slt/0310131.htm

Sogar mit Bauteilerechner !
(weiter unten)

Stefan

Trebbie:
Ich suche in eine Frequenz zwischen 5 und 150Hz ein 50/50-Rechtecksignal.
Kann jemand mir da helfen?

Wenn ich Dich richtig verstehe, möchtest Du eine anliegende Frequenz daraufhin untersuchen, ob sie ein Rechtecksignal mit 50% „Duty“ enthält.

Sample ein paar -zig Werte und sieh Dir die Kurven an, die damit gezeichnet werden (z. B. mit gnuplot). Variiere die Sampling-Frequenz ggf. passend. Wie die Mathematik aussieht, die einem sagt, ob das Rechteck ist oder nicht, kenne ich nicht. Wäre aber eine Antwort, die auch mich interessiert.

Gruß

Gregor

StefanBoth:
NE555 als astabile Kippstufe / astabiler Multivibrator

Sogar mit Bauteilerechner !
(weiter unten)

Stefan

Kenne ich, erzeucht das was ich suche, müsste doch auch mit arduino zu machen sein?

Möchtest Du ein Rechtecksignal messen oder erzeugen?

Erzeugen wie Blink_with_delay:

digitalWrite(Pin, HIGH);
delay(zeit);
digitalWrite(Pin, LOW);
delay(zeit);

Das geht auch mit millis() siehe BlinkWithoutDelay bei den Beispielen.

gregorss:
Wie die Mathematik aussieht, die einem sagt, ob das Rechteck ist oder nicht, kenne ich nicht. Wäre aber eine Antwort, die auch mich interessiert.

Bin nicht der Mathefreak, würde es mit Statistik probieren: 49,5% (nur mal als Beispiel) im oberen Spannungsbereich, 49,5% im unteren Spannungsbereich, der Rest dazwischen, das könnte ein Rechteck sein.

agmue:
Bin nicht der Mathefreak, würde es mit Statistik probieren: 49,5% (nur mal als Beispiel) im oberen Spannungsbereich, 49,5% im unteren Spannungsbereich, der Rest dazwischen, das könnte ein Rechteck sein.

Ja, klar. Nur: Wie gießt man so etwas in ein Programm? Zudem muss man ja auch wenigstens ungefähr wissen, um welche Frequenz es geht. Wenn Du zweimal ein Wellental und nur einmal einen Berg misst, hast Du satte 1/3 zu 2/3. Blöderweise hatte ich in der Schule kaum mit Statistik zu tun.

Gruß

Gregor

Das Messen klappt nur wenn man den Bereich der Frequenz die man messen will kennt.
Stichwort “Shannon”.
Hat man nun eine “unsymetrische” Welle (Rechteck) muss man natürlich so schnell
sampeln das, wie soll ich sagen, der “dünnere” Teil des Rechtecks hochgerechnet auf die
ganze Welle die zu Messende Frequenz ist. Und dann muss man mit etwas mehr als der
doppelten Frequenz Messen um alle Vorzeichenwechsel sicher mitzukriegen.

Ich hoffe ich habe mich jetzt nicht all zu verwirrend ausgedrückt :-).

(Müde, erkältet und ein warmes Bier zum Schlafen)

Ulli

beeblebrox:
(Müde, erkältet und ein warmes Bier zum Schlafen)

Naja, mit zwei Köpfen kannst Du wenigstens doppelt so viel saufen :slight_smile:

Gruß

Gregor

Hallo,

ich würde folgendermaßen rangehen. An einem Interrupteingang die jeweiligen Pegelwechsel mit micros() "messen" und merken und die Differenzen bilden. Wenn die High und Low Zeiten gleich sind, haste dein 50/50 gefunden und kennst auch dessen Periodendauer und damit die Frequenz. micros Genauigkeit sollte ausreichend sein, denke ich.

Trebbie:
Kenne ich, erzeucht das was ich suche, müsste doch auch mit arduino zu machen sein?

Daraus schließe ich, dass es ausschließlich um die Erzeugung einer variablen Frequenz mit 50/50 ON/OFF geht.

BlinkWithoutDelay erzeugt so eine Frequenz auf Pin 13, nur sehr langsam.

Auf die gewünschte Frequenz stellen, fertig.

Edit: alternativ könnte man tone() (31-65535 Hz) verwenden.

Whandall:
BlinkWithoutDelay erzeugt so eine Frequenz auf Pin 13, nur sehr langsam.

Siehe #5, da sind wir uns einig :slight_smile: