Differenzbildung zweier Rechtecksignale

Gast #5064668
Hallo

Habe da mal eine Frage.
Ich habe 2 Rechtecksignale z.B. 30Hz und 50Hz.
Gibt es eine Möglichkeit diese mit normalen Digital Ics zu mischen?
Gebraucht wird die Differenz von 20Hz.
Die Frequenzen variieren, deshalb ist die Differenzbildung wichtig.

Bei HF geht das ja einfach über Ringmischer usw.

Aber bei "NF"?

Hat jemand eine Idee?

Gruß Mani
#5064693
Hallo,

an jeder gekrümmten Kennlinie kannst Du sie mischen. Nur brauchst Du 
noch einen Tiefpaß, der Dir die 30 Hz hinreichend gut von den 20Hz 
abtrennt. Hast Du die Teile dafür schon da liegen? Vielleicht kann mal 
jemand die nötige Flankensteilheit angeben, das ist eine halbe Oktave.

Mit freundlichem Gruß
#5064695
@Mani (Gast)

>Ich habe 2 Rechtecksignale z.B. 30Hz und 50Hz.
>Gibt es eine Möglichkeit diese mit normalen Digital Ics zu mischen?

Sicher.

>Gebraucht wird die Differenz von 20Hz.
>Die Frequenzen variieren, deshalb ist die Differenzbildung wichtig.

>Bei HF geht das ja einfach über Ringmischer usw.

>Aber bei "NF"?

Einen Mischer kann man mit einem Multiplikator machen. Bei 
Digitalsignalen wäre das ein einfaches UND-Gatter. Allerdings muss man 
danach die Oberwellen mittels Filter entfernen und danach wieder per 
Schmitt-Trigger zu einem Digitalsignal formen.
#5064744
Messi schrieb:
> Im NF-Bereich ist ein keiner µC die Lösung: f1 & f2 messen und die
> Differenz bilden. Da spart man sich Filter & Co.

Würde das ganze nicht auch durch geschicktes Toggeln eines Ausgangs 
durch die Zustände der Flanken der beiden Frequenzen ohne Messung und 
große Rechenkraft funktionieren?

Oder habe ich was bei der Theorie übersehen?
Gast #5064755
Philipp K. schrieb:
> Messi schrieb:
>> Im NF-Bereich ist ein keiner µC die Lösung: f1 & f2 messen und die
>> Differenz bilden. Da spart man sich Filter & Co.
>
> Würde das ganze nicht auch durch geschicktes Toggeln eines Ausgangs
> durch die Zustände der Flanken der beiden Frequenzen ohne Messung und
> große Rechenkraft funktionieren?

Zeige dein Programm mit dem geschickten Toggeln.
Gast #5064805
Nils schrieb:
> Nimm ein D-FlipFlop. Das eine Signal auf den D-Eingang, das andere auf
> den Takt-Eingang und voila, auf Q oder Q~ hast du deine
> Differenzfrequenz.

Wenn das wirklich funktionieren sollte und zwar so, dass die Rechtecke 
am Ausgang alle gleich breit sind, dann fress nicht nur einen Besen 
(auch nicht zwei) sondern sogar wieder Gemüse.
Gast #5064814
Das sind ja schon gute Ideen.
Mit dem D FF hört sich gut an.
Ausgangssignal muss auch nicht Puls/Pause 1:1 sein. Jitter stört glaube 
ich nicht.
Wichtig ist nur die Frequenz

Gruß Mani
#5064819
@Fleischfresser (Gast)

>> Nimm ein D-FlipFlop. Das eine Signal auf den D-Eingang, das andere auf
>> den Takt-Eingang und voila, auf Q oder Q~ hast du deine
>> Differenzfrequenz.

>Wenn das wirklich funktionieren sollte und zwar so, dass die Rechtecke
>am Ausgang alle gleich breit sind, dann fress nicht nur einen Besen
>(auch nicht zwei) sondern sogar wieder Gemüse.

