Forum: Mikrocontroller und Digitale Elektronik Digitale I/O am PC


von Joline (Gast)


Lesenswert?

Hallo Leute,

wie bekomme ich preisgünstig ca. 180 digitale I/O-Kanäle an einen PC?

Man könnte jetzt bspw. eine Profibuskarte oder eine CAN-Bus-Karte in
den Rechner stecken und alles mit (teurer) dezentraler Peripherie
machen.

Aber vielleicht gibt es hier ja jemanden, der eine bessere Idee hat.

Die Kabellänge beträgt etwa 10m, die Polling-Zeit ca. 100ms.

Ich zähle auf eure Ideen.

Gruß Joline

von Ralf Altmann (Gast)


Lesenswert?

Wie wärs mit ein paar 8051 über serielle Schnittstelle? Der TxD eines
8051ers geht auf den RxD des nächsten, und der TxD des letzten wieder
zum RxD vom PC.

Gruß Ralf

von Marko B. (Gast)


Lesenswert?

Naja, man bräuchte nur einen Mikrocontroller. 8051 ist schon mal gut,
da dieser über einen Adressbus verfügt und sich so eine fast beliebige
Anzahl von Peripheriebausteinen anschließen läßt. Eine Möglichkeit wäre
z.B. 82C55 zu verwenden (24 I/O Ports pro Chip). Bei acht 82C55 wären
das dann 192 I/O Ports.

von Ralf Altmann (Gast)


Lesenswert?

Okay, klar, das war auch meine erste Idee, allerdings sind zumindest bei
uns in der Gegend 82C55 sehr schwer aufzutreiben. Und ein Nachteil
dieser Schaltung wäre, dass sie wirklich zentral sein muss, während
mehrere µCs ja verteilt werden können, es kommt eben drauf an was man
machen will.

Gruß Ralf

von Joline (Gast)


Lesenswert?

Danke schon mal für die schnellen Antworten.

@Ralf
1. Ich kenne mich mit 8051 nicht aus, nur mit AVR. Aber prinzipiell
kann man diese ja auch über Rx/Tx vernetzen. Nun die Frage: Dein
Vorschlag ist, Tx an Rx des nächsten usw. Dann muss doch jeder das
empfangene immer weiter senden, wenn es nicht für ihn selbst bestimmt
ist, oder? Wäre dann eine parallele Vernetzung nicht sinnvoller?

2. Das ganze ist mehr oder weniger zentral. Rechner und Datenpunkte
sind nur ca. 10m voneinander getrennt. Das liese sich aber über einen
seriellen Strick überbrücken.

@Marko
Die Idee mit den Peripheriebausteinen (82C55) klingt auch sehr
interessant. Leider kenne ich sowas nicht vom AVR.  :o(

---------------
Aber vielleicht gibt es noch eine Idee mit fertigen Komponenten. Ich
dachte da so z.B. eine Art Netzwerk mit RS485-Komponenten, die
adressierbar sind und eine Anzahl I/O-Kanäle onboard haben. Hat
vielleicht jemand da eine Idee?

Natürlich bin ich aber auch für alle anderen Ideen dankbar. ;o)

Gruß Joline

von Andreas Hesse (Gast)


Lesenswert?

Hallo,


es gäbe vielleicht noch die Möglichkeit über i2C Komponenten (PCF8574).
Ein PC-Interface ist relativ einfach zu bauen.
Es gibt da Bausteine mit 16 I/Os und mit 8 I/Os. Das könnte
funktionieren, obwohl ich Mikrocontroller-Lösungen vorziehen würde.
Man könnte auch µC zusammenschalten, und diese über I2C adressieren.

Vielleicht hilft es ja..

Gruss
Andreas

von Marko B. (Gast)


Lesenswert?

Ralf: Schwer aufzutreiben? Gibts für EUR 2,10 pro Stück bei Reichelt.

Andreas: I2C mit PCF8574 könnte auch gehen, weiß aber nicht ob das dann
schnell genug wäre ...

Joline: Soweit ich weiss haben auch einige von den größeren AVRs (z.B.
Mega128) einen externen Bus, da kannst Du die 82C55 genauso
anschließen.

von Steffen (Gast)


Lesenswert?

Die einfachtste, günstigste und sicherste Variante ist ein Netzwerk von
über RS485 verbundenen MC´s. Je nachdem wie viele Ein/Ausgänge Du
brauchst kannst Du den entsprechenden AVR auswählen. Die I/os kannst Du
auch einfach mit Schieberegistern fast unendlich erweitern.

