Forum: Mikrocontroller und Digitale Elektronik Am PC mehr als 8 Ein- bzw. Ausgänge schalten und lesen


von Alexander Deck (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem:

Für ein komplexes Steuerungsprojekt möchte ich über den PC ca. 50
Schalter setzen und ca. 40 Schalter einlesen. Daher benötige ich eine
Schaltung, die es mir erlaubt, 128 Schalter lesen und schreiben zu
können.

Zur Verfügung stehen je zwei parallele und zwei serielle
Schnittstellen.

An die Ausgänge werden Relais angeschlossen, an den Eingängen hängen
einfache Schaltkontakte.

Nun habe ich als Vorschlag die Lösung mit einem Matrix-Multiplexer
bekommen.

Wie müsste ich das schematisch realisieren?
Hat jemand einen anderen Lösungsansatz oder bereits so etwas
entwickelt?

Ich bin für jede Hilfe dankbar.

von Alexander Niessen (Gast)


Lesenswert?

Eine andere Möglichkeit wäre die Realisierung über I2C-Bus.
Dazu könntest du den PCF8574A und PCF8574B nehmen.
Jeder hat 3 Bits, um die eigene Adresse einzustellen:
Das heisst bei Verwendung von A und B Typ kannst du 16 von diesen ICs
an einem Bus betreiben. Macht 128 Ein- und Ausgänge.
Am PC würde ich zur Anbindung an I2C die COM Schnittstelle benutzen
(hat man in der Regel ja noch eine frei).
Der Vorteil dieser Methode: Einfach zu realisieren.
Der Nachteil: Diese Methode ist nicht gerade preiswert.

Gruese,
Alex

von Michael Hatscher (Gast)


Lesenswert?

Hallo Alexander,

ich hätte da 2 Lösungsmöglichkeiten (werden vielleicht dem Einen oder
Anderen antiquiert vorkommen, aber: es funktioniert !):

http://www.sphinxconnect.de/ bietet eine große Auswahl an
Industriekarten an. U.a. 8255 Boards mit bis zu 192 Kanälen. Du
brauchst zwar dann noch Relais-Treiber (ULN xxx), aber das sollte sich
in Grenzen halten. 2001 hat ein solches Board mit 96 Kanälen ca. 70 EUR
gekostet. Ich müßte mal schauen, ob ich da noch eins habe. Was ein
Problem werden könnte: das sind ISA-Boards. Also nichts für
supermoderne PCs.

IIC-Bus. Ich habe mehrfach erfolgreich PCF8574 am LPT-Port betrieben.
Mit dem entsprechenden Adapter kann man 4 seperate Busse an einem LPT
betreiben. Jeder PCF8574 hat 8 I/Os. Relaistreiber sind aber wohl auch
hier nötig. Das IC kann zwar 25mA, aber nur bis 5V.

Bis dann, Michael

von Alexander Deck (Gast)


Lesenswert?

Hallo,

danke für die schnellen Antworten.

Die Alternative mit dem I²C System gefällt mir am besten.

Sehe ich das folgendermassen richtig:

ich hänge 8x PCF8574 an einen I²C-Bus und kann somit über
Software-Adressierung die jeweils 8 Gates entweder lesen oder
schalten?

mit welchem baustein kann ich diese ausgänge denn so verstärken, daß
ich ein 220V-Relais anhängen kann?

von Fiffi (Gast)


Lesenswert?

Hallo Alexander,

es gibt viele Möglichkeiten:

1. fertige I/O Karte für PCI- oder ISA-Bus. Siehe z.B.
"DECISION-COMPUTER":

http://www.decision-computer.de/dio/dio8255-192.htm
http://www.decision-computer.de/dio/dio8255pmv.htm

2. selbstgebaute ISA-Bus I/O Karte, z.B. mit: 8255 oder 74245, 74377
...

3. Mikrocontroller Schaltung die per serieller/paralleler Schnittstelle
mit dem PC kommuniziert ...

...

Kommen für dich I/O Karten in Frage ?
Soll es mit "jeder" parallelen Schnittstelle funktionieren, oder
kommt auch ECP/EPP für dich in Frage ?
Möchtest du alles selbstbauen ?
Was darf das ganze Kosten ?
Wie schnell muß das ganze sein ?

Die I²C-Bus Lösung halte ich persönlich für sehr langsam und teuer.

von guenter (Gast)


Lesenswert?

Hallo Alexander

Noch eine Adresse:

www.woe.de.vu

Dort gibt es Informationen zu einem I2C-Adapter für die
serielle Schnittstelle (COM)

Günter

von Alexander Niessen (Gast)


Lesenswert?

Hallo zusammen.

Zu deinen Fragen @ A. Deck:
>ich hänge 8x PCF8574 an einen I²C-Bus und kann somit über
>Software-Adressierung die jeweils 8 Gates entweder lesen oder
>schalten?
Antwort:
Ja.
Wie die Anschaltung des I2C-Bus an die Com-SS vorzunehmen ist steht bei
google. Bedenke jetzt schonmal bei der Planung deines
(Steuer-)Programmes, dass du direkt auf den Par-Port oder die Com-SS
schreiben möchtest. Das lässt nicht jedes Betriebssystem von Haus aus
zu.

>mit welchem baustein kann ich diese ausgänge denn so verstärken, daß
>ich ein 220V-Relais anhängen kann?
Antwort:
Ich schalte höhere Lasten immer so (aber noch nie Spannungen über
12V):
An den entsprechenden Ausgangspin des ICs kommt ein BC547-Transistor.
Mit diesem wird die Spule des Relais gesteuert. (Freilaufdiode nicht
vergessen und Einbaurichtung beachten).
Da du 'normale Verbraucher' schalten möchstest würde ich vor die
Basis des BC547 einen geeigneten Optokoppler schalten. Sicherheit für
Mensch und Maschine ;)

