Effiziente Möglichkeit, mehrere analoge Spannungen aus einem Arduino herauszuholen?

Ich habe in meinen Recherchen gelesen, dass die meisten Mikrocontroller nicht mit DAC-Ausgängen ausgestattet sind, da es teuer ist, sie auf Siliziumchips zu integrieren. Auch Anwendungen, die analoge Ausgänge erfordern, benötigen normalerweise eine höhere Auflösung als auf einem Mikrocontroller möglich ist und würden wahrscheinlich sowieso einen dedizierten IC verwenden.

Ich plane den Bau eines analogen Synthesizers mit Patch-Memory (Speicherung und Abruf von Spannungszuständen). Anscheinend funktionierten diese, indem die Spannung eines analogen Potentiometers in einen Mikrocontroller eingelesen und mit einem DAC eine Steuerspannung an den Synthesizer angelegt wurde. Dieser Zustand könnte dann als „Voreinstellungen“ gespeichert und abgerufen werden.


Ich würde gerne einen geeigneten Weg kennen, um mehrere analoge Ausgänge zu einer Schaltung von einem Arduino aus zu steuern. Die analogen Ausgänge in den meisten (wenn nicht allen) Arduino-Boards sind eigentlich PWM, und ich möchte ein echtes analoges Signal ausgeben.

Was meinen Sie in Ihrem letzten Satz mit „Kontrolle“? Der Arduino bietet Ihnen 6 analoge Ausgänge sowie einige weitere digitale PWM-Ausgänge. (Alle von ihnen sind eigentlich PWM). Fragen Sie nach einem "echten" analogen Ausgang?
@Manishearth - War es wirklich notwendig, das britische Englisch-Analog in das amerikanische Englisch-Analog zu korrigieren ?
@MarkBooth: hm, wusste nicht, dass es BrE war. Meiner Erfahrung nach bedeutet „analog“ nur „etwas, das eine Analogie zu etwas anderem trägt“. Aber du hast recht, na ja.
Jedenfalls schadet die Bearbeitung nicht, da es von Anfang an ganz oben war. Außerdem habe ich jetzt ein Retag gemacht :)
@Manishearth - Der Arduino Uno bietet keine analogen Ausgänge, sondern nur PWM, die auf eine Gleichspannung heruntergefiltert werden können. Die "Steuerung" bezieht sich auf die Notwendigkeit, dass der Arduino mehrere analoge Spannungen an verschiedene Punkte im Synthesizer ausgibt.
@JackDamery: Dachte schon (was ich mit "echtem" Analog meinte). Ich werde das bearbeiten, um es zu verdeutlichen :)
Der Arduino Due ist der einzige, den ich kenne, der 2 analoge DACs an Bord enthält, 12 Bit, echter analoger Ausgang.

Antworten (1)

Das Due ist das einzige Arduino-Board mit eingebautem DAC. (Zwei davon.) Wenn Sie mehr als zwei Ausgänge benötigen oder ein Board wie das Uno verwenden möchten, müssen Sie einen DAC bauen.

Option 1: PWM Mit einem RC-Filter können Sie einen Tiefpassfilter erstellen, mit dem Sie echte analoge Spannungen von einem PWM-Pin erzeugen können. Diese Methode kann schwierig zu kalibrieren sein oder funktioniert je nach Impedanz des Schaltkreises, den Sie antreiben, möglicherweise nicht.

Option 2: R-2R Die gebräuchlichste Methode ist eine R-2R-Leiter, die hier erklärt wird: http://en.wikipedia.org/wiki/Resistor_ladder

Option 3: DAC-Chip Die effizienteste, aber teuerste Methode wäre die Verwendung eines externen DAC-Chips. Sie können einen auswählen, der speziell für die von Ihnen benötigten Spannungen ausgelegt ist, und möglicherweise einen mit mehreren Ausgängen finden. Unabhängig davon verfügen die meisten DAC-Chips über eine SPI- oder I2C-Schnittstelle, sodass Sie mehrere Chips mit einem einzigen Arduino verketten können.

Der Maxim MAX5214 ist ein Beispiel für einen hochauflösenden (14 Bit) Einzelausgangs-DAC mit einer SPI-Schnittstelle. http://www.maximintegrated.com/datasheet/index.mvp/id/7119

Seitdem habe ich die (ca. 1979) Idee entdeckt, die in Synthesizern verwendet wird, einen DAC zu verwenden und ihn auf mehrere Sample-and-Hold-Zellen zu multiplexen.