Funktionsgenerator

Ein Funktionsgenerator steht schon lange auf dem Wunschzettel und in letzter Zeit wurde er immer öfter schmerzlich vermisst. Vor langer langer Zeit war mal geplant ein solches Gerät auf Basis des MAX038, von dem hier sogar noch 2 Samples rumliegen aufzubauen. Allerdings wurde dieses Projekt immer wieder verschoben und inzwischen ist dieser IC nicht mehr aktuell. Ohne Frequenzzähler wäre es sowieso schwer gewesen den MAX038 auf genaue Werte einzustellen und anstatt diesen Dinosaurier mit einem AVR zu veredeln, kann man auch gleich auf eine rein digitale Variante setzen. Wenn man nach Funktionsgenerator und AVR googelt findet man schnell die DDS und wenn man nach AVR und DDS googelt spuckt die Suchmaschine das hier aus. Warum also das Rad zweimal erfinden?

Zur Schaltung selbst gibt es nicht viel zu sagen. Der ATmega16 erzeugt über ein R2R-Netwerk analoge Signale und die werden dann über einen Operationsverstärker zum Ausgang geleitet. Der Operationsverstärker ist ein LM358 und der ermöglicht mithilfe zweier Potis die Einstellung der Amplitude und des DC Offsets. Als Benutzerinterface dient ein Standard HD44780 LC-Display mit 2x16 Zeichen und ein paar Tasten.

Auf meiner Werkbank steht ein 19Zoll Gehäuse darin befindet sich unter anderen ein regelbares Netzteil und ein Festspannungsregler. Damit wäre also schonmal die Spannungsversorgung gesichert, denn die benötigten +/-12V kann man direkt hinten am Bus des Gehäuses abgreifen. Daher stand ziemlich schnell fest, dass der Funktionsgenerator ebenfalls als Einschub für das 19Zoll Gehäuse gebaut wird. Problematisch war dabei nur die Unterbringung des recht großen (80x36mm) Displays. Das Gehäuse hat 3HE und die Standardbreite für eine Frontplatte sind 10TE macht unterm Strich 128,4x50,5mm, die aber wegen dem Griff nicht voll genutzt werden können. Unterzubringen sind der Ein/Aus Schalter, eine LED als Einschaltkrontrolle, zwei Potis für Amplitude und Offset, zwei BNC Buchsen, das Display und fünf Taster. Mit anderen Worten ein haufen Zeug. Mehr Platz muss her! Theoretisch ginge das durch eine größere Frontplatte, allerdings hat die größte Steckfrontplatte bei Reichelt auch gerade mal 12TE(60,6mm). Bliebe als Alternative noch selber sägen oder die Schäffer AG. Ersteres scheiterte bereits am Rohmaterial und letzteres kostet ein Arm und ein Bein. Die Jungs und Mädels der Schäffer AG machen zwar einen Spitzenjob aber für so ein Wochenendprojekt bin ich zu geizig, um 50€ für ein kleines Stück Blech zu blechen. Was ginge noch? Display hochkant einbauen, sieht Schxxxe aus. Kleineres Display, nicht zu bekommen falls doch, bestimmt zu teuer. Zu guter Letzt blieb eigentlich nichts anderes übrig als das Display separat unterzubringen. Wenn man dann schon soweit ist kann man auch gleich die Bedienung zusammen mit dem Display in ein Gehäuse stecken und hat dann einen netten kleinen externen Controller. So kann der empfindliche analoge Teil in seinem abgeschirmten Gehäuse bleiben und braucht nur minimale Leitungslängen. Die Bedienung kann da erfolgen wo sie benötigt wird und man muss nicht immer den langen Arm auspacken um was einzustellen. So sieht jetzt das Ergebnis der vorangegangenen Überlegungen aus.

img0010k.jpg img0011k.jpg img0012k.jpg

