Hier ist der Aufbau des digitalen Funktionsgenerators  von OM Christian, DD7LP

Der letztlich entscheidende Punkt dann doch damit etwas aufzubauen kam von einem bekannten Funkamateur und Schaltungsentwickler aus Brasilien. PY2OHH. OM Miguel hat sich in den vergangenen Jahren einen sehr guten Namen gemacht mit seinen zahlreichen QRP-Projekten siehe auch " http://py2ohh.w2c.com.br/". Om Miguel verwendete den AD9833 und baute damit eine Schaltung in Verbindung mit einem Arduino Mikro Controller auf. Er hat seine Schaltungen allerdings auf Rasterplatten gebaut und es steckten noch ein paar Schaltungsdetails drin, die ich gerne den technischen Gegebenheiten anpassen wollte. Schön fand ich seine Idee, ein TFT-Farbdisplay zu verwenden. Da diese inzwischen recht preiswert aus Fernostfertigung auch hier zu erhalten sind, ist eine sehr ansprechende optische Ausgabe der voreingestellten Werte relativ leicht realisierbar. Ich habe für den Aufbau dazu eine kleine Leiterplatte mit dem Layoutprogramm "Sprint" entworfen und das Ganze dann hier aufgebaut. Die Bestückung der einseitigen Leiterplatte erfolgte überwiegend in SMD-Technik. Die Oberflächenmontage von unbedrahtetem Bauteilen ist auch kein großes Problem mehr für den abitionierten Bastler oder Hobbyelektroniker, gibt es doch mittlerweile sehr gut funktionierende kostengünstige Lötsationen um sowohl mit Temperatur geregeltem Lötkolben oder auch mit regelbarer Heissluft zu löten. Die 2 kleinen Ferritübertrager, (schweinenasen) wurden mit 2 x 5 Windungen Cul. 0,15 mm bifilar bewickelt. Bei einem Kern von 6x2,5mm ein wenig fummelig aber gut machbar. Den AD9833 DDS Syntesitzer  kaufte ich als Fertimodul für 5 Euro über eine Internetplattform. Einige Male musste ich mit Miguel in Brasilien korrespondieren, da ich Probleme mit dem Arduino Mikrocontroller bekam und dieser sich nicht mit der IDE programmieren ließ. Die  Software, die ich für den europäischen Markt ein wenig angepasst hatte und läuft mittlerweile auf einem Arduino-Nano mit der Entwicklungsumgebung 1.8.2 sowie den beigefügten Librarys absolut problemlos im Speicher des Arduino Nano. Manchmal kommt es vor , das ein Programm nicht in den Arbeitsspeicher eines Arduinos passt, dann besteht folgende Möglichkeit

Geänderte Schaltung des Funktionsgenerators von DD7LP nach einer Idee von PY2OHH
Platine von DD7LP-Funktionsgenerator. Größe 6x10 cm einseitig
Weiterführende Links::
AD9833 Waveform Generator : OM John
PY2OHH Miguel
Analog Devices AD9833

Arduino IDE

