Der einfachste und kostengünstigste Weg, um digitale Ausgaben von einem Computer in die reale Welt zu bringen

8

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?

Gefälscht
quelle
Hast du ein bisschen Mathe gemacht? Einfacher RS232 ohne USB hat normalerweise eine maximale Geschwindigkeit von 115200 Bit / s, was ungefähr 10 KB entspricht. Nehmen wir an, jeder Kanal benötigt nur 1 Byte (was ich bezweifle). Sie möchten 64 x 1000 Bytes pro Sekunde senden, was ungefähr 64 KB entspricht. Viel mehr als Ihr serieller Durchsatz. Es gibt einige serielle Hochgeschwindigkeits-USB-Kabel mit 921600 Bit / s, und obwohl dies theoretisch möglich ist, bezweifle ich, dass dies nützlich ist, da dies am Rande liegt und wie gesagt 1 Byte schwer genug ist und der Mikrocontroller kaum Zeit für etwas anderes hat. Sie müssen entweder Ihre Anforderungen senken oder Ihren Geldbeutel vorbereiten.
Avra
3
Vielleicht sollten Sie Ihre Kommentare erneut auf offensichtliche Fehler lesen, bevor Sie jemanden verprügeln ... GPOI-Pins geben Bits und keine Bytes aus. Das bedeutet 64 KiloBITS / s, weit unter dem Maximum von
115,2

Antworten:

7

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.

rauben
quelle
1
Nicht ganz mit den blinkenden Lichtern versuche ich, 32 Schrittmotoren auf einem Prototyp eines automatisierten universellen Befestigungsgeräts zu steuern, außer ich habe keine Finanzierung ... oder keinerlei Kenntnisse der Elektronik. Vielleicht habe ich den Mikrocontroller zu schnell entlassen und Schritt für Schritt gute Ressourcen erhalten, um mit praktischen Beispielen von Grund auf auf dem neuesten Stand zu sein? (und ich meine von Grund auf, ich habe eine ziemlich seltsame Wissensbasis, die viel zu theoretisch und nicht praktisch genug ist, man kann davon ausgehen, dass ich absolut nichts weiß ... fühlt sich sowieso die meiste Zeit so an, heh)
Faken
1
Die Steuerung von Schrittmotoren erfordert etwas mehr Zeit. Sie können sie nicht direkt über die Ausgangspins des Mikrocontrollers ansteuern. Sie müssen etwas Elektronikkleber zwischen dem Stift und dem Motor verwenden, damit Sie das Mikro nicht braten. Wie bei allem ist es am besten, klein anzufangen und sich zu fortgeschritteneren Beispielen hochzuarbeiten. Einer der eifrigsten Enthusiasten, die ich gesehen habe, ist tronixstuff.wordpress.com, das einige gute Schritt-für-Schritt-Anfänger-Sachen hat. Ich weiß, dass der Typ, der es ausführt, auch diesen Stapelaustausch besucht.
Rob
1
Ja, ich habe einen sehr schönen Schrittmotortreiber gefunden, der zwischen den Steuersignalen und dem Motor verwendet werden kann (verwendet nur 2 Eingänge, Schritt und Richtung). Ich werde das Tutorial durchsehen, das Sie verlinkt haben, danke. Übrigens, nur um sicherzugehen, dass mein Computer die Befehle in Echtzeit über ein C ++ - Programm an den Mikrocontroller sendet, um die Motoren zu bewegen. Ist dies mit diesem Mikrocontroller möglich oder sehr einfach?
Gefälschte
1
Na sicher. Der Mikrocontroller fungiert als Puffer zwischen Computer und Schrittmotortreiberplatine. Es kann die von Ihnen gesendeten und interpretierten Befehle interpretieren und bei Bedarf Feedback an den PC senden. Der andere Vorteil der Verwendung von etwas Konventionellem ist, dass Sie viel Unterstützung / Rat von der Community erhalten können. Die Chancen stehen immer gut, dass jemand etwas Ähnliches getan hat. Das ist an sich schon ziemlich praktisch. Das Mikro bietet nur eine wirklich schöne, kostengünstige Schnittstelle zwischen dem PC und Ihren Treiberplatinen.
Rob
Adafruit macht ein schönes Board, mit dem 16 Servos gefahren werden können, und sie können miteinander verkettet werden. Es wäre ziemlich einfach, einen Arduino-Code zu schreiben, der Daten von einem PC liest und sie dann an die Servotreiberplatine sendet. adafruit.com/products/815
Eric Gunnerson
3

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.

jluciani
quelle
1

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.

naught101
quelle