Forum: Mikrocontroller und Digitale Elektronik PM2528 als Scannermultimeter mit GPIB


von Jens W. (jensw)


Angehängte Dateien:

Lesenswert?

Hallo an alle,

ich habe hier zu Hause ein älteres Messgerät von Philips. Ein PM2528. 
Dabei handelt es sich um ein digital Multimeter mit 5,5 Stellen 
Auflösung. Das Gerät lässt sich laut Anleitung über den GPIB Bus 
ansteuern.
Nun möchte ich es um eine Scannerkarte erweitern um damit Batteriepacks 
vermessen zu können.
Ich habe den Schaltplan als PDF angehängt. Das Umschalten der Kanäle 
funktioniert tadellos. Der Aufbau ist auf Lochraster in einem 
Etuigehäuse. Der Controller soll vom PC über serielle Schnittstelle 
gesteuert werden (das funktioniert auch schon). Die Messergebnisse 
werden vom Controller am GPIB Bus eingelesen und über die RS-232 
(Bridge) an den PC versendet. Den GPIB Bus habe ich mit den bekannten 
Schnittstellenbausteinen 75160 und 75161 realisiert. Diesen 
Schaltungsteil nehme ich gerade in Betrieb.
Eine Übersicht über die Funktionscodes habe ich auch angehängt. Hier 
kann man sehen, wie eine Botschaft aussieht, wenn das Messgerät als 
Talker arbeitet und seine Daten versendet. Leider kann ich nicht 
erkennen wie ich den String zusammenbauen muss, um ein Kommando vom PC 
an das Messgerät zu schicken. Ich möchte gerne die Messungen Triggern 
per Botschaft.
Bei der Adressierung muss die Adresse auch noch an das Gerät geschickt 
werden.
Kann mir jemand weiter helfen wo ich die Informationen finde, wie ich 
die Strings aufbauen muss?
Hat das schon jemand erfolgreich gemacht?

In der Anleitung wird auf ein Dokument verwiesen IEC625-2. Das ist der 
Standard, der im Gerät implementiert ist. Aber auch dieses Dokument kann 
ich leider nirgends finden.

Danke an alle!

Grüße, Jens

von Jens (Gast)


Lesenswert?

Hallo an alle,

niemand der dazu was sagen kann?

Grüße

von Ralph B. (rberres)


Lesenswert?

Das Übertragungsprotokoll des IEEE488 Bus ist leider nicht so einfach.

Ich empfehle dir das Buch IEC-Bus von Anton Piotrowski

https://www.amazon.de/IEC-Bus-Anton-Piotrowski/dp/3772369537

zu kaufen und durchzulesen.

Da steht ausführlich erklärt wie sowohl die Hardware als auch die 
Software grundlegend aufgebaut ist. Sowohl das Handshake als auch das 
ganze Handling nebst Befehle sind erklärt.


Ralph Berres

von Jens (Gast)


Lesenswert?

Hallo,

danke schonmal für die Info.
Das Buch ist bei Amazon aber recht teuer. Ist es wirklich nötig dieses 
Buch zu kaufen? Ich bin skeptisch ob ich die Information finde, die ich 
brauche.
Ich will ja kein voll kompatibles Interface bauen, sondern nur ganz 
konkret diese Messgerät ansteuern.

Wie der Bus funktioniert habe ich schon verstanden.
Mir geht es um den Text-String für das Messgerät. Das steht in der 
Anleitung leider nicht genauer drin. Hat jemand einen Auszug aus der 
IEC625-2 für mich? Die kann ich nirgends finden.

Gruß

von Soul E. (Gast)


Lesenswert?

Jens schrieb:

> Wie der Bus funktioniert habe ich schon verstanden.

Dann weisst Du wie man Geräte anspricht und was EOI oder CR/LF ist?

> Mir geht es um den Text-String für das Messgerät. Das steht in der
> Anleitung leider nicht genauer drin.

Das steht doch auf dem von Dir angehängten Bild. "F00" schaltet auf 
Spannungsmessung, "R6" auf den 20 V-Bereich und "D0" sagt dem Gerät, es 
möge Werte schicken sobald welche vorhanden sind.

Hier sind nochmal alle Befehle aufgeführt: 
http://electrickery.hosting.philpem.me.uk/comp/divcomp/doc/PM2528.pdf


> Hat jemand einen Auszug aus der
> IEC625-2 für mich? Die kann ich nirgends finden.