Grüße,
Alex

von Meiserl (Gast)


Lesenswert?

Hallo

Dein Steuerungsprogramm läuft am PC?

Für solche Zwecke würde ich ein eigenes µC Board bauen.
Ausgänge und Eingänge über I2C, Schieberegister, Speicherausklammerung
realisieren.
Für I2C habe ich mir Module für 8xEIN 8XAUS (24V, Optokoppler und
Relais) gebaut.
Das ganze für Hutschienenmontage.

Wenn das ganze industriemäßig sein sollte würde ich auf eine SPS
setzen. (für einige EAs zahlt sich eine Eigenentwicklung für geringe
Stückzahlen nicht aus)

Die Steuerung sollte nur in diesem µC Board / SPS laufen und erhält vom
PC nur Befehle. (eventuell ein Visusystem)

von Michael Hatscher (Gast)


Lesenswert?

Hallo Meiserl,

hast du ein Foto von deinen Ein/Ausgabe Modulen ?

Ich bin nämlich auch "Hutschienenfan" (wegen Gebäudeinstallation).

Bis dann, Michael

von Meiserl (Gast)


Lesenswert?

Im Moment nicht .. aber kann ich sicher Morgen nachholen.

von Alexander Deck (Gast)


Lesenswert?

Hallo,

vielleicht erzähle ich Euch erstmal, worum es genau geht.

Bei mir im Keller steht ein relativ seltener Flipper aus den 70er
Jahren. Da die Steuerplatine nicht mehr funktionstüchtig ist, habe ich
vor, die komplette Steuerung über einen PC zu emulieren.

Es geht darum, ca. 50 Lampen und Spulen zu schalten und von etwa 40
einfachen Berührungskontakten die Stellung auszuwerten. Alles in allem
also um die 100 Ein- und Ausgänge.

Daher spielt die Geschwindigkeit überhaupt keine Rolle, jeder Bus ist
immer noch schneller als eine Flipperkugel mit Lufwiderstand ;-)

Die Schaltlogik werde ich dann per Hochsprache definieren.

In den Flipper kommt ein kleiner Pentium, daher ist generell ISA nicht
mehr drin. Zur Verfügung stehen also 2 serielle und ein bis zwei
parallele Schnittstellen.

Nun würde ich mir ein Interface bauen, auf dem 16x der PCF8574 sitzt.
Jede der seriellen Schnittstellen steuert also 8 IC's - macht
insgesamt 128x In/Out.

Die Berührungskontakte kann ich ja sicherlich direkt mit den Eingängen
verbinden, an die Ausgänge kommen - wie Alexander Niessen schreibt -
Transistoren, Optokoppler und schließlich Relais.

