Ich habe für Arduino eine Bibliothek zusammengestellt für einen 12-bit IC Analog-Digital-Converter Digital-Analog-Converter: MCP4921 / MCP4922
Warte auf Eure Kommentare/ Verbesserungsvorschläge.
habe die Bibliothek eben ausprobiert und sie funktioniert. Vielen Dank erstmal!
Allerdings habe ich mit dem Oszilloskop am Clock-Pin einen Takt von nur 1 kHz gemessen, was ich persönlich viel zu niedrig finde. Die Ursache dafür liegt im delay(1) in der Methode sendSPIClock(), was meines Erachtens völlig überflüssig ist. Hab's auskommentiert und läuft wunderbar mit ca. 100 kHz!
hikke:
Ich habe für Arduino eine Bibliothek zusammengestellt für einen 12-bit IC Analog-Digital-Converter: MCP4921 / MCP4922
Warte auf Eure Kommentare/ Verbesserungsvorschläge.
Soviel ich das verstanden habe sind das Digital-Analog-Converter mit 12 Bit Auflösung (nicht ADC).
Der MCP4921 hat einen DAC und der MCP4922 zwei unabhängige DAC.
Die links zu den Bibiotheken funktionieren nicht. hikke ist Deine Hompage offline?
habe die Bibliothek eben ausprobiert und sie funktioniert. Vielen Dank erstmal!
Allerdings habe ich mit dem Oszilloskop am Clock-Pin einen Takt von nur 1 kHz gemessen, was ich persönlich viel zu niedrig finde. Die Ursache dafür liegt im delay(1) in der Methode sendSPIClock(), was meines Erachtens völlig überflüssig ist. Hab's auskommentiert und läuft wunderbar mit ca. 100 kHz!
Gruß
Christoph
Danke für den Tipp, werde ich dann bei mir auch ändern.
Soviel ich das verstanden habe sind das Digital-Analog-Converter mit 12 Bit Auflösung (nicht ADC).
Der MCP4921 hat einen DAC und der MCP4922 zwei unabhängige DAC.
Ja, hast Du natürlich recht. Schreibfehler.
Jetzt funktionen mir die Links auch wieder. Die Seite war wohl gestern nur zeitweise offline weil hikke dran gearbeitet hat.
Grüß Uwe
Hatte letzte Tage eine Webhosterwechsel gehabt, deshalb kann es schon sein, dass die Seite/Dateien nicht erreichbar waren!.
ich bin Arduino-Anfänger und habe obiges Beispiel ausprobiert.
Es funzt! Nur ich verstehe nicht wie man auf 100kHz-Takt kommt?
Mit meinem ARduino Uno erreiche ich max. 3,4kHz 290us; bzw. mit zwei DAC-Ausgängen 1,7kHz (2x290us)
Ist das das Maximum oder geht es noch schneller?
Es wäre nett das Teil als SIgnalgenerator verwenden zu können.
Bei Ausnutzung von 12Bit bzw. 4096 Punkten bleiben gerade mal 0,3Hz (3,1s)
Okay, die Aussage ist etwas verwirrend...
Die Auflösung von 12 Bits hat nichts mit dem Takt zu tun.
Aber wenn ich entsprechend dem o.g. Beispiel den Sägezahn alle 4096 Bits durchlaufen lasse, dann benötigt das pro Sägezahn -Grundschwingung bei der geringen Taktrate von deutlich unter 5kHz eine Ewigkeit...
Der MCP4921 braucht pro Wert 16 Bit. Darum muß die Busfrequenz durch 16 geteilt werden um die max Geschwindigkeit der Änderungen am DAC-Ausgang zu wissen. Da komme ich bei 100kHz auf max 6,2kHz. Mit etwas latenz bzw bearbeitungszeit zwischen den Übertragungen sind es leicht mal 3kHz.
okay verstehe. Mit den oben zitierten 100kHz ist die SPI-Busfrequenz gemeint,
und pro Bit benötige ich einen Taktzyklus, macht bei dem 12 Bit DAC ca. 8kHz.
Kann man die SPI-Bus-Frequenz höher als 100kHz takten? Welche Stellschraube habe ich am Arduino?
Der ATMEGA 324 arbeitet immerhin mit 16MHz.
Im MCP4921 Datenlatt steht was von "SPI™ Interface with 20 MHz Clock Support"
Wo sind die Stellschrauben?
Es wäre nett mit der Ausgangsspannung wenigsten den Audio-Bereich (also bis 20kHz) abdecken zu können.
Ich habe die Bibiothek nicht angesehen aber Du kannst den DAC über den SPI ansteuern und alle möglichen Geschwindigkeiten des SPI verwenden. Suche mal nach SPI Bus.
Der DAC braucht pro Wert nicht 12 sondern 16 Bit. Schau Dir das Datenblatt an. http://ww1.microchip.com/downloads/en/DeviceDoc/21897a.pdf Seite 18.
Grüße Uwe
Ich werde nicht ganz schlau aus dem Datenblatt, darf Vref nur 2,5 bzw. 3 Volt haben. Was ist die maximale mögliche Ausgangsspannung am analogen Ausgang?
Die Referenzspannung kann von 0V bis VDD (Versorgungsspannung) im ungebufferten Betrieb gehen. Mit dem Biffer sind es 40mV an jeder Seite weniger. (Seite 2 unterer Teil der Tabelle.)
Auch der Ausgang kommt nicht ganz auf die Betriebsspannung ( 10mV mehr als Masse und 40mV weniger als die Versogungspannung.
bit 13 !GA Output Gain Select bit - ermöglicht die Verdopplung der Ausgangsspannung. (Seite 18)