Guten Appetit! Nein, das kommt dabei nicht raus. Richtig ist aber, daß 
mit einem D-FlipFlop ein einfaches Abtastglied gebaut werden kann.
Das wirkt auch wie ein multiplikativer Mischer. Aber auch dort braucht 
man am Ausgang einen Tiefpaßfilter.
#5064842
Nils schrieb:
> Nimm ein D-FlipFlop. Das eine Signal auf den D-Eingang, das andere auf
> den Takt-Eingang und voila, auf Q oder Q~ hast du deine
> Differenzfrequenz.

Kühne Behauptung. Stimmt allerdings nicht.

Die 50Hz und die 30Hz XORen, das Signal in einem LC Bandpass filtern und 
mit einem Komparator wieder ein Digitalsygnal raus machen.

Cheers
Detlef
Gast #5064872
Detlef _. schrieb:

> Die 50Hz und die 30Hz XORen, das Signal in einem LC Bandpass filtern und
> mit einem Komparator wieder ein Digitalsygnal raus machen.

Wurde weiter oben bereits vorgeschlagen.

Bei zwei bekannten Frequenzen brauche ich diesen Aufwand nicht zu 
treiben, da kann ich die Differenzfrequenz gleich ausgeben.

Bei zwei unbekannten Frequenzen hilft z. B. ein µC.

Vielleicht erklärt der TO sein Vorhaben etwas genauer(zum Beispiel in 
welchem Bereich die beiden Frequenzen liegen).
#5064874
@ Detlef _a (detlef_a)

>> Nimm ein D-FlipFlop. Das eine Signal auf den D-Eingang, das andere auf
>> den Takt-Eingang und voila, auf Q oder Q~ hast du deine
>> Differenzfrequenz.

>Kühne Behauptung. Stimmt allerdings nicht.

Doch, wenn gleich nur mit Einschränkungen. Ich hab's mal schnell 
aufgebaut.
50 Hz aus dem Arduino, 30 Hz aus dem Funktionsgenerator.

Da kommen tatsächlich direkt 20 Hz raus ;-)

Allerdings nur, wenn das Tastverhältnis am D-Eingang nahe 50% ist (am 
Takteingang ist es beliebig, weil ja flankengesteuert).
Das Tastverhältnis am Ausgang springt dann aber ganz schön. Wenn man es 
ausreichend lange mittelt (Torzeit im Frequenzzähler), mag es 
funktionieren.
Unterhalb von 30% und oberhalb von 70% funktioniert der Trick aber nicht 
mehr, dann kommt nur noch die halbe Frequenz raus.
#5064945
Messi schrieb:
> Detlef _. schrieb:
>
>> Die 50Hz und die 30Hz XORen, das Signal in einem LC Bandpass filtern und
>> mit einem Komparator wieder ein Digitalsygnal raus machen.
>
> Wurde weiter oben bereits vorgeschlagen.
>

Wurde es nicht. Da wurde ein Tiefpass vorgeschlagen.

>>>>>>>Ich hab's mal schnell aufgebaut.

Ich auch, in Matlab. Da kommen im wesentlichen 10Hz raus und bisschen 
20Hz. Hat sich dein Frequenzzähler auf die Oberwelle eingeschossen?.

Cheers
Detlef

clear
n=2^18;
sig30=[ones(1,5) -ones(1,5)];
sig50=[ones(1,3) -ones(1,3)];
sig30=[sig30 sig30 sig30 ];
sig50=[sig50 sig50 sig50 sig50 sig50 ];
sig30=repmat(sig30,1,1000);
sig50=repmat(sig50,1,1000);
sig=ones(size(sig30));
stat=1;
for(k=2:length(sig))
 sig(k)=stat;
 if(sig30(k  )== 1)
 if(sig30(k-1)==-1)
  stat=sig50(k);
  end;end;