Auf der Platine sieht man rechts einen Kühlkörper daran ist ein "P 3596 L-5,0" befestigt. Das ist das reichelt Generikum für den Schaltregler "LM2575" von National Semiconductor, der erzeugt die 5V die zusätzlich zu den +/-12V benötigt werden. Den Schaltregler habe ich gewählt weil er weniger Wärme abgibt als ein normaler Linearregler. Beschaltet habe ich den Regler genauso wie im Datenblatt auf der ersten Seite beschrieben. Die D-Sub15 Buchse ist der Anschluss für den Controller, der steckt in einem Multi-ABS-Gehäuse von Hammond Manufacturing. Das Gehäuse hat die Maße 120x65x40mm und hört auf die Artikelnummer 1591CBK.

img0013k.jpg img0014k.jpg

Dem aufmerksamen Leser wird beim Betrachten der letzten beiden Bilder etwas aufgefallen sein. Eingangs wurden zur Einstellung des Funktionsgenerators fünf Tasten erwähnt aber auf den Bildern sind die nicht zu sehen. Hier bin ich von der Vorlage etwas abgewichen und habe die Tasten durch ein 3D-Joystick ersetzt. Die gibt es inklusive passender Kappe für kleines Geld bei Conrad. Kein Scherz! Ich war auch erstaunt. Da diese Joysticks aber analog ausgewertet werden müssen und ich den Code im ATmega16 nicht anfassen wollte habe ich kurzerhand einen zweiten AVR eingesetzt. Ein ATtiny24 lag gerade rum und passt ideal. An der Bedienung ändert sich dadurch nichts. Hoch, runter, links und rechts bleiben erhalten und da der Stick einen Schalter hat kann man durch runterdrücken der Kappe die fünfte Taste auch ersetzen.

img0015k.jpg img0016k.jpg img0017k.jpg img0018k.jpg img0019k.jpg img0020k.jpg

Das Gehäuse ist ideal. Die Stege an den Innenseiten sind eigentlich dazu da senkrecht eingesteckte Platinen zu halten aber man kann die Platine auch waagerecht oben drauf legen und der Deckel fixiert das dann. So kann nichts wackeln oder klappern. Die kleine Platine für den Joystick ist echte Fummelarbeit da die meisten Pins des Joysticks nicht ins Raster von 2,54mm passen. Entweder modifiziert man so wie ich eine Lochrasterplatine durch passende Bohrungen oder man ätzt sich gleich eine passende. Auch etwas tricky ist es die Aussparungen auf der Vorderseite an die richtigen Positionen zu setzen. Das Loch für den Joystick kann man "anzeichnen" indem man den kleinen Metallstift heiß macht und die Platine dann gerade in das Gehäuse setzt. So schmilzt man an der Innenseite eine kleine Kerbe in den Kunststoff und kann da exakt vorbohren. Das Loch wird dann mit einem Stufenbohrer auf 22mm aufgebohrt. Das Loch für den Displayrahmen feilt man am besten schrittweise auf und probiert zwischendurch öfter mal ob Größe und Position passen. Die Distanzhülsen sind Standardlängen von 12 und 20mm.

Hier sind noch ein paar Aufnahmen vom Funktionsgenerator am Oszilloskop.

img0001k.jpg img0002k.jpg img0003k.jpg img0004k.jpg img0005k.jpg img0006k.jpg img0007k.jpg img0009k.jpg img0008k.jpg

Dateien zum Projekt:
Das Layout für die Lochrasterplatinen im Sprint-Layout 5.0 Format (.lay 179kB)
Der C-Quellcode für den ATtiny24 (.zip 9kB)
Schaltplan(.pdf 152kB)

Kommentare:

 Kommentieren Sie diesen Artikel 
Ihr Name:
Ihre E-Mail-Adresse:
   optional
Ihr Kommentar:
 
This is a captcha-picture. It is used to prevent mass-access by robots. (see: www.captcha.net)