Forum: Mikrocontroller und Digitale Elektronik Digitale Ausgänge für den GPIB-Bus


von Randy (Gast)


Lesenswert?

Hallo,

ein Messaufbau wird per GPIB gesteuert. Jetzt könnte ich ein paar 
digitale Ausgänge gebrauchen um Relais zu schalten. Will aber nicht ein 
paar Hundert Euro für eine fancy Lösung von NI&Co. ausgeben.
Bastelprojekte hab ich bisher nur umgekehrt gesehen, um einen GPIB-Bus 
zu steuern. das geht aber bei mir schon, ich will einen "Slave" an eine 
freie Adresse hängen der mir 8 oder 16 Ausgänge zur verfügung stellt die 
ich dann mit Labview schalten kann. Kennt jemand so ein (Bastel-)Projekt 
das die Schaltpläne im Netz veröffentlich hat?

Vielen Dank
Georg

von GPIO-User (Gast)


Lesenswert?

Ich bezweifle mal das es dafür Bastellösungen gibt, ich habe zwar schon 
einige Implementierungen von GPIB auf USB und umgekehrt (mal mit 
Host-Funktionalität, mal nur zum Abreifen von Bildschirm-Inhalten eines 
Scopes) aber noch nichts was deinem Wunsch nahekommt.

In unserem Labor verwenden wir daher GPIO-Karten, wie diese: 
http://www.techsoft.de/german/documents/gpio_interfaces.html

Wie du aber schon bemerkt hast, wird das nicht wirklich günstig. Da 
wirst du wahrscheinlich selbst ein "Listener-Device" basteln müssen.

von hp-freund (Gast)


Lesenswert?


von Gast XIV (Gast)


Lesenswert?

Hab noch ein paar 96LS488 rumliegen (GPIB Bus Controller).

Single Chip Controller mit allen Schikanen.

Gegen Schutzgebühr 5 Euro um Freiumschlag schicke ich einen zu

Neupreis war mal Richtung 900 DM / St.

Den Slave kann man auch komplett in Software machen. Ist nicht 
allzuschwer wenn man die Statusdiagramme hat.

Alles TTL Pegel und es gibt vielleicht Sources im Netz. Man braucht für 
den Listener/Slave nur eine Bruchteil der Spezifikation umsetzen.

von karadur (Gast)


Lesenswert?

Hallo

zum 94ls488 hab ich auch noch 2 Schaltungen. Könnte ich scannen.

von karadur (Gast)


Lesenswert?

Sollte heißen 96ls488.

von Randy (Gast)


Lesenswert?

Hmm... hatte gehofft dass es eine mehr oder weniger fertige Bauanleitung 
gibt... zwecks Zeitersparnis... bevor ich zum Basteln anfange und mich 
erst in das Thema einarbeiten muß mache ich meine Digital-Outs an die 
RS232 dran. Dann hängt das zwar nicht mehr so schön einheitlich alles am 
selben Bus, ist aber schneller fertig...
Vielen Dank an alle für die Tipps.

von Jörg S. (joerg-s)


Lesenswert?

Dieses Projekt scheint komplett ohne gekauften GPIB Controller aufgebaut 
zu sein:
http://www.dingeldein-online.de/basteln/gpib.html

von Tauwetter (Gast)


Lesenswert?

Um digitale Ausgänge zu erhalten, reicht es doch, allein die 
Listener-Funktion zu realisieren (habe allerdings 20 Jahre nichts mehr 
mit IEEE488 gemacht).

Ein ATmega sollte dafür locker reichen, zumal diese Controller so 
schnell sind, dass sie den Bus nicht ausbremsen. Wenn ich die Zeit dafür 
hätte, würde es mich locken, es mit heutiger Technik in Software zu 
machen.

Im Gegensatz zum obigen Beispiel würde ich aber nie auf richtige 
Bustreiber verzichten. Ports direkt auf den Bus zu legen und nicht 
sauber abzuschließen, wird in der Regel böse enden.

von DennisD (Gast)


Lesenswert?