end;
spsig=abs(fft(sig));

plot(spsig(1:1000),'r.-')
plot(sig(1:100),'r.-')
return
#5064965
@Detlef _a (detlef_a)

>>>>>>>>Ich hab's mal schnell aufgebaut.

>Ich auch, in Matlab. Da kommen im wesentlichen 10Hz raus und bisschen
>20Hz. Hat sich dein Frequenzzähler auf die Oberwelle eingeschossen?.

Eigentlich nicht. Siehe Anhang.

Oben auf Kanal 1 die 50 Hz Abtastfrequenz, unten Kanal 3 mit den 20 Hz.
Angehängte Dateien:
Gast #5064969
Detlef _. schrieb:
> Messi schrieb:
>> Detlef _. schrieb:
>>
>>> Die 50Hz und die 30Hz XORen, das Signal in einem LC Bandpass filtern und
>>> mit einem Komparator wieder ein Digitalsygnal raus machen.
>>
>> Wurde weiter oben bereits vorgeschlagen.
>>
>
> Wurde es nicht. Da wurde ein Tiefpass vorgeschlagen.

Die Lösungen, Tiefpass & Schmitt-Triggerm bzw. Bandpass - Komparator, 
sind mir doch sehr ähnlich. Beide sind analog & unflexibel: eine 
digitale Lösung mit einem µC ist vorzuziehen.
Gast #5064987
Messi schrieb:
> Beide sind analog
Na und?
> unflexibel
Welche Flexibilität fehlt dir denn?
> eine digitale Lösung mit einem µC ist vorzuziehen.
Wer hat so etwas bei der Aufgabenstellung gefordert?

Aber natürlich geht es auch: XOR, anschließender Tiefpass und 
Schmitt-Trigger, alles in Software. Ausgangssignal 20 Hz Rechteck. Das 
ist alles in einem kleinen 8-poligen µC machbar. Dauert nur länger, als 
ein paar Bauteile zusammenzulöten. (Auch der µC muss mit Ein- und 
Ausgängen irgendwo hin gebaut werden). Die Kosten und der Platzbedarf 
würden wiederum für den µC sprechen.

DZDZ
#5064999
Hab es geschafft mich wieder einzuloggen.

Da ja nach der Anwendung gefragt wurde hier der Hintergrund.
Im letzten Jahrtausend hab ich mir mal einen analogen Verbrauchsmesser 
für Benzinmotoren gebaut.
Durchflussgeber von Conrad.
Hat sehr gut funktioniert.
Den Durchflussgeber hab ich letztes Jahr umgebaut um ein sauberes Signal 
für
eine Flowscan Verbrauchsanzeige zu bekommen.
Dieser misst den Gesamtverbrauch, digital angezeigt, und l/h analog.
Funktioniert alles.

Wenn ich jetzt Einspritzer messen will, brauch ich einen zweiten Sensor 
im Rücklauf.
Dafür brauch ich das Differenzsignal.

Danke Falk, dass du es probiert hast.
Welchen Typ hast du genommen?
Scheint ja wirklich zu funktionieren.

Meine Idee wäre jetzt folgende.
Ich nehme einen Vor/Rückwärtszähler mit Taktsignal 0,5Hz.
Als erstes wird rückwärts gezählt (Rücklauf).
Nach 1sek vorwärts. Bei erreichen der Null wird der Takt auch auf den 
Flowscan weiter geleitet.
Nach 2sek. Reset und alles wieder neu.
Somit würde nur die Differenz als kurze Bursts ausgegeben. Die analoge 
Anzeige ist träge genug.
Geht das so, oder ist das Blödsinn.

Gruß Mani
Angehängte Dateien:
Gast #5065040
Warum funktioniert die D-Flipflop Lösung bei mir bestens? Nicht 
simuliert, sondern aufgebaut? Ich bin aber auch im 500kHz Bereich tätig 
mit 50% duty cycle...
#5065081
@ Manfred H. (manfredbochum)

