Ich benötige eine Reihe digitaler Ausgänge, um meinen Computer mit der realen Welt zu verbinden. Es scheint jedoch, dass dieser Job bei weitem nicht so einfach ist, wie ich es mir erhofft hatte.
Ich habe verschiedene Methoden untersucht, darunter dedizierte digitale E / A-Karten, Mikrocontroller mit USB-Schnittstellen, serielle Schnittstellen, parallele Schnittstellen usw. Alle Lösungen scheinen jedoch entweder zu teuer, zu viel Arbeit oder die Technologie zu veraltet zu sein.
Ich hoffe, dass mehr als 64 digitale Ausgänge mit jeweils ca. 1 kHz einzeln steuerbar sind. Bisher ist die beste Idee, die ich mir einfallen lassen kann, die Ausgänge einer seriellen Schnittstelle an ein 8-Bit-Register für serielle und parallele Schaltung zu kleben und Zeichen über die serielle Verbindung zu senden, wann immer ich sie ändern und ausgeben möchte (von einer USB-Schnittstelle zur seriellen Schnittstelle) Adapter). Ich habe dies noch nicht getestet, daher weiß ich nicht, ob es funktionieren wird.
Gibt es eine andere schnelle und schmutzige Methode, um eine relativ große Anzahl kostengünstiger digitaler Ausgänge vom Computer zu erhalten, deren Steuerung ich mit sehr einfachen C ++ - Befehlen einfach steuern kann?
quelle
Antworten:
Klingt so, als ob Sie beabsichtigen, einige Weihnachtslichter zu blinken. :-)
Stimmt etwas nicht mit einem Arduino oder ähnlichem? Es wäre ziemlich einfach, die Anzahl der E / A-Ports zu erhöhen, wenn die Anzahl der Ports auf dem Mega 1280/2560 nicht ausreicht. Sie können es über einen seriellen / USB-Anschluss betreiben. Sie können Schieberegister an den Ausgangspins des Arduino verwenden oder den i2c-Port-Expander verwenden und durch diesen fahren.
Wenn Sie solche Standardkomponenten verwenden, haben Sie die kürzeste Zeit für das Prototyping.
Beachten Sie, dass mein Weg möglicherweise nicht der billigste ist. Aber es ist effektiv und bringt Sie tatsächlich schnell ins Rollen.
quelle
Das serielle zu parallele Schieberegister funktioniert. Wenn Sie den SPI-Port verwenden, haben Sie kein Problem mit der Aktualisierungsrate von 1 kHz. IIRC auf einem ATmega328 mit einem 8-MHz-Kristall (oder höher) sollten Sie in der Lage sein, 1 Mbit pro Sekunde zu erhalten. Viele andere Mikrocontroller funktionieren ebenfalls.
Eine andere Möglichkeit ist die Verwendung mehrerer Mikrocontroller. Wenn Sie beispielsweise einen ATmega328 verwenden (was bei den Passiven etwa 5 US-Dollar entspricht), erhalten Sie 18 Zeilen, während die TXD- und RXD-Leitungen frei bleiben. Parallel zu den RXD-Zeilen erhalten dann alle uCs die gleichen Befehlszeichenfolgen. Sie müssten die Befehlszeichenfolgen auf dem uC analysieren. Verwenden Sie ein FTDI-Kabel, um an USB zu gelangen. Fügen Sie dem uC einen Arduino-Bootloader hinzu, und Sie können die Arduino-Tools verwenden.
Die Konvertierung von seriell zu parallel ist einfacher. Wenn Ihre Anwendung Open-Drain-Ausgänge verwenden kann, können Sie einen 16-Kanal-LED-Treiber verwenden. Dies würde das Hinzufügen von vier Chips bedeuten.
quelle
Die einfachste Option, auf die ich gestoßen bin, scheint das IOIO-OTG zu sein . Es ist ein PIC-Controller-basiertes externes OTG-USB-Gerät, das für Android entwickelt wurde, aber über Eclipse und das Android Development Toolkit mit einem PC verwendet werden kann. Es verfügt über 46 3,3-V-GPIO-Pins sowie eine Reihe weiterer nützlicher Dinge. Es hat nicht die 64 Pins, die für Ihr Projekt erforderlich sind, aber Sie könnten einfach ein paar serielle bis parallele Schieberegister verwenden, wie von jluciani erwähnt (oder stattdessen Schrittmotorsteuerungen verwenden und weniger Pins verwenden).
Es gibt auch diese PIC-basierte USB-E / A-Karte , die ähnliche Funktionen ausführt, jedoch weniger Pins hat.
quelle