Steffen

von Dirk (Gast)


Lesenswert?

Hi,

ich hatte gestern bei Ebay eine ISA I/O Karte gesehen (100 I/O's).
Leider finde ich die imho nicht. Rubrik Wissenschaftliche Geräte.

Mfg
Dirk

von Markus_8051 (Gast)


Lesenswert?

Kannst Du Deine Anforderungen noch etwas genauer spezifizieren?

Sind die 100ms für einen I/O-Pin oder für alle 180? Das wären dann nur
555µs pro Portpin, oder anders ausgedrückt: 1800 baud. Das könnte -
zuzüglich Adressierung - für den I2C-Bus schon etwas viel werden.

Die Vernetzung von mehreren µC über Rx/Tx wird sicher auch jede Menge
Protokolloverhead erzeugen, von daher wäre ich auch für einen einzelnen
µC, als Wandler von RS232 auf irgendein synchrones serielles Format
(Schieberegister/I2C) oder vielleicht ist auch eine Matrixanordnung
denkbar. Dazu folgende Frage:

Müssen alle 180 Pins bidirektional sein, oder ist das irgendwie
aufgeteilt?

Wenn Du das mit möglichst wenig Bauteilen machen möchtest, nimm ein
FPGA. Da großes Schieberegister reinprogrammiert und Du bist fertig.
Und die Geschwindigkeit ist sicher kein Problem.

Und wenn ich mal neugierig sein darf: Was hast Du vor, was willst DU
damit machen?

CU,
Markus_8051

von Joline (Gast)


Lesenswert?

@Markus:
Das Ganze ist überhaupt nicht zeitkritisch. Keine Steuerungsaufgaben
oder so. Es werden fast alles Ausgänge sein, an denen lediglich je eine
LED angeschlossen ist. Am Rechner passiert etwas und dementsprechend
leuchten gewisse LED's. Ich dachte nur als Reaktionszeit sind 100ms
(für alle) ganz akzeptabel.

Trotzdem noch eine Frage: "großes Schieberegister reinprogrammiert"
-> Wie könnte das funktionieren? Egal welcher µC, er hat doch nur eine
bestimmte Anzahl I/O. Ohne zusätzliche Hardware kommt man da nicht aus,
oder doch?

@Steffen:
Also die Lösung mit einem RS485-Netzwerk gefällt mir eigentlich auch am
besten, weil das relativ einfach erweiterbar ist, ohne die schon
vorhandene HW zu stören. Jeder bekommt eine eindeutige Adresse und wenn
noch einer hinzukommt, stört das die anderen nicht. Und wenn ich gerade
dabei bin, etwas Neues zu entwickeln, schadet es nicht, wenn es etwas
universeller ausfällt. ;o)

____________________

Nur wie macht man am besten die Vernetzung: seriell (also Tx an Rx des
nächsten usw.) oder doch lieber parallel (also alle Rx und alle Tx
zusammen)?

von Wolfgang (Gast)


Lesenswert?

Nimm doch CAN - alle parallel an den CAN-Bus und keinerlei
Protokollsorgen.

Wolfgang

von thkais (Gast)


Lesenswert?

Es geht noch einfacher:
Multiplexing am Parallelport.
Ein paar Bustreiber und Adressbausteine an den Parallelport und fertig.

von Ralf Altmann (Gast)


Lesenswert?

Dann vielleicht doch einen µC, und Schieberegister (z.B. 74595 = Out,
74589 = In), wenn ich das mit einem 8051 durchgehe, komme ich auf knapp
30 Register, also etwas weniger als 240 Ports.

Gruß Ralf

von Joline (Gast)


Lesenswert?

Wie macht man am besten die Vernetzung für ein RS485-Netzwerk: seriell
(also Tx an Rx des nächsten usw.) oder doch lieber parallel (also alle
Rx und alle Tx zusammen)?

von Profi (Gast)


Lesenswert?

Was brauchst Du, Ein- oder Ausgaenge?
Ich habe mal fuer ein Modellbahnsteuerung eine PC-Karte mit 8 x 8255
verbaut, da gingen 4 50(?)-polige Flachbandkabel raus (196 I/Os).
siehe http://www.soft-lok.de/produkte.php

Ansonsten ist Parallel-Port mit Extenderschaltung auch eine gute
Moeglichkeit.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.