>Wenn ich jetzt Einspritzer messen will, brauch ich einen zweiten Sensor
>im Rücklauf.
>Dafür brauch ich das Differenzsignal.

Naja, hier bietet sich wirklich ein kleiner uC an, der kann das 2x 
messen, Differnez bilden und gut.

>Welchen Typ hast du genommen?

74HC74.

>Ich nehme einen Vor/Rückwärtszähler mit Taktsignal 0,5Hz.

Alles viel zu umständlich. Wir leben nicht mehr in den 1980ern ;-)

>Somit würde nur die Differenz als kurze Bursts ausgegeben. Die analoge
>Anzeige ist träge genug.

Was will die denn als Eingang haben? Auch ein Taktsignal?
Das kann man auch leicht mit dem uC erzeugen.
Allerdings muss man den programmieren, das kann und will halt nicht 
jeder.
#5065126
@Was will die denn als Eingang haben? Auch ein Taktsignal?

Ja, 0-12V mehr nicht.

@Allerdings muss man den programmieren, das kann und will halt nicht
jeder.

Ist ja kein Aufwand zwei Zähler und Differenz bilden.
Irgendwann fang ich auch mit Arduino an, hab ihn ja schon hier liegen.
Gast #5065135
Das musst du selber testen, ich verwende ein D-Flipflop 74HC74 um von 
einem 400kHz ein ca. 395kHz Signal zu subtrahieren, sprich die Differenz 
zu bilden. Das Ausgangssignal ist perfekt sauber (Augenmaß), ich habe 
aber bei beiden Eingängen und Ausgängen einen duty cycle von 50%.

Ausgangsfrequenz jedoch kein Augenmaß, sondern mit Digitaloszilloskop 
gemessen.

Aber warum sollte das bei 10-200Hz nicht funktionieren? Hast du einen 
duty cycle von 50% an den Eingängen?
Gast #5065559
Ok, es iat natürlich logisch, warum das bei meinen hohen Frequenzen so 
viel besser funktioniert: Desto kleiner der Unterschied zwischen den 
beiden Frequenzen ist, desto größer ist der Rundungsfehler.

Es ist ja ein digitaler Vergleich. Also wird Falks Beobachtung korrekt 
sein, dass zwar 20Hz rauskommen, aber du den Mittelwert bilden musst, 
weil bei so niedrigen Frequenzen starke Rundungsfehler auftreten.

Bei 1Hz und 3Hz z.B. kommt als Ergebnis schon 2Hz raus, jedoch in der 
Folge 1 - 0 - 0 - 1. Also nicht verwertbar. Kann man bestimmt berechnen, 
ab wann das gut funktioniert ;).

Wenn ich von 400kHz 395Khz abziehe, habe ich bei irgeneiner Flanke einen 
Rundungsfehler. Egal, sind ja 5000 Stück.
#5065618
@Nils H. (nils_h494)

>Es ist ja ein digitaler Vergleich. Also wird Falks Beobachtung korrekt
>sein, dass zwar 20Hz rauskommen, aber du den Mittelwert bilden musst,
>weil bei so niedrigen Frequenzen starke Rundungsfehler auftreten.

Das sind keine Rundungsfehler sondern Jitter.

>Bei 1Hz und 3Hz z.B. kommt als Ergebnis schon 2Hz raus, jedoch in der
>Folge 1 - 0 - 0 - 1. Also nicht verwertbar.

Aber sicher. Man muss nur über einen ausreichend großen Zeitraum 
mitteln, sprich, viele Perioden betrachten. Wenn man nur eine Periode 
genau messen will, muss man vorher filtern.
Moderator (Firma: Titel) Persönliche Seite #5065640
Mani schrieb:
> Habe da mal eine Frage.
> Ich habe 2 Rechtecksignale z.B. 30Hz und 50Hz.
> Gibt es eine Möglichkeit diese mit normalen Digital Ics zu mischen?
> Gebraucht wird die Differenz von 20Hz.
Ich würde die erste Frequenz messen und die zweite Frequenz messen und 
dann rechnen:
differenz = abs(frequenz1-frequenz2);

