Ich möchte einen Signalgenerator mit einem ATmega 328P auf einem Arduino bauen. Welcher Weg wäre besser. Verwenden Sie einen der eingebauten Timer (8 Bit oder 16 Bit), um eine PWM zu erzeugen und diese dann tiefpasszufiltern, oder verwenden Sie ein R2R-Leitersystem?
Ich interessiere mich mehr für Harmonische als für Frequenzen, aber ich hoffe auf etwa 10 kHz oder mehr.
Danke für deinen Rat.
Wenn Sie sich Sorgen um Oberschwingungen machen, sollten Sie PWM unbedingt vermeiden. Rechteckige Wellen sind vollgepackt mit Harmonischen, die sich so weit erstrecken, wie es die Pin-Slew-Raten zulassen. Obwohl die Tiefpassfilterung das Material höherer Ordnung leicht entfernt, ist das Material niedrigerer Ordnung ohne ernsthafte Filterung schwieriger zu entfernen. Sie geben nicht an, mit wie viel harmonischer Verzerrung Sie leben könnten oder welchen Frequenzbereich und welche Wellenformen Sie zu erzeugen versuchen (10 kHz lassen mich denken, dass Sie versuchen, einen Audio-Wellenformgenerator zu bauen), aber Sie kämpfen damit auf verlorenem Posten wird ohnehin dazu führen, dass Sie externe aktive Komponenten benötigen - warum also nicht einen DAC hinzufügen?
Ich vermute auch, dass Sie keinen Code schreiben möchten, also zeigt eine kurze Google-Suche, dass Adafruit ein MCP4725-Breakout-Board mit einer vorgefertigten Bibliothek und einem Tutorial anbietet. Der MCP4725 ist ein 12-Bit-DAC. Auch wenn sein INL zu wünschen übrig lässt, werden Sie mit dem Onboard-PWM eine gute Größenordnung besser dran sein als selbst Ihre besten Bemühungen.
Wie Leon Heller sagt, wenn Sie wirklich qualitativ hochwertige Signale (und über einen viel breiteren Frequenzbereich) erzeugen möchten, können Sie sich für eine DDS-Lösung entscheiden. Analog Devices bieten einige nette mit integriertem SRAM für die Speicherung beliebiger Wellenformen, also richten Sie einfach den Chip ein, sagen ihm, dass er gehen soll, und Sie sind fertig - es ist kein konstanter Datenstrom erforderlich. Dies geht jedoch wahrscheinlich zu diesem Zeitpunkt über Ihre Anforderungen hinaus. Es gibt auch eine Reihe billiger chinesischer Boards auf Basis des AD9850 bei eBay, die von Interesse sein könnten.
Es ist schwer definitiv zu sagen, welches besser ist, da es davon abhängt, wie Sie eine der beiden Techniken implementieren. Im Allgemeinen würde ich sagen, dass PWM der richtige Weg ist, da R2R viele Pins und gut angepasste Widerstände erfordert, selten für viel mehr als 8 Bit verwendet wird und immer noch gefiltert werden muss.
Wie bereits erwähnt, würde ich mich für einen dedizierten DAC entscheiden, wenn Sie gute Ergebnisse erzielen möchten, aber wenn es zu Lernzwecken ist, sollte die Route des Timer- / PWM-Moduls mit einem anständigen Filter plus Operationsverstärker halbwegs anständige Ergebnisse liefern, und Sie werden ein paar Dinge aufgreifen der Prozess. Es gibt viele Tutorials zu PWM-Signalgeneratoren, die Ihnen den Einstieg erleichtern.
Dzarda
Leon Heller