Download Schaltung Layout Software DD7LP
DDS-Modul
AD9833
TFT-Farbdisplay
128x160 Pixel
Arduino
Nano
Wer kennt sie nicht, die bekannten Schaltungen eines Funktionsgenerators mit dem  Exar XR2206 oder  Intersil ICL8038. Beide sind schon recht antiquiert und auch abgekündigt. Ich selbst habe hier im heimischen Schack immer noch meinen Funktionsgenerator mit XR 2206 den ich vor nun bald 40 Jahren aufgebaut habe. Damals eine ganz große Sache und dass Mittel der Wahl. Ganz stolz war ich dann, als ich ca. 10 Jahre später diese Schaltung auch noch mit einem Synthesizer in „ganz Modern" C-Mos-Technik mit BCD Daumenrädchen nachgerüstet habe. Die Schaltung war natürlich noch auf Pertinax Platinenmaterial und mit bedrahtetem Bauteilen aufgebaut. Dieses kleine Gerät hat mir seinerzeit sehr oft geholfen beim Abgleich irgendwelcher Verstärker oder auch Filterbaugruppen im Amateurfunk, speziell für die damalige Fernschreibtechnik mit Filterkonverter und mechanischer Fernschreibmaschine (LO15C). Ja, die Zeit ist nicht stehen geblieben und heute werden uns jeden Tag neue Bausteine präsentiert, die zum Teil erstaunliches leisten können. Und da es heute ja in ist, in jeder kleinen Schaltung mindestens einen Mikrocontroller unter zu bringen, habe ich mich dem auch nicht verschlossen. Bei dem Studium der einschlägigen Literatur war mir schon vor einigen Jahren ein Baustein der Elektronikschmiede Analog Devices aufgefallen. Da von diesem Hersteller diverse DDS-Synthesizer hergestellt werden, war es nicht verwunderlich auch dort zum Thema Funktionsgenerator findig zu werden. Ich bin da auf den DDS-Baustein AD9833 gestoßen, ein Funktionsgenerator mit einem Frequenzbereich von 1 Hz bis 12 Mhz der an einem Referenzozillator von 25 Mhz angebunden ist. Es ist möglich damit Signale in 0.1 Herz Schritten zu erzeugen und dazu auch noch Signale mit einer Phasenverschiebung. Das wird in dem hier vorliegenden Gerät allerdings nicht gebraucht.
Hier gibt  es nur 2 Möglichkeiten, entweder sollte das C-Programm überarbeitet werden oder aber der Bootloader musste weg, dann hätte man den Arduino auch per ISCP programmieren können. Das ist aber nun auch wieder nicht für jeden Bastler, der sich nicht so mit der Materie auskennt möglich. Eine Lösung bahnte sich an, als ich gelesen habe, dass es einen anderen Bootloader gibt, der wesentlich kleiner ist. "Optiboot" hieß das Zauberwort. Wenn jemand bei der Programmentwicklung an die Grenze des Arbeitsspeicher stösst, dan nehme er einen Arduino "uno", benutze den als Programmiergerät und programmiere den Bootloader für den Arduino Nano neu. Damit gewinnt man noch ca 1 kb an Arbeitsspeicher und dass kann schon entscheidend sein
Die Eingabe der Frequenz und die Umschaltung der Modes Sinus, Rechteck, Dreieck erfolgen mit 2 Inc. Drehgebern. Das Display hat einen sehr schönen Kontrast ist klar und sauber zu lesen.chtig ist noch zu wissen, das die Ansteuerpins des DDS für 3,3 volt ausgelegt sind, obwohl das Datenblatt bis 5 V max VC vorsieht. Ich habe in die Plusleitung zum DDS eine kleine Diode gelegt um damit VCC um 0,7 Volt zu reduzieren.  Das Ausgangssignal des DDS-Synthesizers wird bei Frequenzen unter 1 Mhz von einem bekannten kleinem NF-IC dem LM386 auf Pegel gebracht. Oberhalb 1 Mhz erfolgt über ein kleines Relais die Umschaltung auf einem 2- stufigen Transistorverstärker. Von dort gelangt das Ausgangssignal zu einem 1 kOhm Poti, an dem sich der Ausgangspegel stufenlos einstellen lässt. Den 2stufigen Transistorverstärker könnte mal wohl auch mit einem Rail to Rail Oamp realisieren um einen entsprechenden Pegel zu erhalten. Wahrscheinlich ist dort auch der Frequenzgang bei den höheren Frequenzen um einiges besser in der Linearität. Für meine Bastelzwecke reichte diese Art der Beschaltung wie sie von OM Miguel vorgeschlagen wurde. Wer weitere Detail haben möchte, der soll sich doch an mich wenden, speziell auch wenn es ums programmieren des Bootloader oder der Software
geht.
Keine Angst vor kleinen Bauteilen
SMD-Bauteile (Surface Mounted Device) wie Widerstände, Kondensatoren, Induktivitäten, Dioden, Transistoren, Quarze, Leuchdioden usw. sind extrem klein und werden in speziellen Techniken hergestellt. So kommen beispielsweise Dünnschicht- oder Dickschichtwiderstände zum Einsatz. Diese SMD-Bauteile werden auch als SMD-Chips bezeichnet. Sie werden direkt auf die kupferkaschierte Oberfläche der Leiterplatte positioniert und mit einer Spitzpinzette zum verlöten festgehalten. Man sollte die Lötstelle leicht vorverzinnen (gebrauchte Lötsaulitze). Mit einem geregeltem Lötkolben mit feiner Spritze wird das Bauteil fixiert und anschließend mit 0,5 mm Lötzinn verlötet. Selbstverständlich ist auch das Kleben  und anschließende Reflow-Verfahren möglich , wird aber in der Regel im Hobbybereich nicht unbedingt angewandt. . Eine beidseitige SMD Bestückung der Leiterplatte ist möglich. Die SMD-Bauteile benötigen keine Lochbohrungen, was den Bestückungsprozess vereinfacht. Durchkontaktierungen der Leiterplatte bei nicht kritischen Signalverläufen ist jederzeit mit kleinen Drahtbrücken möglich. Wer hier besonders gut vor geht, der verwende sog. Hohlnieten mit weniger als 1 mm Durchmesser. Damit lassen sich auch hochfrequenzmäßige Schaltungen gut im Heimgebrauch realisieren. 
Mögliche Ausgangssignale
Die kleine Platine wurde einseitig gehalten und benötigt 3 kleine Drahtbrücken. Die ganze Schaltung wurde in einem Schalengehäuse aus Aluminium Stangprofilen eingebaut. Ein eigenes Netzteil habe ich nicht vorgesehen, die Schaltung wird über ein Steckernetzteil mit 12 V und 500 mAh übver eine Hohlsteckerbuchse versorgt. Der Aufbau ist recht unkritisch und ist von fast jedem geübten Bastler leicht zu realisieren.
Aktuell wird die Entwicklungsumgebung 1.8.2 von Arduino verwendet. Die angewendeten Librarys sind im Download Paket hier unten enthalten