Wie kann ich (z.B. mit einem uC) die halbe Frequenz eines sinusförmigen
Eingangssignals erzeugen? Die doppelte Frequenz erhält man bekanntlich
durch Mischen mit sich selbst, aber wie geht das beim Halbieren?
Die Frequenzen liegen im Bereich von 50kHz - 100kHz und können mit einem
AD-Wandler bis 10 MHz erfasst werden. Gedacht sind etwa 1 MHz, damit der
Controller es noch verarbeiten kann.
Gibt es alternativ eine Analogschaltung, die das kann? Ich habe den
Bereich abgesucht, aber nichts gefunden. Geht es gfs durch
Heruntermischen? Dazu braucht man nach meinem Verständnis eine Frequenz
mit Faktor 1,5 - wie kann ich die erzeugen?
Bislang hätte ich nur die digitale Variante, nämlich das Signal per
Schmitt-Trigger rechteckig zu machen und dann binär zu teilen mit FFs
oder so und dann wieder einen Sinus zu machen. Das scheitert aber daran,
dass ich die Frequenz nicht genau kenne. Das neu erzeugte Signal soll
mit einer AC-Kopplung übertragen werden von daher muss es sinusfärmig
und oberwellenfrei sein. Etwas Verzerrung und Phasenverschiebung wäre in
Ordnung.
Frank Petelka schrieb:> Die Frequenzen liegen im Bereich von 50kHz - 100kHz und können mit einem> AD-Wandler bis 10 MHz erfasst werden. Gedacht sind etwa 1 MHz, damit der> Controller es noch verarbeiten kann.
Wenn du weißt das das Signal Sinusförmig ist kannst du die Frequenz
messen und einen Sinus mit halber Frequenz neu erzeugen.
In Hardware geht das mit einem f/U Wandler, einem Spanungsteiler und
einem U/f Wandler der Sinus macht bzw einem VCO oder mittels DDS
Frank Petelka schrieb:> Die Frequenzen liegen im Bereich von 50kHz - 100kHz> muss es sinusfärmig und oberwellenfrei sein.
Falls oberwellenarm reicht:
Schmitt-Trigger, Teiler : 2, und hintendran ein steiles Tiefpassfilter
mit ca. 100 kHz Grenzfrequenz.
Butzo
Wenn du das 50-100kHz Signal mit 1Msps sampelst, kannst du direkt eine
Spannung ausgeben (D/A Wandler) die einen Sinus der halben Frequenz zu
der Zeit entspricht.
Dazu brauchst du eine Tabelle, welche Eingangsspannung welche
Ausgangsspannung erzeugt unter einer von 4 Voraussetzungen: Positive
Halbwelle ergibt steigenden Flanke über 0V, negative Halbwelle ergibt
fallende Flanke über 0V, nächste positive Halbwelle ergibt weiter
fallende Flanke unter 0V und nächste negative Halbwelle ergibt steigende
Flanke unter 0V.
Bei schwankender Eingangsspannung kann man Maxima und Minima der letzten
Sinusschwingung als 100% Referenz für die nächste verwenden.
Allerdings hast du bei 1Msps nur 1us Zeit, das umzurechnen. Das
erfordert einen schnellen uC, besser einen DSP. Da kein wesentlicher
Speicher nötig ist, und du scheinbar sowieso A/D und D/A Wandler
brauchst, könnte ein ADuC7019 eine angemessene Lösung sein (Auflösung 12
bit).
Frank Petelka schrieb:> Wie kann ich (z.B. mit einem uC) die halbe Frequenz eines> sinusförmigen> Eingangssignals erzeugen?
...
> Gibt es alternativ eine Analogschaltung, die das kann?
Ich würde vermuten, dass nicht. Analog kann man leicht Oberwellen
erzeugen, aber nichts mit niedrigerer Frequenz.
oszi40 schrieb:> X4U schrieb:>> mit halber Frequenz neu erzeugen.>> phasenstabil? Regelzeit=?
IMHO beides 1 Halbwelle die dann invertiert werden kann. Aber ich kien
Signaltheorieguru
Es gibt doch solche Sprachprozessoren, die die Stimme eine Oktave runter
rechnen. Ich bin nicht sicher, wie die funktionieren, aber vlt wäre das
ein Ansatz.
Bevor es digitale Frequenzteiler gab, haben "Elektronenorgeln" das auch
irgendwie mit synchronisierten Sägezahnoszillatoren hinbekommen.
So einen Sprachfrequenz-Shifter hab ich mal von ELV als Bausatz gekauft.
Leider wird der Chip nicht mehr hergestellt.
Max H. schrieb:> Vllt. lässt sich mit einer PLL (z.B. 74HC4046) was machen.
Hallo
Nicht vielleicht, sondern ganz bestimmt.
Eine Frequenz lässt sich digital teilen und das dann mittels einem PLL
IC und einem VCO als Sinussignal erzeugen.
Eine AM-Modulation müsste neu stattfinden, oder ersatzweise eine
Mischung stattfinden.
MfG
Matthias
Frank Petelka schrieb:> Die doppelte Frequenz erhält man bekanntlich durch> Mischen mit sich selbst, aber wie geht das beim> Halbieren?
Genauso, aber "kopfstehend": PLL, Frequenzverdoppler
zwischen VCO und Phasencomparator --> VCO liefert genau
die halbe Frequenz.
Das Problem dieser Lösung besteht in dem VCO, der ja
Sinussignal liefern soll. Das geht, ist aber relativ
viel Aufwand. Es gibt (mindestens) zwei rein analoge
Lösungen für das Problem. Details auf Nachfrage.
> Bislang hätte ich nur die digitale Variante, nämlich> das Signal per Schmitt-Trigger rechteckig zu machen> und dann binär zu teilen mit FFs oder so und dann> wieder einen Sinus zu machen. Das scheitert aber daran,> dass ich die Frequenz nicht genau kenne.
Wenn der Bereich 50kHz - 100kHz mit Sicherheit eingehalten
wird, ist das kein Problem. Butzos Idee geht in die richtige
Richtung.
Der zentrale Trick besteht darin, dass ein Rechtecksignal
mit Tastgrad von genau 0.5 die zweite Harmonische nicht
enthält; die niedrigste Harmonische ist die dritte. Der
Bereich der Grundwelle, die Du ja haben willst, geht, wenn
das Originalsignal zwischen 50kHz und 100kHz liegt, im
geteilten Signal von 25kHz bis 50kHz. Die dritte Harmonische
(des geteilten, also rechteckförmigen Signals) liegt
logischerweise im Bereich 75kHz bis 150kHz. Der Tiefpass
muss also alles bis 50kHz durchlassen und ab 75kHz schon
kräftig sperren. Das sind zwar sportliche Anforderungen,
aber mit Filtern höherer Ordnung machbar. Halte ich für
realistisch.
> Das neu erzeugte Signal soll mit einer AC-Kopplung> übertragen werden von daher muss es sinusfärmig> und oberwellenfrei sein. Etwas Verzerrung und> Phasenverschiebung wäre in Ordnung.
An Phasenverschiebung wird bei Filtern hoher Ordnung kein
Mangel sein ;-)
Die zulässigen Verzerrungen müsstest Du mal in Zahlen fassen.
Aus dem Bauch heraus: 5% Klirrfaktor sollte kein Probblem
sein, aber 0.1% Klirrfaktor wäre sehr... "ambitioniert"...
Hallo,
wenn sich das Signal nicht allzuschnell verändert:
Du sampelst den Original-Sinus mit n facher Frequenz (PLL) und gibst die
erfassten Werte mit der halben Frequenz wieder aus. Das hat den
Nachteil, dass du damit erst nach 2 Vollwellen des Originals fertig
bist, machst du dann so weiter, wird praktisch jede 2 Vollwelle im neuen
Signal abgebildet. Der Vorteil ist, das gilt auch für andere
Kurvenformen als Sinus.
Mit enstprechendem Aufwand kann man noch weitergehen und immer 2
Vollwellen erfassen, den Durchschnitt bilden und das als neue Vollwelle
halber Frequenz ausgeben. Besser dürfte das nicht gehen; wenn die
aufeinanderfolgenden Vollwellen völlig verschieden sind, gibt es keine
Lösung diese Information zu erhalten (kann es nicht geben).
Das Ganze ist natürlich weit entfernt von analog.
Georg
Das muss ich mir jetzt alles in Ruhe mal durchlesen. Vorab die Info:
Das Signal ändert sich eigentlich ständig ein wenig, z.B. bewegt es sich
innerhalb einiger 10/tel von 60kHz auf 70kHz und schwingt auch. Sampeln
und neu erzeugen wir daher schwierig. Eine PLL wäre wahrscheinlich zu
langsam.
mse2 schrieb:>> Gibt es alternativ eine Analogschaltung, die das kann?> Ich würde vermuten, dass nicht. Analog kann man leicht Oberwellen> erzeugen, aber nichts mit niedrigerer Frequenz.
Meine Antwort war wenig fundiert, wie ich zugeben muss. (War zu heiß
gestern...).
Zwei Dinge, die das Gegenteil beweisen, wurde schon genannt:
PLL und Synchronisation.
Sorry!
Klaus Butzmann schrieb:> Frank Petelka schrieb:>>> Die Frequenzen liegen im Bereich von 50kHz - 100kHz>> muss es sinusfärmig und oberwellenfrei sein.> Falls oberwellenarm reicht:> Schmitt-Trigger, Teiler : 2, und hintendran ein steiles Tiefpassfilter> mit ca. 100 kHz Grenzfrequenz.> Butzo
Bzgl. Frequenztreue gibt es doch keine bessere Lösung. Und man braucht
noch nicht mal eine MCU. Und die Verzerrungsfreiheit kann man komplett
mit dem Tiefpaß so einrichten wie man es braucht. Ungerade
Teilerverhältnisse kann man mit einem Zähler erreichen, nur gebrochene
Teilerverhältnisse werden etwas schwieriger (Teiler + Zähler).
- Sinus zu Rechteck (div. Möglichkeiten)
- aufsteigende Flanke lädt Integrator (Operationsverstärker)
- nächste aufsteigende Flanke entlädt Integrator
Resultat: Oberwellenarme Dreieckschwingung mit halber Frequenz.
Vielleicht schon ausreichend.
Wenn nicht: mit ein paar Dioden einen Sinus-Shaper basteln.
Achtung: Amplitude sinkt mit zunehmender Frequenz. Könnte aber
kompensiert werden.
Christoph Kessler (db1uq) schrieb:> Bevor es digitale Frequenzteiler gab, haben "Elektronenorgeln" das auch> irgendwie mit synchronisierten Sägezahnoszillatoren hinbekommen.
Das ging aber deshalb so einfach, weil die Frequenz bekannt war und die
Sägezahnoszillatoren einen eindeutigen Knickpunkt- sowie eine definierte
Amplitude haben.
> So einen Sprachfrequenz-Shifter hab ich mal von ELV als Bausatz gekauft.> Leider wird der Chip nicht mehr hergestellt.
Die meisten Audio-Prozessoren, auch die preiswerten mit dem Grossen B.
können das. Teilweise geschieht es durch resampling, teilweise durch
scattering. Rolands (weitgehend) formantenunabhängige
Varipphrasetechnologie kann das noch am Besten. Die scheinen über eine
iFFT zu arbeiten.
Zur eigentlichen Frage:
Grundsätzlich funktioniert die kontinuierliche Teilung der Frequenz
durch 2 mit einer Wurzelbildung, aber man muss den Mittelwert der
Eingangsfrequenz kennen und zuvor addieren. Ferner muss wie bereits
angesprochen das Vorzeichen manuell wiederhergestellt werden. Das geht
bei DDS-basierten Sinusoszillatoren, bei denen die Amplitude bekannt
ist, sehr gut. Bei einigen Musiksynthesizern wird das so gemacht. Nennt
sich "SUB-Oszillator" und reagiert folglich auch auf das Vibrato und
Pitching. Bei variablen Eingangsamplituden gibt es immer ein
Nullpunktdetektions- und Durchtrittsproblem beim Vorzeichenwechsel, der
zu geringen Phasensprüngen führt, die weggefiltert werden müssen. Daher
eignet sich sowas eigentlich so richtig gut nur als Effekt, z.B. für
E-Gitarren. Hier hatte ich ja mal so etwas gepostet:
Beitrag "VHDL-Effektgerät für Gitarre und andere Instrumente"
Das hat auch einen Frequenzverdoppler drin. Der hat aber dasselbe
Problem: Wenn die Amplitude nicht konstant ist gemacht wird, braucht es
eine dynamische Regelung des BIAS und die ist immer unvollkommen,
wodurch es Zufallseffekte gibt. Die sind in dem Fall aber erwünscht ;-)
Beides, Verdopplung und Halbierung klappt so richtig perfekt nur für die
jeweils fokussierte Frequenz. Jede Oberwelle macht ein
Nulldurchgangsproblem, was ein wenig durch eine intelligente
Nulldurchgangserkennung auf der Basis einer Differentiation kompensiert
werden kann. Dann kommt aber das Rauschen des Signals ins Spiel und es
muss vorgefiltert werden.
Jürgen Schuhmacher schrieb:> Grundsätzlich funktioniert die kontinuierliche Teilung der Frequenz> durch 2 mit einer Wurzelbildung, aber man muss den Mittelwert der> Eingangsfrequenz kennen und zuvor addieren.
Daran scheitert es bei mir. Der Mittelwert ist nicht bekannt und müsste
erst erzeugt werden.
OPV übersteuern -> Rechteck mit Orginalfrequenz
Positive Flanke über Diode auf RC Glied mit entsprechender Auslegung.
Ergibt nicht direkt Sinus ohne Schwingkreis, aber um Frequenz abzutasten
ausreichend.
Einseitenbandsender werden gelegentlich nach dem "Verfahren der
Hüllkurven-Elimination und -Restoration" gebaut. Das Signal wird in
Frequenz- und Amplitudeninformation aufgespalten, getrennt verarbeitet
(z.B. die Frequenz vervielfacht) und dann wieder zusammengeführt. So
könnte man auch Frequenzen herunterteilen.
Höre ich richtig, Verfielfachen ist für dich kein Problem?
Bei Sinus ginge es dann (theoretisch) ganz einfach:
1) Frequenz mit dem Faktor N vervielfachen
2) Nach Rechteckformung damit einen D/A-Wandler
takten, der nacheinander den sin(360°/2N) ausgibt.
3) Danach ist noch ein Kompromiss aus Filterung
(Phasenverschiebung) und zulässigen Verzerrungen zu suchen.
Possetitjel schrieb:> Es gibt (mindestens) zwei rein analoge> Lösungen für das Problem. Details auf Nachfrage.
Ich frage hiermit mal förmlich an, falls Du noch mitliest!
Wäre nett, wenn Du das erläutern könntest.
Danke.
Paul B. schrieb:> Das Signal ändert sich eigentlich ständig ein wenig, z.B. bewegt es sich> innerhalb einiger 10/tel von 60kHz auf 70kHz und schwingt auch. Sampeln> und neu erzeugen wir daher schwierig. Eine PLL wäre wahrscheinlich zu> langsam.
Warum sollte hier ne PLL zu langsam sein?
nur so eine Idee:
Ein Rechteck aus dem Signal machen und durch zwei teilen. Zusätzlich mit
einer PLL ein vielfaches der Signalfrequenz erzeugen und damit ein
Switched Capacitor Filter ansteuern, das aus dem geteilten
Eingangssignal wieder einen Sinus macht. Die Grenzfrequenz des Filters
passt sich damit automatisch der Eingangsfrequenz an. Ich denke da an
MAX296 oder ähnliches.
MfG Klaus
Aus dem Bauch heraus vielleicht so:
Einen Samplepuffer einrichten, der mindestens eine komplette Welle des
Eingangssignals aufnehmen kann, also z.B. bei 50kHz und 1Msps: min. 20
Samples.
Ausgabe der halben Frequenz durch Wiedergabe des Signals aus dem
Samplepuffer mit der halben Samplerate.
Algorithmus beim Samplen: im Nulldurchgang der positiven Signalflanke
wird der aktuelle Inhalt des Schreibzeigers gespeichert (X) und der
Zeiger auf Pufferanfang zurückgesetzt. Im Puffer befindet sich dann
immer eine komplette Periode des Signals.
Der Samplepuffer wird mit der halben Samplerate (Anfang bis X)
ausgelesen und per DA-Wandler ausgegeben.
Wenn ich das richtig verstanden habe, ergibt sich dann aber kein
kontinuierlicher Sinus wenn die Signalperiode des Eingangssignals
schwankt.
Wenn das Eingangssignal in der Frequenz sinkt, bleibt die Spannung
erstmal bei 0 bis die nächste Sync kommt.
Wenn das Eingangssignal in der Frequenz steigt...wird eine komplette
Halbwelle ausgelassen? Bis zur nächsten Sync im Nulldurchgang? Bin mir
dabei nicht sicher.
Das Samplen ist eh Overkill, weil man weiss ja dass es ein Sinus ist.
Für minimale Verzerrungen ist die f/U U/f Variante vermutlich die Beste.
Aber nach über 2 Jahren ist vom T0 wohl auch keine Klärung mehr zu
erwarten, was er denn nun getan hat.
Hallo
Es gab vor vielen Jahren mal ein Projekt, ich glaube bei Elektor, wo der
Lautsprecherausgang des PCs (nicht der von der Soundkarte) mittels PLL
einen XR-2206 angesteuert hat. Dadurch wurde ein relativ beliebeiger
Rechteck in einen Sinus "gewandelt".
Wenn Du jetzt also deinen ursprünglichen Sinus per Komparator zum
Rechteck machst, den dann per FF durch zwei teilst, das ganze dann per
pll auf den VCO-Eingnga des XR-2206 gibst, müßte sich das realisieren
lassen.
Das war damals als Meßgerät für Lautsprecherboxen gedacht. Ich muß mal
schaun, ob ich da noch Unterlagen dazu finde.
Gruß Ulf
Ulf schrieb:> Wenn Du jetzt also deinen ursprünglichen Sinus per Komparator zum> Rechteck machst
Brauchst du nicht, der 2206 hat einen Rechteckausgang parallel zum
Sinusausgang.
Das ist aber die klassische, schon genannte Variante mit einer PLL,
einem Teiler und einem Sinus-VCO.
HildeK schrieb:> Ulf schrieb:>> Wenn Du jetzt also deinen ursprünglichen Sinus per Komparator zum>> Rechteck machst>> Brauchst du nicht, der 2206 hat einen Rechteckausgang parallel zum> Sinusausgang.> Das ist aber die klassische, schon genannte Variante mit einer PLL,> einem Teiler und einem Sinus-VCO.
Es muß seinen ursprüngliche Sinus zum Rechteck wandeln um den per FF
durch 2 zu teilen. Der Rechteckausgang vom 2206 hilft in dem
Zusammenhang erst mal nicht.
Gruß Ulf
Rolf S. schrieb:> Possetitjel schrieb:>>> Es gibt (mindestens) zwei rein analoge>> Lösungen für das Problem. Details auf Nachfrage.>> Ich frage hiermit mal förmlich an, falls Du noch> mitliest!>> Wäre nett, wenn Du das erläutern könntest.
Es ging ja um einen VCO, der Sinus liefern und von
50kHz bis 100kHz abstimmbar sein soll.
Mir fallen zwei praktikable Lösungen ein:
1) Ein RC-Generator (Dreieck-Rechteck-Generator) mit
Diodennetzwerk zur Sinusformung oder
2) das Prinzip "Schwebungssummer", d.h. ein hochwertiger
Sinus-Festfrequenzoszillator (z.B. LC-Oszillator),
ein C-Dioden-abgestimmter LC-Oszillator, ein Mischer
und ein Filterverstärker.
Lösung 2) traue ich nahezu perfekte Signale zu; allerdings
ist sie auch sehr aufwendig.
Lösung 1) hat den Vorteil, dass sich aus dem Dreieck leicht
die verdoppelte Frequenz erzeugen lässt, die in der PLL
benötigt wird.
Oder wolltest Du noch etwas ganz anderes wissen?
Auch uuuuralte Threads werden später noch tausendfach "gefunden", und
nützen unzähligen Bastlern, die nur lesen, und sich nicht über jede
Kleinigkeit schriftlich echauffieren.
SGND schrieb:> Auch uuuuralte Threads werden später noch tausendfach "gefunden", und> nützen unzähligen Bastlern, die nur lesen, und sich nicht über jede> Kleinigkeit schriftlich echauffieren.
Eben, leider neigen hier nicht wenige dazu, unqualifiziert dazwischen zu
tönen. Bringt aber niemanden weiter.