Tragbarer Funktionsgenerator auf Basis des AD9833
Hallo,
Ich entwickle zur Zeit einen tragbaren ( Akku Betrieb ) Funktionsgenerator auf Basis einer AD9833 Breakout Platine.
Als Controller kommt ein AVR32DB32 Controller zum Einsatz.
Als IDE verwende Ich Microchip Studio ( Ehemals ATMEL Studio ).
Geplant ist ein 128x64 OLED Display.
Ein 128 x 64 LCD Matrix Display wäre zwar günstiger, ist aber langsam, stromhungrig ( Hintergrundbeleuchtung ) und vom Ablesewinkel her schlechter.
Als Eingabegerät soll ein kleiner Kreuzjoystick mit 2 Tasten zum Einsatz kommen ( Es könnten aber auch 6 Tasten werden ).
Die Kurvenformen Sinus, Dreieck und Rechteck + Rechteck TTL werden ausgegeben.
Ausgangsspannung wird etwa 7Vss mit einstellbarem gleichspannungs Offset sein ( Mal gucken, was der OP-AMP her gibt.
Als Modulationsarten sind FM mit einer Modulationsfrequenz bis 1kHz und AM bis 2kHz geplant.
Bei AM Modulation kommt evtl. noch ein Audio Eingang hinzu, der direkt auf den Modulator einwirkt.
Damit könnten dann Lanwellen und Mittelwellen Empfänger getestet werden.
Phasenmodulation wäre durch den Chip auch möglich, macht aber IMHO bei dem nutzbaren Frequenzband keinen Sinn.
Eine Sweepfunktion gibt es auch, die wird in 12Sekunden ein eingestelltes Band durchlaufen.
Als Sweepbänder hab Ich vorgefertigte vorgesehen, kann aber jederzeit erweitert und frei einstellbar gemacht werden.
Mehrere Audio Sweepbänder, ein oder mehrere Bänder für 400 bis 550 kHz ZF Filter sind vorgesehen.
Als Stromversorgung habe Ich 2 x 18650 LiIon Akkus vorgesehen.
Intern sind 2 x 5V Stromversorgungen geplant, an der ersten ( analog LowDrop ) soll der AD9833 und der AVR32DB32 hängen, an der zweiten wird ein DC/DC wandler mit +- 5V Ausgang für die Operationsverstärker nachgeschaltet. Dadurch könnte man dann problemlos die Versorgungsspannungen für die OP-Amp's vergrößern.
Als Ladeschaltung werd Ich eine fertige Platine mit USB Anschluss verwenden, die man bei Ebay günstig bekommt.
Wieso das Ganze:
Ich möchte ein tragbares autonomes Gerät, das ohne Stromanschluss oder Powerbank funktioniert.
Im Gerätemarkt hab Ich, ausser Einfachstgeräten, nichts passendes gefunden, deshalb hab Ich mich an eine Eigenentwicklung gemacht.
Wie weit bin Ich:
Auf einem Versuchsboard läuft der Frequenzgenerator, sowie FM Modulation und die Sweepfunktion.
Für AM warte Ich noch auf einen passenden Optokoppler mit FET Ausgang ( Ist bestellt ).
Frequenzen bis 4MHz schauen auch ohne Rekonstruktionsfilter gut aus, Ich werde aber die maximale Frequenz auf 3MHz festlegen.
Bei Frequenzen über 4 MHz wird das Ausgangssignal durch den AD9833 AM Moduliert. Das ist für ein Testgerät in meinen Augen inakzeptabel.
Deshalb die Beschränkung auf 3MHz - Das ist aber nur eine reine softwaremässige Beschränkung.
Für höhere Frequenzen seh Ich, bei einem tragbaren Gerät, auch keinen Nutzen, ausser evtl. ein 10,7MHz ZF Filter durch zu messen.
Auf ein anderes DDS Board mit höherer Ausgangsfrequenz ( die es durchaus gibt ) möchte Ich nicht gehen, da es hierbei wieder andere Probleme, z.B. bei der Modulation, gibt.
Wie geht es weiter:
Das Rekonstruktionsfilter ( LC T-Filter 4MHz ) wird getestet.
Als nächstes soll das Display eingebunden werden, dann die Eingabeelemente.
Läuft alles zur Zufriedenheit werde Ich eine Platine entwerfen und einen Prototyp bauen.
Wenn Ich erste Schaltpläne habe werde Ich die hier veröffentlichen.
Warum schreib Ich das alles?
Ich hab hier mal nur meine Ideen und den erreichten Fortschritt aufgeschrieben.
Eventuell hat ja jemand von euch noch Ideen für zusätzliche Features, oder Funktionen die so ein Funktionsgenerator unbedingt noch braucht.
Oder Ideen wie man z.B. die interne Stromversorgung verbessern könnte.
Vieleicht brauch Ich auch bei dem einen oder anderen Problem noch Euere Hilfe.
Z.B. Welche Op-Amps als "Endstufen" wären geeignet? Vorerst ist ein AD8038 geplant, den OPA892 hab Ich mir auch mal angesehen.
Oder es will sich jemand an der Entwicklung beteiligen?
Ich freue mich auf Euere Antworten...
Liste der Anhänge anzeigen (Anzahl: 2)
Mein Display und der Eingabetaster wurden geliefert.
Die Frequenzeinstellung funktioniert schon so weit.
Die Features kommen nach und nach hinzu.
Anhang 36032
Ein Bild vom Versuchsaufbau, noch ohne Ausgangsfilter und Verstärker.
Oben Mitte das Display ( Ist in Wirklichkeit schärfer als auf dem Bild ).
Unten Mitte Rechts die Eingabetastatur.
Anhang 36033
Ein Oszillogramm, 2MHz direkt am Ausgang des AD9833 aufgenommen.
Sieht IMHO auch ohne Filter schon ziemlich gut aus.
Liste der Anhänge anzeigen (Anzahl: 2)
Ich hab gerade mal ein wenig an der Endstufe rum gemacht und die läuft so einigermassen.
Neue Oszillogramme:
Anhang 36034
Hier ein Screenshot nach dem Verstärker, kurz bevor er in die Begrenzung geht.
Anhang 36035
Hier noch mal ein Bild mit voll aufgedrehtem Offset, auch kurz vor der Begrenzung.
Die Ausgangsspannung ist mir noch ein wenig zu niedrig.
Ich werde wohl doch auf den OPA892 und einen +-9V Spannungswandler wechseln.
Die "Unsauberkeiten" schieb Ich mal eher auf meinen Aufbau auf einem Steckbrett, als auf Probleme mit der Schaltung.
Ein Handeffekt bei den Potis ist auch fest zu stellen.
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Wie schaut es bei deinem Projekt aus? Schon weiter?
Der geplante TL074 als Spitzenwertgleichrichter ist viel zu langsam, bei ca. 100kHz wird das Ausgangssignal immer kleiner ( von wegen GBW 13MHz ).
Ich werde an dieser Stelle einen LT1633 testen.
Bei höheren Frequenzen hab Ich leider nur 8Vpp.
Da möchte Ich dann den OPA892 als Endstufe und den OPA810 als Treiber einsetzen und die Spannung für die OP's auf +-9V erhöhen.
Sonst müsste der Gleichspannungsoffset ziemlich klein bleiben.
Die OP-Amps die Ich bis jetzt drin habe vertragen leider nur +-6V.
Als AM Modulationsquelle möchte Ich einen Optokoppler mit FET Ausgang H11F1M benutzen.
Die AM Modulation funktioniert im Prinzip, leider ist das Signal alles andere als linear ( siehe Bild ), zudem stimmte das Datenblatt des Optokopplers ( H11F1M ) nicht mit den Typen überein die Ich bekommen habe.
Laut Datenblatt ist der Ausgang auf 4 und 6. Bei meinen war er aber auf 4 und 5.
Ich möchte nun den Ausgang des Optokoppler's mit einer Gleichspannung vorspannen und das AM Signal über einen Kondensator einspeisen.
Am Optokoppler Ausgang müssen immer mindestens 0,1V anliegen, damit er linear arbeitet, wenn man dem Datenblatt glauben kann.
Anhang 36036
Die o.g. Bauteile hab Ich erst gestern bekommen.
Ich muss Die erst mal auf Adapterplatinen löten, damit Ich die auf mein Versuchsboard kriege.
Das sollte übers Wochenende klappen.
Das ist der aktuelle Stand - wenn Du eine gute Idee für die Amplitudenregelung ( AM ) hast, immer her damit.
Zu Deinem Projekt:
Also ein ATMEGA hat mindestens einen 16Bit Timer, Die A-Typen laufen auch mit 20MHz.
Der Nachteil ist, das die Timer immer bis zum Höchstwert laufen, OK CTC wäre auch möglich.
Der zweite Comparematch würde dann die Pulsweite bestimmen.
0,3Hz bis 2MHz sollten möglich sein.
Ob das geht hab Ich so noch nicht getestet.
Bei niedrigen Frequenzen müsstest du den Prescaler erhöhen, dann geht das auch für ganz niedrige Frequenzen.
Die Potis könntest Du über den A/D Wandler 10Bit abfragen ( Ich denk mal, das ELEKTOR das auch so gemacht hat ) und das Signal mit dem Timer generieren.
Als Anzeige würde Ich nach wie vor ein LCD oder OLED Display nehmen, das dann die aktuellen Werte anzeigt.
Das nur über die Potis und ne PLL zu machen wäre mir viel zu ungenau.
Wenn Du als Spannungsregler z.B. einen TSR 1-2450 ( max. Eingangsspannung 36V für die 5V Versorgung nimmst, sparst Du den Kühlkörper, der bei einem 7805 nötig wäre und auch Strom auf der 24V Schiene.
Als Absicherung wären evtl. Permafuses geeignet - Die müssen nicht bei jedem Auslösen ausgetauscht werden.
Günstige 2x16 Displays gibt's für unter 5,-€.
0,96" OLED für um 1,-€ bei eBay.
Librarys für beides sollten sich finden lassen.
SPI und TWI haben die Megas ja auch alle.
Das sind nur Vorschläge, realisier das bitte so wie es Dir am Besten passt!
Liste der Anhänge anzeigen (Anzahl: 2)
Hab mal wieder etwas weiter gemacht.
Zur Zeit bin Ich am Spitzenwert Gleichrichter.
Gelb ist die negative Halbwelle ( K1 ), Violett die positive ( K2 ).
Die Frequenz auf dem Bild ist gerade bei 1MHz ohne Gleichspannungsoffset.
Mit Gleichspannungsoffset wird der eine Ausschlag größer und der andere kleiner.
Die möchte Ich mit den A/D Wandlern des Controllers auslesen und daraus den Spitze Spitze Wert und den Offset berechnen und Anzeigen.
Anhang 36037
Hier ohne Offset
Anhang 36038
Hier mit negativen Offset
Ich hab auch noch eine schnelle Schottky Diode mit geringer Kapazität gefunden und zwar die BAT 62.
Die ist aber hier noch nicht verwendet.
Als nächstes werd Ich auf den AD 9851 umrüsten, aber dafür brauch Ich noch ein paar andere Bauteile ( größerer Controller, schnellere OP - Amps ).
Den AD9851 möchte Ich parallel füttern, weil das schneller geht als seriell.
Dann sollte auch 2kHz FM Sinus kein Problem mehr sein.
Liste der Anhänge anzeigen (Anzahl: 2)
Es gibt einen ersten Schaltplan:
Teil 1 = Digital Teil
Teil 2 = Analog Teil
Es wird sich mit Sicherheit noch was ändern, aber das Konzept sollte soweit aufgehen.
Wenn noch mal wer drüber schauen mag, ob da etwas nicht passt ?!Anhang 36043
Ein paar Schaltungsteile müssen noch getestet werden. Die Software ist auch noch nicht fertig.
Die Spitze Spitze Berechnung ( nach Gleichrichter ) und der Gleichspannungsoffset geht nun über seperate Schaltungsteile.
Liste der Anhänge anzeigen (Anzahl: 1)
Die Software ist in einer ersten Version fertig.
Soweit läuft alles bereits.
Ich hab jetzt auf einen AVR64DB48 und ein DDS Modul mit einem AD9851 umgerüstet.
Ein AVR32DB48 hätte auch gereicht, der AVR64DB48 ist aber einfacher erhältlich.
Anbei ein Beispiel von einer AM Modulations- Einstellung 100kHz Träger 1000Hz Modulationsfrequenz mit 90% Modulationstiefe.
Anhang 36049
Der Schaltplan sollte auch soweit passen, als nächstes wird die Platine gerouted.
Liste der Anhänge anzeigen (Anzahl: 1)
Ja, bin schon weiter gekommen.
Die Signalausgabe schaut bis ca. 30MHz schon recht gut aus, Ich möchte aber 42MHz erreichen.
Der Spitzenwertgleichrichter macht allerdings unerwartete Probleme.
Als Impedanzwandler war da ein THS4631 geplant.
Der gibt allerdings bei höheren Pegeln eine Gleichspannung auf seinem +Eingang! raus, was die Messung natürlich eklatant verfälscht.
Der im angehängten Schaltplan angegebene THS3061D schafft allerdings kaum mehr als 10MHz.
Ich werd wohl die komplette Spitzewertgleichrichtung in die Tonne hauen und statt dessen einen AD8307 einbauen.
Der gibt eine Gleichspannung allerdings in logarithmischer Auflösung raus.
Also wird da wohl eher eine Effektivwert Anzeige was werden.
Ich hätte dann vor die Ausgangsspannung als dBV Wert und in Volt Effektiv auszugeben.
Die AD8307 sind bestellt allerdings noch nicht geliefert.
Wenn das dann soweit hinhaut gibt's ne neue Platine.
Ein weiteres teilweise erwartetes Problem stellt noch das 5k Mehrgang Poti dar, das bei höheren Frequenzen - die da ja direkt drüber gehen ( Eine bessere Idee hatte Ich bis jetzt noch nicht ) - ein unangenehmes Eigenleben führt ( Es wird was übertragen, obwohl der Schleifer auf Masse steht ).
Digitale Potis haben ein zu geringe Auflösung und gehen von den Frequenzen her auch nicht weiter.
VCA die einen Gleichspannungs Steuereingang haben, haben entweder keinen differetiellen Eingang, zu niedrige max. Frequenzen, oder eine zu hohe Verstärkung ( >30dB ).
Da werd Ich wohl mal ein Poti mit einem kleineren Widerstandswert probieren.
Die Endstufe THS3491 wurde unangenehm warm ( >120°C ) - Die hat jetzt einen aufgeklebten Kühlkörper bekommen was die Temperatur beträchtlich gesenkt hat.
Das exposed Pad war dabei angelötet!
Ein paar Softwarebugs hab Ich auch noch gefunden, aber die meisten sind schon beseitigt.
Ein Softwareproblem hab Ich noch beim Wobbeln.
Wenn der Wobbel Modus eingeschaltet ist und Ich in das "Frequenz Menü" gehe wird eine zufällige Frequenz ausgegeben, auf der der Wobbelgenerator halt gerade stand.
Erst wenn man die Hauptfrequenz ändert stimmt es wieder.
Das Problem geh Ich aber erst an, wenn die Hardware funktioniert.
Im Anhang ist der jetzige noch nicht komplett funktionierende Stand!!!!
Verbesserungsvorschläge werden gerne angenommen!
Bis die Teile da sind mach Ich an meinem Reip Messer weiter.
Da hab Ich die Software von CodeVision AVR auf Microchip Studio umgepfriemelt, was überraschenderweise äusserst Aufwändig war ( 3 Tage und noch nicht fertig ).
Die Abfrage von Tabellen im FLASH waren dabei die größte Hürde - Ein Schwachpunkt vom Studio!
Liste der Anhänge anzeigen (Anzahl: 3)
Der Generator läuft nun, ein wenig Feintuning wirds noch brauchen.
Die Frontplatte muss noch gemacht werden.
Anhang 36070Anhang 36071
Anbei auch noch der derzeitige Schaltplan.
Noch was,
der THS3491 schwingt ztw. auf etwa 300MHz.
Ich hab versucht dem mit dem im Datenblatt vorgeschlagenen 1pF Rückkopplungskondensator zu begegnen, was aber lediglich die Frequenz nach unten verändert hat.
Ich denke es ist ein Lastproblem am Ausgang des Generators, obwohl hier 60 Ohm Ausgangsimpedanz nach dem OP drin sind.
Liste der Anhänge anzeigen (Anzahl: 2)
Der Generator ist nun im Gehäuse und läuft.
Ab 35MHz fällt der Pegel stark ab, was mich aber im Prinzip nicht besonders stört - 10Vss braucht man da nicht wirklich.
Das 500Ohm Spindelpoti zur Pegeleinstellung funktioniert auch besser als der 2kOhm Typ.
Wenn mir nicht noch irgend ein "Blödsinn" ( z.B. Anzeige der Lastimpedanz ) einfällt war's das mal vorerst.
Anbei der aktuelle Schaltplan.
Anhang 36073