Die IEC625-2 entspricht bis auf den Stecker der IEEE488.1. Die 
wesentlichen Punkte sind z.B. hier erklärt: 
http://bitsavers.org/pdf/hp/hpib/TutorialDescrOfHPIB.pdf

von Ralph B. (rberres)


Lesenswert?

Jens schrieb:
> Wie der Bus funktioniert habe ich schon verstanden.

Du weist also den Unterschied zwischen Gerätebefehle und 
Mehrdrahtbefehle?


Das ist nämlich wesentlich. Idealerweise hast du eine 
Programmierumgebung, welche eine IECbus Library bereits beinhaltet.

Unter HP-Basic wäre das z.B. für ein Rohde&Schwarz URE NF-Voltmeter

1          CLEAR 710
10         DIM Daten$[100]
20         REAL Daten
30         ASSIGN @Ure TO 710          !7 ist die Adresse der 
IECbuskarte
                                       !  10 die Adresse des Gerätes
31         OUTPUT @Ure;"U0"              !V0= DBm V1=  Volt
33         OUTPUT @Ure;"F2"              !F1= Fast 3,5 stellen F0= Slow 
4,5 Stellen
34         OUTPUT @Ure;"N0"              !X1= Messwertausgabe 
eingeschwungen nach 2 Werte X0= sofort
35         OUTPUT @Ure;"V0"
40         OUTPUT @Ure;"X1"              !PO= nur Messwert P1= 
Messwert+Gerätestatus8
50         ENTER @Ure;Daten$
60  REM    PRINT USING "DDD.DDDDDD";Daten
70         PRINT Daten$
80         GOTO 34
90         END

Unter C sieht das vermutlich ähnlich aus.

Ralph Berres

von Jens (Gast)


Lesenswert?

Hallo,

den Unterschied kenne ich.
Danke für das Beispiel. Das ist genau das was ich für mein Messgerät 
bräuchte. Das habe ich aber leider nicht und ich denke ich komme da auch 
nicht mehr ran, da das Messgerät schon so alt ist.

Eine fertige C-Bibliothek kann ich leider nicht verwenden, da ich die 
Steuerung nicht direkt vom PC aus mache, sondern der eingebaute 
Mikrocontroller in den Box übernimmt die Steuerung des PM2528. Den 
programmiere ich selbst. Welche Messung und so weiter ausgeführt werden 
soll schicke ich per RS232 an den µC.

Das Buch, das du mir empfohlen hast, habe ich zufällig bei eBay günstig 
gefunden. Dann habe ich das natürlich gekauft. Da kann ich mich nochmal 
gründlicher einlesen.

Ich schau mal, ob ich mit den Beispielen, die du gegeben hast, weiter 
komme.

Vielen Dank nochmal dafür.

@Soul eye:
Danke auch für die Links. Da werde ich mich auch noch einarbeiten. Ich 
hoffe das reicht, dass ich das Ziel erreiche.

Für weitere Tipps bin ich natürlich offen.
Ich werde weiter berichten.

Grüße

von Soul E. (Gast)


Lesenswert?

Jens schrieb:

> Danke für das Beispiel. Das ist genau das was ich für mein Messgerät
> bräuchte. Das habe ich aber leider nicht und ich denke ich komme da auch
> nicht mehr ran, da das Messgerät schon so alt ist.

Nochmal, der komplette Befehlssatz steht in diesem Dokument: 
http://electrickery.hosting.philpem.me.uk/comp/divcomp/doc/PM2528.pdf


> Das Buch, das du mir empfohlen hast, habe ich zufällig bei eBay günstig
> gefunden. Dann habe ich das natürlich gekauft. Da kann ich mich nochmal
> gründlicher einlesen.

Ein Buch erklärt Dir den GPIB selber, nützt aber für Dein spezielles 
Multimeter nichts. Ralf muss "U1" senden um Volt zu messen, Du "F00" und 
ich "MEAS:VOLT:DC".

von Illi (Gast)


Lesenswert?

Ich würde vermuten, das Buch hilft dir beim konkreten Problem nicht 
weiter. Meiner Meinung nach sind keine allgemeinen Befehle zur 
Ansteuerung von Multimetern für den GPIB genormt. Diese sind immer 
Geräte spezifisch. Die Normung mit SCPI kam erst viel später.

Vielleicht kannst du Manuals ähnlicher Philips Multimeter finden und 
deren Befehle ausprobieren.

Gruß Illi

von Jens (Gast)


Lesenswert?