Hallo,
wie oben schon erwähnt geht es auch mit reiner Software. Das habe ich 
vor zwei Jahren gemacht und hier beschrieben. Der Code kann da auch 
runtergeladen werden. Geschwindigkeit ist dabei kein Thema.
http://www.dingeldein-online.de/basteln/gpib.html
Dennis

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

DennisD schrieb:

> Geschwindigkeit ist dabei kein Thema.

Nur, solange du keinen Controller am Bus hast (außer ggf. deinem
eigenen natürlich).  Ansonsten musst du innerhalb von 200 ns auf
ein ATN reagiert und den Bus freigeräumt haben.  Das wird mit
einer reinen Software-Lösung im AVR knapp.

Btw., »PINA ^ 0xff« und »~PINA« sind das gleiche.

von DennisD (Gast)


Lesenswert?

Soweit ich mich erinnern kann. darf es gemäß dem Highlander-Prinzip auf 
dem GPIB-Bus immer nur nur einen Controller geben. Das wäre also kein 
Problem.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

DennisD schrieb:
> Soweit ich mich erinnern kann. darf es gemäß dem Highlander-Prinzip auf
> dem GPIB-Bus immer nur nur einen Controller geben.

Nein, es gibt nur einen System Controller (oder wie der heißt), aber
der kann auch weitere Controller aktivieren.

Viele brauchen aber durchaus eine reine Geräteimplementierung, d. h.
sie werden von einem Controller angesprochen und nach Daten gefragt.
Da schlägt dann die Forderung nach dem -ATN-Timing wieder zu.

von Ralph B. (rberres)


Lesenswert?

Normalerweise ist der Systemcontroller der PC, an dem die ganzen Geräte 
angeschlosssen sind. Es gibt aber die Möglichkeit, das der PC die 
Controllerfunktion an ein Gerät abgeben kann, ( z.B. Pc gbit 
Controllerfunktion an Oszillografen ab und wird selbst zum Listner, der 
Oszillograf übermittelt sein Image direkt an den Plotter ohne den Umweg 
über den PC zu nehmen und gibt hinterher die Controllerfunktion an den 
PC zurück ). Das wird zwar selten gemacht, aber die Möglichkeiten ( wenn 
Controllerfunktion im angeschlossenen Gerät vorhanden sind ) gibt es.

Die Busgeschwindigkeit wird durch das 3 Draht Handshaking gesteuert.
Das heist das langsamste adressierte Gerät bestimmt die 
Busgeschwindigkeit.
Geräte die nicht adressiert sind beeinflussen die Geschwindigkeit in der 
Regel kaum, da das Handshaking des internen IEC-Bus Kontroller meist 
schnell genug ist. ( Er muss ja nur feststellen ob er adressiert wurde 
).

Adressierte Geräte bestimmen die Busgeschwindigkeit durch die Zeit, die 
ein Gerät braucht um Daten zu erfassen und zu übermitteln. Das kann bei 
adressierten Voltmeter schon sehr langsam sein. Dafür kann aber der Bus 
nichts.

Die maximal mögliche Geschwindigkeit beträgt je nach Controller im PC 
zwischen 300 Kbyte bis 1Mbyte / Sekunde. Ich kenne aber kein Gerät 
welche diese Geschwindigkeit wirklich ausnutzt. ( Mag sein das es solche 
gibt ).

IEC-Bus Controller ICs gibt es relativ preiswert von National 
Instruments.
Es sind Nachfolger vom ÜPD7210 und heist NAT7210. Der kann direkt von 
einen  Mikrocontroller angesprochen werden, ähnlich wie ein 8255.
Das IEC-Bus Handshaking regelt das IC selber, ebenso die 
Adressauswertung.

Ein Gerät muss nicht zwingend 200nsek schnell auf ein ATN reagieren, 
allerdings bremst so ein langsames Gerät dann den gesamten Bus aus, da 
das langsamste Gerät die Busgeschwindigkeit vorgibt.

Ralph Berres

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ralph Berres schrieb:
> Ein Gerät muss nicht zwingend 200nsek schnell auf ein ATN reagieren,

Doch.  ATN ist keine der von dir genannten Handshake-Leitungen, bei
denen man beliebig langsam sein darf, sondern es ist die Anforderung
des (aktiven) Controllers, dass er jetzt den Bus belegen will.  Dieser
müssen die Geräte schnell nachkommen und den Bus frei räumen.

