_@¡ použijte menu „FILTROVAT TÉMA...“ pro výběr
Měřící přístroje používají komunikační rozhraní GPIB. A je potřeba si s nimi povídat. Nemyslím, že by to správné získávání dat bylo focení obrazovky přístroje, taktéž potřebuji získat data pro další zpracování.
Takto vypadá GPIB konektor v měřáku [1]
Abych se k tomuto rozhraní mohl připojit potřebuji kabel, který bude mít správný protikus, ideálně pro připojení do USB.
propojovací kabel
Existuje i originální redukce pro připojení GBIP-USB, třeba tato [2]
GPIB-USB, žel stojí naprosto nesmyslné peníze
Čínská kopie je dostupnější, vypadá stejně, opravdu funguje, cenově za desetinu výše uvedeného originálu, ale pořád – ač jen desetina ceny – vyjde přes dva tisíce korun.
Lze takový komunikační kabel postavit doma?
Konektor je to Centronix 24 pin. Dá se koupit, ale víme, že staré tiskárny používaly konektor Centronix, který má 36pinů. Dá se najít na sběrném dvoře nebo se vám válí někde v kanceláři. Ano, dá se i koupit [3], ale překročil bych výše zmíněný rozpočet.
zkrácený konektor ze staré tiskárny
A pak chybí už jen Arduino Nano, nejlevnjější klon... Arduino Pro Micro[3]. Funguje i originální Arduino UNO. Žel se mně to nepodařilo rozběhnout s klony, které mají převodník CH340. Netvrdím, že to nejde, ale mně se to nepodařilo rozběhnout. Arduino Pro Micro je jistota a je tak malé, že může být součástí konektoru.
Jak to zapojit? A kde vzít program pro Arduino?
Projekt AR488 na [github] nabízí řešení v jednom balíčku a to nejen pro USB, ale třeba i pro Bluetooth komunikaci. Projekt je výborně zdokumentovaný a funguje.
Nebyl jsem si jist orientací konektoru
[zdroj]
Arduino GPIB
pin pin function
--------------------
A2 7 NRFD
A1 6 DAV
A0 5 EOI
D5 17 REN
D7 10 SRQ
D2 11 ATN
A3 8 NDAC
D4 9 IFC
D3 1 DIO1
D15 2 DIO2
D16 3 DIO3
D14 4 DIO4
D8 13 DIO5
D9 14 DIO6
D10 15 DIO7
D6 16 DIO8
GND 12 Shield
GND 18,19,20,21,22,23 GND
Protože mám o svůj měřák obavy a drže se přísloví dvakrát měř a jednou řež, raději pořádně zkontroluju zapojení konektoru GPIB k Arduinu. Napsal jsem malinký program[4], který umožní ruční otestování správného zapojení pin po pinu.
test zadrátování byl úspěšný
Teď už jen nahrát správný program pro komunikaci. Dá stáhnou buď už zkompilovaný jako [hex] nebo ve formě zdrojového kódu [tady]. Volím zdrojový kód a během chvilky mám nahráno v Arduino Pro Micro. Není potřeba nic nastavovat, podle nastavení cílové platformy zvolí sám veškeré nastavení.
Komunikace s počítačem a stažení dat
Velmi záleží na tom, k jakému zařízení se chceme připojit. V každém GPIB manuálu najdeme příkaz *IDN? – na který nám má zařízení vrátit svoje jméno a používá se k testu spojení. Jenže, ne každé starší zařízení tohle umí. Pokud má pro ukládání dat třeba moderní 3.5" disketu, tak to umět bude. Starší spíš ne.
Na úplný test rozhraní AR488 postačí, když se připojím sériovým terminálem, třeba z Arduino IDE,
přes které jsem nahrával do Pro Micro komunikační software. Příkaz s prefixem ++ je určený pro kontroler, bez prefixu pro adresované zařízení ++ver vrátí např. AR488 GPIB controller, ver. 0.51.04, 27/01/2022
++addr XX kde XX je GPIB adresa mého zařízení, pro mě je to ++addr 11
pak už všechny příkazy bez ++ budou posílány zařízení na dané adrese, pro další příkazy už záleží na zařízeníl, např. posílání příkazu, které mají něco vykonat
DS
L1HELLO
DG
ale příkaz, který má vrátit nějaká data
D3T3 – musí být následován příkazem ++read případně ++read eot – aby se přečetla všechna vrácená data
Velmi záleží na tom, k jakému zařízení se chceme připojit. V každém GPIB manuálu najdeme příkaz *IDN? – na který nám má zařízení vrátit svoje jméno a používá se k testu spojení. Jenže, ne každé starší zařízení tohle umí. Pokud má pro ukládání dat třeba moderní 3.5" disketu, tak to umět bude. Starší spíš ne.
Na úplný test rozhraní AR488 postačí, když se připojím sériovým terminálem, třeba z Arduino IDE,
přes které jsem nahrával do Pro Micro komunikační software. Příkaz s prefixem ++ je určený pro kontroler, bez prefixu pro adresované zařízení
++ver vrátí např. AR488 GPIB controller, ver. 0.51.04, 27/01/2022Na úplný test rozhraní AR488 postačí, když se připojím sériovým terminálem, třeba z Arduino IDE,
přes které jsem nahrával do Pro Micro komunikační software. Příkaz s prefixem ++ je určený pro kontroler, bez prefixu pro adresované zařízení
++addr XX kde XX je GPIB adresa mého zařízení, pro mě je to ++addr 11
pak už všechny příkazy bez ++ budou posílány zařízení na dané adrese, pro další příkazy už záleží na zařízeníl, např. posílání příkazu, které mají něco vykonat
DS
L1HELLO
DG
ale příkaz, který má vrátit nějaká data
D3T3 – musí být následován příkazem ++read případně ++read eot – aby se přečetla všechna vrácená data
Nějaké programové rozhraní ke komunikaci
Mám rád jazyk Python, protože je přehledný a schůdný i pro začátečníky. Takový Pascal dvacátého prvního století. Naprosto jednoduché rozhraní pro AR488 v Pythonu a i když z Pythonem nejste kamarádi, stačí nainstalovat prostředí Thonny[5], které je pro Mac, Linux i Windows a pokud sedíte u Raspberry Pi, tak je pravděpodobně již součástí prvotní instalace. Je ke stažení kód viz [6], který stačí vložit do editoru a spustit. Jediné místo, které musíme změnit je port="XXX" na adresu portu, kde mám svoje AR488 připojené. Je to vidět v Arduino IDE, kde jsem vybíral port, pro nahrání software.Řádek 51 def __init__(self, port="COM9", baudrate=115200, timeout=1):a or řádku 122 jsou vkládány první příkazy, opět výše zmíněný a oblíbený *IDN? Jiný způsob komunikace pomocí rozhraní VISA je zmíněná v tomto [youtube] videu včetně odkazů a funčního kódu v C#. Jsou i zajímavější řešení pro kombinaci starých měřících zařízení s rozhraním GPIB s moderními s LAN/LXI [7]; strýc Anubis to používá pro komunikaci se smečkou multimetrů a jednou to své řešení zabloguje.
A co krabička?
Možná ani není potřeba, ale pro Arduino Nano je ke stažení [model] k tisku. Tudíž Pro Micro se tam vejde, protože je asi poloviční velikosti. Dobře zajištěné tavným lepidlem funguje.
Možná ani není potřeba, ale pro Arduino Nano je ke stažení [model] k tisku. Tudíž Pro Micro se tam vejde, protože je asi poloviční velikosti. Dobře zajištěné tavným lepidlem funguje.
Víc profi řešení
Velmi elegantní řešení by bylo použít konverzní plošný spoj, kde z jedné strany je konektor a z druhé strany Arduino Pro Micro. Tuhle krásnou destičku[8] mně věnoval strýc Anubis, žel jsem ji zničil při pokusu o připájení na svůj zbastlený zkrácený konektor. A teď se stydím.takové pěkné jsem to mohl mít
Velmi elegantní řešení by bylo použít konverzní plošný spoj, kde z jedné strany je konektor a z druhé strany Arduino Pro Micro. Tuhle krásnou destičku[8] mně věnoval strýc Anubis, žel jsem ji zničil při pokusu o připájení na svůj zbastlený zkrácený konektor. A teď se stydím.
takové pěkné jsem to mohl mít
S čím vlastně chci GPIB komunikovat?
HP3585A – viz [jiný článek] na blogu.
Zdroje:
[9] bakalářská práce podrobně rozebírající problematiku GPIB
[10] první verze základní komunikace pomocí Arduina z roku 2014
[11] aktuální a živý projekt AR488 s podrobnou dokumentací na github, který jsem použil
[12] manuál s příkazy Prologix, který AR488 emuluje
[13] dobré youtube video na téma „GPIB - jak stahuji data ze starších měřících přístrojů.“
[14] GPIB pomocí Raspberry Pi