Ja das dachte ich mir schon.
Das ist auch genau mein Problem. Gut die Bücher schaden sicher auch 
nicht, da ich die unterste Schicht ja auch auf meinem Controller 
brauche.

Mein Oszi, dass ich von Philips vor kurzem verkauft hatte, hatte auch 
die IEC Schnittstelle drin. Die Unterlagen habe ich leider mit verkauft.
Aber ich denke selbst bei Philips intern sind da noch einige 
Unterschiede mehr.
Ich werde versuchen die Kommandos aus der Übersicht zu senden und werde 
sehen wie sich das Messgerät verhält.
Vielleicht habe ich ja Glück und es ist einfacher als ich mir das im 
Moment noch vorstelle.

Ich berichte, wenn ich das versucht habe. Wird wahrscheinlich Wochenende 
werden bis ich wieder dazu komme.

Nachmal danke an alle!

Grüße, Jens

von Ralph B. (rberres)


Lesenswert?

Illi schrieb:
> Ich würde vermuten, das Buch hilft dir beim konkreten Problem nicht
> weiter. Meiner Meinung nach sind keine allgemeinen Befehle zur
> Ansteuerung von Multimetern für den GPIB genormt. Diese sind immer
> Geräte spezifisch. Die Normung mit SCPI kam erst viel später.

so wie ich ihn verstanden habe erstellt er kein Programm aus einer 
Umgebung mit implementierter IEC-Bus Lbrary, sondern er will die Library 
selbst erstellen.

Mal abgesehen das sowas ein recht sportliches Unterfangen ist, nützen 
ihm in diesem Fall die Gerätespezifischen Befehle des Multimeters 
garnichts, weil er keinen IECbus zu sehen bekommt.

Um einen IECbus erst mal in einer Programmierumgebeung zu implementieren 
ist das Buch schon eine extrem gute Hilfe. Er muss nämlich bis in die 
Grundlagen hinuter gehen. Dazu ist es sogar hilfreich wenn die einzelene 
Mehrdrahtbefehle bis ins Byte runter bekannt sind, wie Geräte und 
Mehrdrahtnachrichten versendet werden, und wie die Mehrdrahtbefehle alle 
heißen.

Wenn man ganz am Anfang ist hilft sogar oft ein Logikanalyzer, welche 
die 16 Leitungen des IEC-Busses aufzeichnet. Aber Achtung. Der Speicher 
des Logikanalyzers muss schon sehr groß sein. 1Kbyte reicht hier 
nicht.Die Abstände zwischen den ersten Bytes bis zur EOI sind deutlich 
größer und hängt auch von der Reaktionszeit des Multimeters ab.


Jens schrieb:
> ch werde versuchen die Kommandos aus der Übersicht zu senden und werde
> sehen wie sich das Messgerät verhält.

Du musst das Gerät zunächst mal adressieren. Das ist bereits ein 
Mehrdrahtbefehl bei dem ATN und EOI entsprechend gesetzt sein muss.

Erst dann kannst du den Gerätebefehl senden.

Das passiert bereits auf der untersten Ebene.

So lange du die IECbuskarte nicht adressieren kannst und nicht siehst, 
kannst du Strings senden soviel du willst, sie kommen nicht an, bzw dein 
Multimeter fühlt sich nicht angesprochen.

Deswegen gibt es für verschiedene Programmierumgebungen Librarys welche 
bei den IEC-Bus karten hoffentlich dabei sind, und die sich hoffentlich 
in die Programmierumgebung einbinden lassen.

Noch ein Tip

Wenn du wirklich das ganze handshake mit programmiern willst, dann setze 
in deiner Hardware einen fertigen IEC-Bus Controller wie z.B. den Nec 
UPD7210 ein. Bei National Instruments gibt es Nachfolgechips die diesen 
NEC7210 nachbilden zu kaufen. Aber ich würde mich nach gebrauchten 
Nec7210 umsehen. Je nach dem welche Ausgabe dein Buch IEC-Bus ist ist 
dieses Ic darin recht gut beschrieben.

Das IC übernimmt das komplette Handshake und einen Teil der 
Mehrdrahtbefehle.


Ralph Berres

: Bearbeitet durch User
von Jens (Gast)


Lesenswert?

Hallo Ralph,

ja genau so ist es. Ich implementiere den Bus selbst auf dem AVR. Das 
ist nichts für Einsteiger. Das ist mir klar.
Ich habe auch schon zwei Implementierungen gefunden bei denen ich ein 
bisschen Know-How abgreifen will. Aber ich habe den Vorteil, dass ich 
nicht voll kompatibel sein muss zum IEEE488. Zum Beispiel mache ich 
nichts in Richtung mehrere Controller und auf ATN muss ich auch nicht in 
200ns reagieren, da ich selbst der Controller bin. Dann sollte es schon 
gehen.