Aber die hier gestellte Aufgabe ist eigentlich eine andere:
Es muss nicht eine bestimmte Frequenz erzeugt werden, sondern eine 
korrekte Anzahl von Pulsen.
Und deshalb würde ich einfach einen Nachlaufzähler implementieren:
Jeder Puls vom "Zulauf" zählt den Zähler hoch. Jeder Puls vom "Rücklauf" 
zählt den Zähler runter. Wenn nichts verbraucht wurde, ist der Zähler am 
Ende des Tages 0.
Und jetzt kommt ein dritter Zähler, der zählt, wie viele Impulse schon 
an die Anzeige weitergegeben wurden, und das bei Bedarf nachregelt.

Manfred H. schrieb:
> Meine Idee wäre jetzt folgende.
> Ich nehme einen Vor/Rückwärtszähler mit Taktsignal 0,5Hz.
> Als erstes wird rückwärts gezählt (Rücklauf).
> Nach 1sek vorwärts. Bei erreichen der Null wird der Takt auch auf den
> Flowscan weiter geleitet.
> Nach 2sek. Reset und alles wieder neu.
> Somit würde nur die Differenz als kurze Bursts ausgegeben.
Du denkst im falschen Programmierstil: "erst das Eine, dann das Andere, 
dann das Dritte...". In der Praxis muss das gleichzeitig passieren. 
Und das ist mit dem richtigen Programmierstil auch kein größerer 
Aufwand:
ca. 30 Zeilen C-Code dürften locker reichen...
#5065658
Manfred H. schrieb:
> eine Flowscan Verbrauchsanzeige zu bekommen.
> Dieser misst den Gesamtverbrauch, digital angezeigt, und l/h analog.

Diese Anzeige wird vermutlich schon einen MC enthalten, den man nur 
entsprechend umprogrammieren muß.
Und die analoge Ausgabe kann der MC gleich nebenbei als PWM machen.
Ist der C-Quelltext für die Anzeige verfügbar?
#5065746
@Lothar,

Software seitig hast Du natürlich Recht.
Würde ich auch so machen.
Meine Idee war ja für Hardware gedacht.

@Peter,

Ich glaube kaum dass die Firma den Code ihrer Geräte raus gibt.
Das funktioniert ja auch alles.
Es ging nur um die Berücksichtigung eines zweiten Sensors.
Das Fertiggerät hat nur einen Eingang.

Gruß Mani
Gast #5066444
Hallo,

wenn ich richtig lese, dann soll die Differenzfrequenz von 2 nicht 
korrelierten Signalen erzeugt werden. Da muß doch erst einmal die 
Frequenz beider Signale ermittelt werden. Mit XOR oder FF bekommst du 
doch beliebige "Differenzen", aus denen du kaum die gewünschte Frequenz 
herausfiltern kannst. Ich könnte mir vorstellen, dass man zuerst beide 
Signale mit einer PLL synchronisiert und dann klappt auch XOR und Co.
Vielleicht liege ich aber auch falsch mit meiner Vermutung...

Gruß Rainer
Gast #5066708
Lothar M. schrieb:
> Aber die hier gestellte Aufgabe ist eigentlich eine andere:
> Es muss nicht eine bestimmte Frequenz erzeugt werden, sondern eine
> korrekte Anzahl von Pulsen.

Habe das gerade erst gelesen...die Fragestellung des TO suggeriert eben 
etwas ganz anderes! Natürlich kann man die Differenz von 2 
Durchflußmessern durch einfaches Zählen bestimmen.

Gruß Rainer

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.