Niederfrequenz-Sinusgenerator

Ich möchte einen Sinusfrequenzgenerator bauen, der über ein Arduino gesteuert werden kann. Die Sinusfrequenz würde im Niederfrequenzbereich (unter 100 Hz) mit einer Spannung von etwa 2,5 Volt von Spitze zu Spitze liegen.

Ich muss das SPI-Schnittstellen -SPI-Tutorial für andere Zwecke an meinem Arduino verwenden. Daher ist ein externer IC, der über SPI gesteuert werden kann, nicht machbar.

Außerdem möchte ich die DDS-Möglichkeit (Digital Direct Synthesis) vermeiden, da ich die Frequenzerzeugung auslagern möchte.

Vielleicht sollte die Sinuserzeugung also mit einigen der Standardoszillatoren wie Wienbrücke usw. erfolgen.

Kann mir jemand einen Link für eine Schaltung geben, die meine Anforderungen erfüllt und die mit einem Arduino Uno gesteuert werden kann?

Mit Kontrolle meine ich:

  1. An aus
  2. Häufigkeit (kein Muss, aber nice to have)
  3. Amplitude

Mit "Ich möchte die Frequenzerzeugung auslagern" meine ich: Halten Sie die Programmierlogik in Arduino von zu vielen Dingen sauber, die ein dediziertes Gerät besser kann. Wenn ich Hardware anstelle von Software verwende, erwarte ich ein weniger fragiles Setup in Bezug auf das Timing. Wenn andere zeitkritische Erweiterungen auftauchen, habe ich mehr "Headroom" für sie.

Was meinst du mit kontrolliert? Ein/Aus, Frequenz, Amplitude? Was hast du versucht?
Durch die Verwendung des Slave-Select-Pins können Sie die Anzahl der Geräte auf Ihrem SPI-Bus einfach erweitern oder ein Software-SPI bitbangen. Die Verwendung von SPI sollte meiner Meinung nach keine Einschränkung darstellen. Was meinst du mit "Ich möchte die Frequenzerzeugung auslagern"?
@ user2145488: Ich bin mit linearen Oszillatoren vertraut, aber nicht mit Arduino. Daher meine Frage: Welchen Oszillator braucht man? Einzelelement spannungsgesteuert? Etwas anderes?
@jippie: Ich dachte, dass wegen circuitsathome.com/mcu/… diese Lösung auch nicht ratsam ist. Habe ich diesen Link falsch verstanden?
@LVW Es könnte ein Wien-Brücken-Oszillator oder ein Phasenverschiebungs-Oszillator sein. Oszillatoren mit LC-Gliedern möchte ich vermeiden, da Spulen ("L") für mich nicht sehr praktikabel erscheinen. Soweit ich das verstanden habe, liefert ein spannungsgesteuerter Oszillator / Funktionsgenerator keinen Sinusausgang, oder irre ich mich?
@ user2145488: Der kritische Punkt ist, wenn Sie eine externe Steuerung der Oszillationsfrequenz mit nur einem einzigen Element benötigen - und ohne den Oszillationszustand zu stören. Eine solche Anforderung verkürzt die Anzahl der Oszillatoralternativen drastisch.
@LvW: also die Kontrolle der Frequenz ist kein Muss. Aber die Kontrolle über die Ausgangsspannung ist wichtig
@ user2145488: Die Ausgangsspannung eines Sinusoszillators wird durch den notwendigen Mechanismus bestimmt, der die Verstärkung automatisch begrenzt (Amplitudenstabilisierung). Daher ist es ratsam, einen Oszillator mit fester Amplitude und einen Verstärker mit variabler Verstärkung zu verwenden. Sie können im Prinzip jedes der bekannten Oszillatorprinzipien (WIEN, Phasenverschiebung, Integrator-basiert, ...) verwenden, aber - wie bereits erwähnt - Einzelelement-Frequenzabstimmung ist ein Problem. Falls erforderlich, müssen Sie eine der Zwei-Opamp-Oszillatortopologien verwenden (Aktivfilter-basiert, GIC-basiert, ...).

Antworten (2)

Haben Sie darüber nachgedacht, eine Nachschlagetabelle mit Sinus-Winkel-Werten und DAC (Digital-Analog-Wandler) zur Erzeugung des analogen Ausgangs zu verwenden? Keine Weinbridge- oder RC-Shift-Oszillatoren erforderlich. Dies reduziert die Anzahl Ihrer Teile und schafft ein elegantes, vereinfachtes, präzises , digital gesteuerter Oszillator. Gehen Sie einfach mit der gewünschten Rate durch die Lookup-Tabelle, um die Frequenz zu steuern. Sie können einen Tiefpassfilter hinzufügen, um den DAC-Ausgang zu glätten und harmonische Verzerrungen zu reduzieren. Eine Lookup-Tabelle kann für 1/4 erstellt werden des Zyklus, um den zum Speichern von Werten für den ersten Quadranten ( 0 90 ). Verwenden Sie dann Symmetrie bei 90 um den 2. Quadranten zu bauen ( 90 180 ). Wiederholen Sie schließlich den 1. und 2. Quadranten mit Inversion, um den 3. und 4. Quadranten zu bilden ( 180 360 ). Damit ist ein Zyklus abgeschlossen. Höhere Auflösung wird mit höherem Bit-DAC erreicht. Bei max. Frequenz von 100 Hz, sollten Sie kein Problem haben, einen DAC zu finden, der die Arbeit erledigt. Erstellen Sie die Werte der Nachschlagetabellen von Hand (fehleranfällig) oder verwenden Sie die ersten Terme der Taylor-Reihenerweiterung der Sinusfunktion, zum Beispiel:

Sünde ( X ) = X X 3 / 3 ! + X 5 / 5 ! X 7 / 7 ! + . . .

Die ersten 3 oder 4 Terme sollten eine gute Annäherung an den Sinus des Winkels ergeben. N ! bedeutet n-faktoriell, zB 5 ! = 5 × 4 × 3 × 2 × 1 . Sie können also die Gleichung tatsächlich im Code programmieren und Werte für jeden Winkel zwischen 0 und 90 in den Speicher laden. http://en.wikipedia.org/wiki/Sine

OP möchte DDS vermeiden und einen externen Frequenzgenerator haben
Diese Links scheinen mir einen schlechten Einfluss auf das Timing des Arduino zu haben (sie induzieren Zeitkritikalität in meinem Code). Außerdem sind einige auch nicht mit dem Arduino Uno verwandt ...