Einen fertigen Chip kann ich leider nicht mehr einsetzen. Da ist der 
Aufbau schon fertig. Da müsste ich zu viel umbauen. Ich halte mich hier 
an die anderen beiden Projekte. Ich verwende aber richtige 
IEC-Bustreiber ICs. 75160 und 75161.

Ich werde zunächst versuchen die unterste Schicht auf die Leitungen zu 
bekommen. Dann sollte es schon möglich sein, dass Messgerät zurück zu 
setzen (*RST).

Ich berichte weiter...

Grüße, Jens

von Joachim B. (jar)


Lesenswert?

ich habe ähnliches vor, ich kaufe keine fertigen IEEE Karten mehr, aber 
das hier finde ich interessant und einen Versuch wert:

http://www.kingswood-consulting.co.uk/gpib/

will ich mal nachbauen

von Jens (Gast)


Lesenswert?

@ Ralph,

die Bücher sind heute gekommen.
Die sind hilfreicher als ich gedacht habe. Danke für den Tipp!
Es geht nichts über Grundlagen. Da muss man sich erst fit machen bevor 
man weiter macht.

Ich werde am Wochenende versuchen die unterste Schicht des Busses zu 
implementieren.
Wird alles noch ein bisschen dauern. Ich berichte...

Schönes Wochenende an alle!

von Ralph B. (rberres)


Lesenswert?

Jens schrieb:
> Es geht nichts über Grundlagen. Da muss man sich erst fit machen bevor
> man weiter macht.

Was du da vor hast ist sehr ambitioniert. Ich wünsche dir aber trotzdem 
viel Erfolg. Trotz der vielen Rückschläge die du erleiden werden must.

Ralph Berres

von Jens (Gast)


Lesenswert?

Hallo Ralph,

ich bin am Testen. Und natürlich geht noch nichts.
Vielleicht kannst du mir hier weiter helfen.
Ich habe für den Bus die ICs SN75160 und SN75161 eingesetzt. Einen für 
die Daten und einen für die Control Leitungen.
An den ICs sind noch die Anschlüsse PE, TE und DC. Diese müssen 
unterschiedlich gesetzt werden, je nachdem welche Aufgabe gerade 
ansteht. Also Talker, Listener oder Controller. Die Angaben aus dem 
Datenblatt finde ich ein bisschen verwirrend.
Kannst du mir sagen wann ich welche Leitung high oder low ziehen muss 
von diesen drei?
Ich habe raus gelesen, dass PE immer high sein kann. Wenn ich zum Talker 
werde, dann wird TE = high. Und als Controller wird DC = low.
Es scheint aber so zu sein, dass TE und DC sich gegenseitig 
beeinflussen. Ich bin da recht verwirrt.
Kannst du mir da einen Tipp geben?

Ein zweites Problem:
Ich bin mir nicht sicher, wie ich mit dem debuggen des Busses anfangen 
soll. Einen Logic Analyser habe ich. Wo würdest du anfangen?

Grüße, Jens

von Joachim B. (jar)


Lesenswert?


: Bearbeitet durch User
von Ralph B. (rberres)


Lesenswert?

Jens schrieb:
> Kannst du mir sagen wann ich welche Leitung high oder low ziehen muss
> von diesen drei?

Auswendig weis ich das jetzt auch nicht. Das ist zu lange her wo ich mal 
einen IECbus Schnittstelle ganz ohne Mikrokontroller gebastelt habe.

Hast du das Buch https://www.amazon.de/IEC-Bus-Anton-Piotrowski


In den neueren Ausgaben ist der Nec7210 beschrieben. Ansonsten sich an 
den
Intel 8291 8292 und 8293 orientieren der ist auch in dem Buch 
beschrieben.

Dort kann man nachlesen wann welche Leitung gesetzt werden muss.

Das Buch solltest du dir zwingend als Informationshilfe besorgen. Da 
steht sehr viel detailiert an Informationen drin was du benötigst.

Der 8291 und 8292 wurde auch in Verbindung mit dem Bustreiber 75160/161 
statt dem 8293 betrieben. Aber besser durchblickbar ist der Nec7210 ( 
eventuell Datenblatt runterladen ).