von Ralph B. (rberres)


Lesenswert?

Jörg

Du hast recht. ATN ist kein Handshakeleitung sondern die Leitung,
die dem Listner mitteilt ob es sich um ein Daten oder Gerätebefehl 
handelt.
Das hatte ich verwechselt. ( Geräteadresse oder Pollbefehl sind z.B. 
Gerätebefehle ).

Der steht aber solange an bis der langsamste Listner mit seinen 
Handshake reagiert hat. So reagieren wenigstens die Agilent IEC-Bus PC 
Karten.
Das habe ich mal mit einen Logikanalyzer produkolliert, weil ich einen
Fehler in einen Gerät gesucht hatte. ( Iecbus hatte sich immer 
aufgehangen, sobald das Gerät nur eingeschaltet wurde.

Ralph Berres

von Alex (Gast)


Lesenswert?

Die ursprüngliche Frage ist jetzt fast 10 Monate her. Wurde inzwischen 
eine günstige/einfache Lösung gefunden? Gibt es neue Vorschläge? Ich 
stehe gerade vor exakt dem selben Problem: Ich möchte ein einziges 
Relais ansteuern und dazu nach Möglichkeit GPIB nutzen (genau wie oben 
beschrieben wird der gesamte Messaufbau über GPIB gesteuert).

von Ralph B. (rberres)


Lesenswert?

Alex

so einfach ist das nicht. Du must ja letztendlich das Gerät mit seiner
eingestellten geräteadresse ansprechen. Erst dann kannst du ein 
Datenstring an das Gerät senden. Wobei üblicherweise der Ascii code 
verwendet wird. Dabei must du noch das Handshake auf dem IEC Bus 
beachten und dich um das EOI kümmern. Entweder das das Gerät die extra 
dafür existierende Leitung EOI setzt, oder was mittlerweile häufiger 
ist, das das Gerät als Antwort ein LF oder CR zurücksendet.

Für das Handshake und das Handling der Gerätebefehle wie Adresse GTL usw 
gibt es fertige Bausteine wie z.B. der abgekündigte NEC UPC7210 oder das 
noch erhältliche NAT7210 von National Instruments. Beide ICs muss man 
aber erst durch setzen von Registern initialisieren, so das es kaum ohne 
Mikroprozessor abgeht.

Es gab mal ein Baustein von Phillips HEF4738 für den IEC Bus. Dieser 
konnte man mit viel externer Hardware auch ohne Mikroprozessor 
betreiben.

Es gibt aber fertige Geräte zu kaufen. z.B. von Agilent, welche drei 
Steckkarten a ich glaube 32 Relais aufnehmen konnte und über IEC-Bus 
programmierbar war. Es gab von diesem Gerät auch eine Option mit 
integrierten 6,5 stelligen DC Anzeige.

Ralph Berres

von Entwickler (Gast)


Lesenswert?

Bei einem allereinzigsten Bit, würde ich nach einem GPIB <-> RS232 
Umsetzer suchen und dort dann eine Handshake-Leitung umschalten.

Hier ein Beispiel:
http://www.webalice.it/hotwater/PicPlot.htm

Es gibt mehrere Schaltungsvorschläge mit PICs. Diese scheinen so 'gut' 
zu sein, dass sie /ATN an einem einzigen Pin ohne Zusatzhardware 
verarbeiten können. Das zu glauben, fällt mir allerdings schwer :-)

von Peter D. (peda)


Lesenswert?

Entwickler schrieb:
> Es gibt mehrere Schaltungsvorschläge mit PICs. Diese scheinen so 'gut'
> zu sein, dass sie /ATN an einem einzigen Pin ohne Zusatzhardware
> verarbeiten können.

Nö, die Schaltung hat einfach Serienwiderstände drin für die Zeit der 
Datenkämpfe beim Umschalten.
Bzw. Dioden für die Handshakesignale, damit die open-drain sind.
Die Pegel des GPIB-Standard werden damit natürlich nicht eingehalten.


Peter

von Entwickler (Gast)


Lesenswert?

