Hier ging es um den digitalen Anschluss eines Lasertriangulations-Systems „µε optoNCDT 2200“ von MicroEpsilon (µε). Zur Messwertverarbeitung in LabVIEW [Ansicht] sollte nicht der Umweg über ein Analogsignal verwendet werden, sondern alles komplett digital laufen. Außerdem unterstützt die mitgelieferte Software „ILD2200“ ebenfalls den Weg via FT245.
Ein solcher Adapter wird auch von der o.g. Firma geliefert, aber ein Eigenbau muss her, wenn die Kosten nicht explodieren sollen.
Der Adapter ist auch allgemein verwendbar.
So etwas gibt es zwar zu kaufen, aber ob das allgemein verwendbare Kaufteil die ausgefallene Baudrate 691,200 kBaud unterstützt, blieb unklar. Ein Umsetzer auf die serielle Schnittstelle des PCs fiel aus, weil auch PCs diese Baudrate nicht unterstützen. Außerdem sind diese Schnittstellen zu langsam.
Weil diese Baudrate zu Standardbaudraten weithin teilerfremd ist, benötigt man zwei Taktdomänen; üblicherweise zwei Mikrocontroller. Daher bietet sich hier ein fertiger USB-FIFO-Schaltkreis mit paralleler oder synchron-serieller Schnittstelle an. Die Wahl fiel dann prompt auf den FT245R von FTDI.
Der passende Quarz Q2 für die Baudrate hat 11,0592 MHz. Den gibt es, wie auch alle anderen Bauteile, günstig bei Reichelt zu kaufen. Damit liegen die Bauteilkosten bei 10 €. Etwas preiswerter als der Umsetzer von µε. Für üblichere Standardfrequenzen, wie 230,4 kBaud, 460,8 kBaud und 921,6 kBaud tut es die Quarzfrequenz 14,7456 MHz.
Die Firmware des Mikrocontrollers IC2 ATtiny2313 schaufelt die Daten bidirektional durch. Für die Empfangsrichtung werden die kompletten 128 Byte RAM als zusätzliche FIFO (Pufferspeicher) verwendet, um Pufferüberläufen vorzubeugen.
Am Pin 11 ist eine LED angeschlossen (nicht im Steckbrett-Foto), die aufleuchtet, wenn die FIFO voll ist, und verlischt, wenn die FIFO leer ist. Sie sollte im Betriebsfall aus bleiben (was auch der Fall ist).
Der p-Kanal-MOSFET T1 sorgt dafür, dass der Konverter im Fall von USB-Standby (beim herunter gefahrenen Notebook) USB-standardkonform weniger als 500 µA Ruhestrom verbraucht. Ohne diese Maßnahme könnte ein stecken gelassenes Gerät den Notebook-Akku leersaugen. Der differenzielle Leitungstreiber und -empfänger IC3 ist ziemlich hungrig, aber die meiste Energie wird in den jeweiligen 120-Ω-Abschlusswiderständen verheizt.
Buchsen oder deren Anschlussbelegung für RS422 sind nicht genormt.
Nach einer ausgiebigen Internet-Recherche wurde der Stecker X2
und dessen Belegung nach der größten Verbreitung ausgewählt, siehe Schaltplan.
Auch der eingesetzte Mess-PC benutzt diesen Stecker in dieser Belegung.
Ja, jenes eigentümliche Board (PCE-5124) hat optional RS422 und RS485.
Nur wegen der nicht verfügbaren Baudrate konnte dieser Anschluss nicht verwendet werden.
Mit dem Treiber HiSerial [W2k/XP] bzw. ShsMod [Win9x/Me/2k/XP] kann man die COM-Port von Windows auf Trab bringen, sofern die Hardware das kann. Die Baudrate 691,2 kBaud wird zwar nicht unterstützt, aber dafür 921,6 kBaud. Damit kann man einen Mikrocontroller mit 2 seriellen Schnittstellen, 2 Taktdomänen oder gebrochenen Taktteilern zur Umsetzung verwenden.
… dass sie kompatibel zur µε-Software „ILD2200“ ist! Dieses Bastelobjekt wird genauso erkannt wie das, was man bei µε für einige Hundert €uro kaufen kann.
… das Ganze mit einem brandneuen MSP430F55xx erschlagen können. Dieser enthält sowohl USB als auch (mindestens) eine serielle Schnittstelle mit gebrochenem Taktteiler. Hier Inbetriebnahme-Tipps. Das CDC-Interface würde den Windows-Treiber ersparen, nur eine .INF-Datei wäre hierbei nötig. Die Schwierigkeit wäre aber möglicherweise gewesen, alles so hinzubekommen, dass es von der µε-Originalsoftware als „ihr“ Konverter erkannt wird.
Mit der bastelfreundlichen PIC16F1454 geht es mangels gebrochenem Taktteiler für die serielle Schnittstelle nicht.
Zum Auslesen der digitalen Messwerte wurde kurzerhand ein LabVIEW-Programm geschrieben. Dieses realisiert die komplette Digitaldatenerfassung und die grafische Anzeige. Zudem ist dieses .VI so geschrieben, dass es als Unterprogramm in anderen .VIs verwendet werden kann. Dazu steckt es die Empfangsdaten in eine Queue.