https://www.google.de/search?q=intel+8291&ie=utf-8&oe=utf-8&client=firefox-b&gfe_rd=cr&ei=KEGIWMPKBcbEaOKeksAL#q=intel+8292+datasheet

https://www.google.de/search?q=nec7210&ie=utf-8&oe=utf-8&client=firefox-b-ab&gfe_rd=cr&ei=wkSIWPSAC8TBaKOEpoAE#q=nec+7210

http://www.datasheetcatalog.com/datasheets_pdf/U/P/D/7/UPD7210.shtml

Jens schrieb:
> Ich bin mir nicht sicher, wie ich mit dem debuggen des Busses anfangen
> soll. Einen Logic Analyser habe ich. Wo würdest du anfangen?

Ich würde alle 16 Leitungen an den logiganalyzer anschließen und auf DAV 
triggern. Dann sieht man alle Aktivitäten auf dem Bus. Aber du brauchst 
einen sehr tiefen Speicher weil der DAV nur 200nS lang sein kann aber 
zwischen ersten und letzten Ereignis unter Umständen eine Sekunde liegen 
kann (bis das letzte Byte übertragen wurde und das Gerät deadressiert 
wurde ). Selbst zwischen erstmalige Adressierung und der ersten Antwort 
kann eine Zeit dauern.

Hilfreich ist wenn der Logikanalyzer nicht zeitlich linear aufzeichnen 
muss, sondern nur dann aufzeichnet, wenn sich irgendwo einByte ändert 
und intern ein Zeitstempel benutzt. Das spart jede Menge Speicher , 
welche sonst größtenteils mit unnützen immer gleichen Informationen 
vollgeschrieben wird.

Ralph Berres

von Jens (Gast)


Lesenswert?

Hallo,

also ich bin einen Schritt weiter.
Ich habe nun die Schnittstellen ICs raus geschmissen. Ohne die 
funktioniert das. Mit ihnen nicht so richtig. Liegt wahrscheinlich an 
den Steuersignalen, die die Datenflussrichtung vorgeben. Da habe ich 
auch keine weiteren Infos gefunden. Das Buch, von dem gesprochen wurde, 
habe ich, aber in meiner Ausgabe gehen die weder auf den NEC noch auf 
die SN75160 weiter ein.
Das Empfangen von Werten funktioniert soweit. Die Signale habe ich mir 
mit dem Logic Analyzer angesehen und das passt soweit. Die 
Handshakeleitungen werden gesetzt wie es in der Norm vorgegeben wird.
Ich habe auch alles so angeschlossen wie es in der Anleitung vom 
Messgerät angegeben wird.
Ich habe nun das Multimeter an den Eingängen kurz geschlossen und auf V= 
gestellt. Die Anzeige zeigt +000.00mV. Der String den ich erhalten 
sollte muss also mit dem + anfangen (zum Vergleich: in meinem ersten 
Beitrag ist der Ausschnitt aus dem Handbuch des Messgerätes mit 
angehängt). In hex also 0x2B. Ich bekomme aber 0xB2. Irgendwie scheint 
das High-Nibble und das Low-Nibbel vertauscht zu sein.
Heute ist es schon spät. Ich werde morgen nochmal die Verdrahtung am 
Stecker prüfen. Nur um sicher zu gehen, dass da alles richtig ist.

Ist bei euch was bekannt, dass die Geräte manchmal die Nibbles 
vertauschen oder ist das zu 100% auf einen Verdrahtungsfehler zurück zu 
führen?

Ich werde den Fortschritt weiter berichten.

Grüße, Jens

von Soul E. (Gast)


Lesenswert?

Jens schrieb:

> Ich habe nun die Schnittstellen ICs raus geschmissen. Ohne die
> funktioniert das. Mit ihnen nicht so richtig. Liegt wahrscheinlich an
> den Steuersignalen, die die Datenflussrichtung vorgeben.

TE ist Talk Enable. Setzt Du auf High zum Senden und auf Low zum 
Empfangen.
PE ist Pullup Enable. Üblicherweise auf High für Push-Pull Ausgänge. Low 
schaltet auf open collector (für parallel poll), braucht erstmal keiner.
DC ist Direction Control. High für Geräte (devices), Low für den 
Busmaster (controller). Du bist Busmaster, also Low.


> Ist bei euch was bekannt, dass die Geräte manchmal die Nibbles
> vertauschen oder ist das zu 100% auf einen Verdrahtungsfehler zurück zu
> führen?

