Forum: Mikrocontroller und Digitale Elektronik Differenzbildung zweier Rechtecksignale


von Mani (Gast)


Lesenswert?

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

von Mani (Gast)


Lesenswert?

Noch was,

es gibt keine feste Phasenbeziehung zwischen den Eingangssignalen.

von Christian S. (roehrenvorheizer)


Lesenswert?

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ß

von Falk B. (falk)


Lesenswert?

@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.

von Falk B. (falk)


Lesenswert?


von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Jedes EXOR macht diese Mischung. Aber wie bei jedem Mischer entstehen 
(spektral betrachtet) Differenz- und Summenfrequenz mit gleicher 
Amplitude. Ein Tiefpass filtert die 80 Hz weg, anschließend noch ein 
Schmitt-Trigger um wieder ein Rechteck zu bekommen.

: Bearbeitet durch User
von Messi (Gast)


Lesenswert?

Im NF-Bereich ist ein keiner µC die Lösung: f1 & f2 messen und die 
Differenz bilden. Da spart man sich Filter & Co.

von Philipp K. (philipp_k59)


Lesenswert?

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?

von fft (Gast)


Lesenswert?

Messi schrieb:
> Im NF-Bereich ist ein keiner µC die Lösung

LOL

jetzt ernsthaft?

von Messi (Gast)


Lesenswert?

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.

von THOR (Gast)


Lesenswert?

fft schrieb:
>

Also ich nehme dich nicht ernst, hoffe das beantwortet deine Frage.

von 4046 (Gast)


Lesenswert?

Für analoge Anwendungen gibt es ein fertiges Ringmodulator IC LM1496.

von Nils (Gast)


Lesenswert?

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.

von Fleischfresser (Gast)


Lesenswert?

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.

von Mani (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@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.

von Detlef _. (detlef_a)


Lesenswert?

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

von Messi (Gast)


Lesenswert?

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).

von Falk B. (falk)


Lesenswert?

@ 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.

von Erich (Gast)


Lesenswert?

Hier ein ähnlicher Beitrag,
es bleibt aber unklar welche Lösung / Schaltung letztendlich die bessere 
war.
Beitrag "Zwei Rechtecksignale mischen"
Beitrag "Re: Zwei Rechtecksignale mischen"

von Detlef _. (detlef_a)


Lesenswert?

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

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

@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.

von Messi (Gast)


Lesenswert?

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.

von Christian S. (roehrenvorheizer)


Lesenswert?

Hallo,

das hierfür notwendige LC-Filter aus Spulen mit Ferrit- oder Eisenkern 
dürfte für sich bereits eine anspruchsvolle Entwickung sein, aus deren 
umfassender Beschreibung man noch einiges lernen könnte.

Mit freundlichem Gruß

von Der Zahn der Zeit (Gast)


Lesenswert?

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

von npn (Gast)


Lesenswert?

Detlef _. schrieb:
>> Wurde weiter oben bereits vorgeschlagen.
>>
>
> Wurde es nicht. Da wurde ein Tiefpass vorgeschlagen.


Nicht? Und was ist das hier?

Falk B. schrieb:
> https://de.wikipedia.org/wiki/Mischer_(Elektronik)...
>
> Hmm, oder doch eher XOR statt AND?

Christoph K. schrieb:
> Jedes EXOR macht diese Mischung.

Überlesen?

von Manfred H. (manfredbochum)


Angehängte Dateien:

Lesenswert?

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

: Bearbeitet durch User
von Nils (Gast)


Lesenswert?

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...

von Mani (Gast)


Lesenswert?

Hallo Nils

Könntest du das mal mit f1 10-200 Hz und f2 10-190Hz probieren?
F2 muss immer kleiner sein, da es den Rücklauf simuliert.

Gruß Mani

von Falk B. (falk)


Lesenswert?

@ 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.

von Manfred H. (manfredbochum)


Lesenswert?

@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.

: Bearbeitet durch User
von Curby23523 N. (Gast)


Lesenswert?

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?

von Mani (Gast)


Lesenswert?

50% werd ich realisieren können.
Danke für den Tipp.

von Curby23523 N. (Gast)


Lesenswert?

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.

von Falk B. (falk)


Lesenswert?

@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.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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...

von Peter D. (peda)


Lesenswert?

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?

von Manfred H. (manfredbochum)


Lesenswert?

@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

von Falk B. (falk)


Lesenswert?

Naja, wenn's wirklich nur um die Differenzfrequenz geht ist ein 
einfaches 74HC74 nun weiß Gott kein Aufwand! Da muss man auch nicht 
krampfhaft einen uC nutzen!

von Rainer V. (Gast)


Lesenswert?

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

von Falk B. (falk)


Lesenswert?

@ Rainer Von römer (mikrozip)

>Vielleicht liege ich aber auch falsch mit meiner Vermutung...

Das tust du ;-)

Beitrag "Re: Differenzbildung zweier Rechtecksignale"

von Rainer V. (Gast)


Lesenswert?

Falk B. schrieb:
> Das tust du ;-)
>
> Beitrag "Re: Differenzbildung zweier Rechtecksignale"

Aber da beschreibst du doch genau das, was ich gesagt habe!?

von Rainer V. (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.