Falls jemand Verbesserungen zu dieser Idee hat, immer her damit!

von Meiserl (Gast)


Lesenswert?

Was spricht dagegen die Schaltung auf einem µC Board laufen zu lassen?

von Alexander Deck (Gast)


Lesenswert?

Weil ich mich mit µC bisher nicht beschäftigt habe.

Gibt es den auch dafür ausführliche Informationen im Netz?

Zu I²C ist ja jede Menge zu finden.

Außerdem: Was spricht gegen I²C?
Die paar Portbausteine kosten pro Stück €2,50, und viel mehr ist es ja
nicht.

von thkaiser (Gast)


Lesenswert?

Gegen I²C spricht überhaupt nichts. Der Vorteil daran ist die einfache
Erweiterbarkeit. Zwar gehts mit Schieberegistern billiger, aber da muß
jedes Bit immer durch alle durchgeschoben werden. Ist geschmackssache,
für welches Prinzip man sich entscheidet.
Ein PC ist schon ein wenig mit Kanonen auf Spatzen geschossen. Ich habe
mal in einen der moderneren Flipper reinschauen dürfen, dort werkelte
ein 68000 er-System (allerdings "diskret" aufgebaut, so richtig mit
RAM und ROM und irgendwelchen PIOs).
Die einfachste Variante läßt sich über den Parallelport aufbauen (sogar
im Standard-Modus).
Schau mal hier:
http://www.ft-fanpage.de/interface/interface.htm

Wenn Du sowieso Relais für die Ausgänge benutzt, kannst Du Dir die
Optokoppler allerdings ersparen. Bei den Kontakten wäre ich vorsichtig:
Zu hochohmige Eingänge können den Spielbetrieb stören, denn die in den
Flippern verwendenten Zugmagneten / Spulen ziehen recht viel Saft, da
könnte es zu Übersprechen kommen. Ich würde die Eingänge mit ca. 20 -
100mA belasten, denn die alten Kontakte brauchen auch Strom, um sauber
zu bleiben (der Lichtbogen hat einen gewissen Reinigungseffekt). Um
sicherzugehen, daß der PC garantiert nichts abkriegt, würde ich die
Eingänge noch zusätzlich galvanisch trennen (und die original
Flipper-Kontakte auch mit den 12 oder 24 Volt laufen lassen).

Gruß

von michi0021 (Gast)


Lesenswert?

Wenn das so ein seltener Flipper ist, würde ich die alte Steuerplatine
lieber reparieren, um die Nostalgiewert zu erhalten. In ein Oldtimer
baut man auch kein V6 TDi ein, wenn der Motor kaputt ist. Ich weiß
nicht wie so eine Steuerplatine aussieht, aber die Technik aus den 70er
Jahren kann nicht so kompliziert sein das man die nicht reparieren oder
nachbauen könnte!
mfg michi

von Alexander Deck (Gast)


Lesenswert?

Allerdings reizt mich nicht nur die Instandsetzung des Flippers, sondern
als Informatiker die Möglichkeit, viele verschiedene Presets auf einem
Flipper zu spielen bzw. die Logik komplett selber zu gestalten.

Die Originalplatine kann ich auch für 200€ kaufen, aber das ist nun mal
nicht das selbe.

Und natürlich wir es oft bei Bastlern der Fall ist, ist bei mir der Weg
das Ziel. Wenn nachher das ganze läuft, werde ich es vielleicht nicht
mal so oft nutzen...

von Peter D. (peda)


Lesenswert?

Der I2C-Bus benötigt bestimmte minimale Timings, was auf einem PC ja
nicht so einfach ist.

Deshalb würde ich eher zu Schieberegistern raten, die kannst Du ohne
jede Rücksicht so schnell wie möglich updaten und sind außerdem
billiger.
Z.B. 74HC595 (8 Ausgänge) und 74HC165 (8 Eingänge)

Der Vorteil, alle Eingänge werden exakt zur gleichen Zeit abgefragt
bzw. alle Ausgänge exakt gleichzeitig gesetzt (Mit dem Strobe bzw.
Latch-Impuls).

Ist zwischen PC und Platine eine etwas längere Leitung, sollten die
Signale differenziell übertragen werden (SN75179 oder LTC490).


Peter

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.