Das ist Sache des Gerätes, auf dem Bus wird nichts vertauscht. Wenn Dein 
Multimeter laut Anleitung 0x2B ausgeben soll, sollte das auch 
rauskommen.

Das untere Nibble ist auf der breiten Seite von dem Stecker.

von Ralph B. (rberres)


Lesenswert?

Jens schrieb:
> Ich habe nun die Schnittstellen ICs raus geschmissen. Ohne die
> funktioniert das.

Wenn du nur ein Gerät am Bus hast, mag das funktionieren. Aber der 
Bustreiber kann mindestens 48mA treiben und hat meines Wissens die 
Terminierungswiderstände nach + und - mit an Board ( ansonsten must du 
sie vorsehen ).

Spätestens wenn du mehrere Geräte am Bus hängen hast benötigst du die 
Bustreiber zwingend. Der Bustriber ist für 16 Geräte ausgelegt ( wie es 
die Norm auch vorschreibt ).

Ich meine die Bustreiber invertieren auch.

Auf jeden Fall ist die logik auf dem IEC-Bus negativ, weil das Bussystem 
einen verdrahteten Odergatter darstellt. Also 5V = logisch 0 und 0V = 
Logisch1 1.

Jens schrieb:
> Das Buch, von dem gesprochen wurde,
> habe ich, aber in meiner Ausgabe gehen die weder auf den NEC noch auf
> die SN75160 weiter ein.

Dann scheinst du eine asbach uralte Ausgabe zu haben. Ich habe zwei 
Exemplare. In der einen fehlt der Nec7210 auch, in der anderen ist sie 
ausführlich beschrieben. Aber in dem Nec Datenblatt ist m.W. die 
Beschaltung mit den SN75160ger Serie auch beschrieben.

von Jens (Gast)


Lesenswert?

@Soul eye:
das steht aber anders im Datenblatt. Die Treiber haben keinen Push-Pull 
Ausgang. Die kann man nur zwischen Open-Collector und High-Z umschalten 
mit PE.

@Ralph:
Ja die Version von meinem Buch scheint eine alte zu sein.
Ich werde zunächst versuchen den Bus direkt mit dem Controller zu 
verbinden. Das funktioniert ja auch schon. Wenn ich später dann doch 
mehr Geräte verbinden will, dann kann ich die Treiber ja wieder 
einbauen. Die Elektronik ist ja dafür ausgelegt. Momentan brauche ich es 
nicht. Ziel war es eigentlich nur mit dem Multimeter sprechen zu können.
Ich habe an die Controller-Pins die Pull Up Widerstände ergänzt. Nur mit 
den internen ist mir das zu riskant.

Die nächsten Schritte sind:
- Zunächst die Listener Funktion fertig machen (Datenbytes richtig 
anschliepen)
- Die Talker Funktion im nächsten Schritt
- Die Controller Funktion

Ich berichte weiter...
Danke für die Unterstützung.

Grüße, Jens

von Joachim B. (jar)


Lesenswert?

Ralph B. schrieb:
> Wenn du nur ein Gerät am Bus hast, mag das funktionieren. Aber der
> Bustreiber kann mindestens 48mA treiben und hat meines Wissens die
> Terminierungswiderstände nach + und - mit an Board ( ansonsten must du
> sie vorsehen ).

deswegen finde ichdie Atmel Lösung so charmant, so ein Atmel Port kann 
schon 40mA

http://blog.tynemouthsoftware.co.uk/2015/01/usb-to-ieee-488-for-commodore-disk-drives.html
Beitrag "[S] GPIB-USB Adapter"

da gibt es einiges als virtual Com Umsetzung auf USB

ich suche weiter, will das ja auch bauen

von Soul E. (Gast)


Angehängte Dateien:

Lesenswert?

Jens schrieb:
> @Soul eye:
> das steht aber anders im Datenblatt. Die Treiber haben keinen Push-Pull
> Ausgang. Die kann man nur zwischen Open-Collector und High-Z umschalten
> mit PE.

Ich weiss nicht was Du für ein Datenblatt hast, aber in dem von NS steht 
es auf Seite 8 definitiv so drin.

von Joachim B. (jar)


Lesenswert?

so dieses möchte ich nachbauen
http://www.kingswood-consulting.co.uk/gpib/

Ralph B. schrieb:
> Wenn du nur ein Gerät am Bus hast, mag das funktionieren. Aber der
> Bustreiber kann mindestens 48mA treiben

Atmel als Driver dürfte im Strom reichen
http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf
DC Current per I/O Pin . . . . . . . . . . . . . . . . . . 40.0mA