>Nö, die Schaltung hat einfach Serienwiderstände drin für die Zeit der
>Datenkämpfe beim Umschalten.

Da finden, glaube ich, garkeine Datenkämpfe statt, da der PIC implizit 
immer der Controller ist, der /ATN "assertieren" darf. Aber so richtig 
verstehe ich das nicht; bin kein Picker.

von Alex (Gast)


Lesenswert?

Danke für eure Antworten!

Ralph Berres schrieb:
> so einfach ist das nicht.

Deswegen frag ich ja euch ;)

Ralph Berres schrieb:
> Beide ICs muss man
> aber erst durch setzen von Registern initialisieren, so das es kaum ohne
> Mikroprozessor abgeht.
[...]
> mit viel externer Hardware

Ok, ich seh's langsam ein, dass es nicht einfach geht.

Ralph Berres schrieb:
> Es gibt aber fertige Geräte zu kaufen. z.B. von Agilent, welche drei
> Steckkarten a ich glaube 32 Relais aufnehmen konnte und über IEC-Bus
> programmierbar war. Es gab von diesem Gerät auch eine Option mit
> integrierten 6,5 stelligen DC Anzeige.

Ich hätte nichts gegen eine fertige Lösung, aber ich brauch ein Relais 
und nicht 32 und hab auch keinen Platz für eine große Kiste. Ideal wäre 
so eine Fertiglösung, die aber ganz klein und kompakt ist ;).

Gruß, Alex

Entwickler schrieb:
> Bei einem allereinzigsten Bit, würde ich nach einem GPIB <-> RS232
> Umsetzer suchen und dort dann eine Handshake-Leitung umschalten.

Ja, in die Richtung hatte ich auch schon gedacht...

...dann ist das aber andererseits auch schon wieder umständlicher als es 
sein muss, weil:

Das ist jezt die Lösung:

Da ich sowieso vom Rechner erstmal mit USB weggehe und dann auf einen 
USB-GPIB-Umsetzer, kommt da ein Hub dazwischen. Dann gehts einmal USB - 
GPIB - Geräte und einmal USB - RS232 - Relais (das ist einfacher als USB 
- GPIB - RS232 - Relais und hat bei uns auch schon jemand aufgebaut, das 
kann ich weiterverwenden).

von Alex (Gast)


Lesenswert?

Danke für eure Antworten!

Ralph Berres schrieb:
> so einfach ist das nicht.

Deswegen frag ich ja euch ;)

Ralph Berres schrieb:
> Beide ICs muss man
> aber erst durch setzen von Registern initialisieren, so das es kaum ohne
> Mikroprozessor abgeht.
[...]
> mit viel externer Hardware

Ok, ich seh's langsam ein, dass es nicht einfach geht.

Ralph Berres schrieb:
> Es gibt aber fertige Geräte zu kaufen. z.B. von Agilent, welche drei
> Steckkarten a ich glaube 32 Relais aufnehmen konnte und über IEC-Bus
> programmierbar war. Es gab von diesem Gerät auch eine Option mit
> integrierten 6,5 stelligen DC Anzeige.

Ich hätte nichts gegen eine fertige Lösung, aber ich brauch ein Relais 
und nicht 32 und hab auch keinen Platz für eine große Kiste. Ideal wäre 
so eine Fertiglösung, die aber ganz klein und kompakt ist ;).

Entwickler schrieb:
> Bei einem allereinzigsten Bit, würde ich nach einem GPIB <-> RS232
> Umsetzer suchen und dort dann eine Handshake-Leitung umschalten.

Ja, in die Richtung hatte ich auch schon gedacht...

...dann ist das aber andererseits auch schon wieder umständlicher als es 
sein muss, weil:

Das ist jezt die Lösung:

Da ich sowieso vom Rechner erstmal mit USB weggehe und dann auf einen 
USB-GPIB-Umsetzer, kommt da ein Hub dazwischen. Dann gehts einmal USB - 
GPIB - Geräte und einmal USB - RS232 - Relais (das ist einfacher als USB 
- GPIB - RS232 - Relais und hat bei uns auch schon jemand aufgebaut, das 
kann ich weiterverwenden).

Gruß, Alex

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.