Der MCP3903 ist ein ganz besonderer Analog/Digitalwandler. Er enthält neben sechs 24Bit Wandlern auch noch den Oszillator und eine passende Referenz. Zudem ist der Baustein recht flott unterwegs und hat ein SPI-Interface mit 10MHz Geschwindigkeit. Die Wandlung erfolgt auf den Kanälen synchron, d.h. das Phasenverhältnis zwischen den Signalen bleibt erhalten.

All diese Eigenschaften weckten mein Interesse. Das Ding musste her. Reichelt verkauft den Chip für 3,6EUR (Stand 2016). Eine passende Platine war auch gleich gefunden: RE931-05, eine Platine, die als Adapter zwischen SSOP28 Chips und 2,54mm Pfostenreihen fungiert. Ziel des Versuchs war, den Chip möglichst einfach an einen Arduino zu bringen. Da der MCP3903 zwei Spannungen benötigt (5V für Analogteil, 3,3V für den Digitalteil) und das Interface mit 3,3V läuft, war der Passende Kandidat schnell gefunden: Ein Arduino Due hat beide Spannugen, arbeitet nativ mit 3,3V Signalen und ist mit 84MHz und ARM auch ordentlich schnell unterwegs.

Um den Hardware-Aufwand klein zu halten, habe ich auf das Adapterboard nicht nur den Wandler, sondern auch noch ein paar Bauteile gelötet. Für gute Signale habe ich die Rückseite großflächig mit Kupferfolie beklebt.

Hier die fertige Platine:

Statt einem Quarz für den Taktgenerator habe ich einen Resonator (4MHz) von Murrata benutzt. Dieser kann direkt, ohne Lastkondensatoren an die Pins gebracht werden.

Nach Datenblatt benötigt die Referenzspannung einen Tantalkondensator. Den hatte ich nicht zu Hause, und benutzte dafür einen 100uF 6,3V Keramikkondensator parallel zu einem 100nF 0402 Keramikkondensator. Auf diese Weise schaffte ich es, das alle nötigen Komponenten auf der Universal-Adapterplatte Platz fanden.

 

Hier die Unterseite mit der analogen Masse:

Für den Software-Teil habe ich auf einer vorhandenen Library von Kerry Wong aufgebaut  (http://www.kerrywong.com/2014/05/10/mcp3903-library).
Die Library ist nach Kerry unter der Lizenz FreeBSD/Apache frei. Ich habe die Library erweitert.

 

Hier der Code für den Arduino und die zugehörige Librarie: (MCP3903.zip)

Das ganze Projekt ist wie immer CC-BY-SA (Lizenz Common Creatives, d.h. frei bei Namensnennung/-erhalt).

 

Bei der Adaptierung/Verkabelung zwischen Arduino und MCP3903-Platine können zeitsparend IDT-Crimpverbinder benutzt werden. Damit werden zwei 14pol IDT-Verbinder einfach mit einem Schraubstock mit zwei Flachbandkabel 14polig verpresst. Auf der anderen Seite müssen dann doch die Kabel mit normalen Steckverbindern verlötet werden.

Links unten sind die Versorgungsspannungen zu sehen. Rechts neben dem Prozessor ist der SPI-Anschluss. Auf der rechten, doppelreihigen Leiste findet sich der Slave Select-Anschluss für das SPI-Interface und die drei Interrupt-Leitungen der ADC-Wandlung.

Der rechte Anschlussblock ist für die analogen Signale vorgesehen.

Der MCP3903 misst die Spannungen übrigens differentiell in einem Bereich von -0,5V...0,5V. Andere Spannungen benötigen Spannungsteilen.

No comments