Atmel 32U4 habe ich schon 2x bekommen
http://www.ebay.de/itm/Arduino-pro-micro-kompatibles-Board-Atmel-ATmega32U4-16MHz-5V-/221656602005?hash=item339bc35595:g:jiYAAOSwG-1WxKnG

SW
http://hg.kingswood-consulting.co.uk/gpib/

vermutlich noch nacharbeiten müssen

sieht aber erst mal brauchbar aus

: Bearbeitet durch User
von Ralph B. (rberres)


Lesenswert?

Joachim B. schrieb:
> Atmel als Driver dürfte im Strom reichen
> http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf
> DC Current per I/O Pin . . . . . . . . . . . . . . . . . . 40.0mA

wo hast du das gelesen?

Joachim B. schrieb:
> http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf

Seite 401 lese ich was von 20mA

Ralph Berres

von Joachim B. (jar)


Lesenswert?

Ralph B. schrieb:
> Seite 401 lese ich was von 20mA

http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf
Seite 383

nicht alle Pins müssen ja liefern und die max. Gerätezahl wird der 
Hobbyist ja nicht anschliessen.

: Bearbeitet durch User
von Ralph B. (rberres)


Lesenswert?

Joachim B. schrieb:
> http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf
> Seite 383

Das sind die absoluten Maximalwerte die man dem Pin zumuten darf ehe er 
kaputt geht, und nicht die Ströme die fließen dürfen um die Pegelgrenzen 
nicht zu verlassen.



Joachim B. schrieb:
> und die max. Gerätezahl wird der
> Hobbyist ja nicht anschliessen.

Naja wer einmal ein IECbus eingeführt hat wird nach und nach alle 
iecbusfähigen Geräte anschließen. Und da sind 8 Stück schnell erreicht.

Ralph Berres

von Joachim B. (jar)


Lesenswert?

Ralph B. schrieb:
> Naja wer einmal ein IECbus eingeführt hat wird nach und nach alle
> iecbusfähigen Geräte anschließen. Und da sind 8 Stück schnell erreicht.
>
> Ralph Berres

ich habe nur 4 und wer es dringend braucht für mehr holt sich eben das 
original Treiberpaar und wer den einen nur noch als SMD bekommt bestellt 
sich eine kleine Adapterplatine auf DIL in China

vergessen wir mal nicht das Topic:

Jens W. schrieb:
> ich habe hier zu Hause ein älteres Messgerät von Philips. Ein PM2528.
> Dabei handelt es sich um ein digital Multimeter mit 5,5 Stellen
> Auflösung. Das Gerät lässt sich laut Anleitung über den GPIB Bus
> ansteuern.
> Nun möchte ich es um eine Scannerkarte erweitern um damit Batteriepacks
> vermessen zu können.

EIN Gerät, das dürfte der Atmel doch schaffen.

: Bearbeitet durch User
von Jens (Gast)


Lesenswert?

@Soul eye:
Ja, ich habe es in deinem Datenblatt auch so gelesen-Push-Pull. In 
meinem (von Texas) ist es anders bzw. nicht beschrieben.
Aber so wie es aussieht ist das Datenblatt, das ich nutze nicht gut und 
nur eine gekürzte Version. Kein Wunder wenn ich damit nicht zurecht 
komme.
Da sieht das von dir viel besser aus.
Danke.

Ich werde trotzdem erst einmal nur die Controller Pins nutzen. Wenn das 
alles funktioniert baue ich die Treiber ICs wieder ein und switche um.
Dann suche ich nicht immer mehrere Fehler gleichzeitig.

@Joachim:
Da du auch so eine Kiste bauen willst. Ich hoffe du hast einen Logic 
Analyzer. Der hilft hier wirklich weiter.
Ein Debuggen der Buskommunikation ist mit einem Oszi kaum möglich, da 
selbst große Geräte nur vier Eingänge haben. Und die sind schon mit den 
Handshake Leitungen belegt. (DAV, NRFD, NDAC, EOI). Gut EOI bräuchte man 
nicht unbedingt, aber es hilft, wenn man auf einen ganzen String 
Triggern will.

Ich lade hier ein paar Screenshots hoch, wenn ich soweit bin.

Gruß, Jens

von Jens (Gast)


Angehängte Dateien:

Lesenswert?

Hallo an alle,

also es war noch ein Verdrahtungsfehler am Stecker drin.
Jetzt läuft alles so wie es soll. Zumindest das Empfangen.
Die Zeichen werden richtig am Logic Analyzer angezeigt und auch richtig 
über die serielle Schnittstelle übertragen.

Soweit zum Empfangen. Als nächstes kommt das Senden dran und die 
eigentliche Steuerung des Messgerätes.

Damit euch nicht langweilig wird habe ich euch ein paar Bilder von der 
Kiste angehängt.

Ich berichte weiter...

Grüße, Jens

von Joachim B. (jar)


Lesenswert?

Jens schrieb:
> @Joachim:
> Da du auch so eine Kiste bauen willst. Ich hoffe du hast einen Logic
> Analyzer. Der hilft hier wirklich weiter.

leider nur zwei 4-Kanal TEK 3014 alt 3014 neu

entweder kaufe ich mir noch einen billigen LA oder die Option für den 
MSO/DPO3000

TEKTRONIX  MDO3MSO  Oszilloskop-Modul, 16 Digital Channel Upgrading 
Module, Tektronix MDO3000 Series Oscilloscopes, 1.430,00 €

puh billiger LA wäre wohl einfacher.

Jens schrieb:
> Ich berichte weiter...
>
> Grüße, Jens

freut mich

von Jens (Gast)


Lesenswert?

Hallo Joachim,


Ich habe den Zero Plus Lap-C 16032.
Der kostet um die 170 Euro. Da ist der Codec für GPIB dabei. Wie die 
Software aussieht, siehst du ja oben in meinem Bild.
Ich bin damit sehr zufrieden.

https://www.zeitech.de/Zeroplus-LAP-C16032-16-Kanal-Logic-Analyzer


Grüße, Jens

von Jens (Gast)


Lesenswert?

Hallo an alle,

so die write-Funktion ist auch fertig und läuft soweit.
Die Funktionen des Messgerätes lassen sich durchschalten. Auch die 
Anzeige auf der Front "REMOTE" wird angezeigt. Ist also eine echte 
Fernsteuerung.

Ein Problem ist noch:
Wenn ich in den Widerstandsmessbereich schalte und das Display "OL" 
anzeigt, dann scheint das Messgerät nicht mehr auf die Schnittstelle zu 
hören. Kann aber gut sein, dass man erst den Messwert richtig abholen 
muss. Keine Ahnung warum das so ist. Alle anderen Messbereiche 
funktionieren richtig. Das Handbuch des PM2528 schweigt sich hier leider 
aus.
Aber das macht nichts. Da ich in Akkupacks die Spannung messen will, ist 
das keine Einschränkung für mich. Da werde ich nicht mehr so viel Zeit 
rein stecken.

Ich werde nun Messbereichumschaltung, Trigger und Messwert abholen 
testen.
Das hat aber mehr damit zu tun, wie ich die serielle Schnittstelle 
implementiere als GPIB-Funktionalität.

@Joachim:
Wie läuft es bei dir?

Grüße, Jens

von Joachim B. (jar)


Lesenswert?

Jens schrieb:
> @Joachim:
> Wie läuft es bei dir?

dat dauert noch ewig! (man muss ja Ziele für die Zukunft haben)

bin grad beim Kochen 2,5kg Rosenkohl schnippeln dauert!
Dann Netzwerkverkabelung erweitern.
Irgendwann Gäste-, Kino-zimmer ausräumen, Tapete runter, Leitungen 
legen, tapezieren und einrichten.

von Jens (Gast)


Lesenswert?

Hallo an alle,

so das letzte Problem ist auch noch gelöst.
Wenn das Messgerät auf "OL" (Overload) schaltet, weil bei der 
Widerstandsmessung kein Widerstand an den Klemmen angeschlossen ist, 
dann erwartet das Messgerät einen Service Request.
Ohne den reagiert die Schnittstelle nicht mehr auf Befehle wie 
Umschalten oder so was.
Da bei der Spannungsmessung (auch mit offenen Klemmen) der Overload 
nicht auftritt, bereiten die Messbereiche keine Probleme.
Den Service Request kann man auch über die Schnittstelle deaktivieren. 
Dann gibt es hier kein Problem. Oder man implementiert noch die Funktion 
für den Service Request.

Für meine Zwecke funktioniert das soweit ist es brauche.
Damit wäre ich dann auch durch.

Danke an alle für die freundliche Hilfe!

Viele Grüße, Jens

von Ralph B. (rberres)


Lesenswert?

der Service Request kann aber wichtig sein, wenn man in einen Programm 
nicht dauernd und regelmäßig pollen will.

Ralph Berres

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.