Git Product home page Git Product logo

gpib-adapter's Introduction

GPIB adapter using Arduino Nano

Copyright 2018 Toby Thain toby at telegraphics.com.au

Parts list

Item Qty Digikey Part #
Protoboard 1 SBB1605-1-ND
IC socket 20 pin† 2 ED11088-ND
Header 15 position 2 ED11218-ND
Decoupling caps, ceramic 0.1µF 2 BC1154CT-ND
Data Transceiver SN75160BN 1 296-6845-5-ND
Control Transceiver SN75161BN 1 296-6847-5-ND
GPIB cable 1 Ebay - search
Arduino Nano compatible 1 BrianPTY's Tindie store
USB Mini-B cable for Nano 1
Hookup wire
Zip tie

It's assumed you already have tools including solder, iron, drill, wire strippers, X-acto knife, etc.

† My version used the 22 pin DS75162AN, so if you obtain one of these (e.g. ebay) order the 22 pin socket.

Item Qty Digikey Part #
IC socket 22 pin 1 ED11093-ND

Pictures of assembled adapter

Assembled adapter

Note on transceiver controlled bidirectional lines

Pull-up and pull-down resistors ensure the transceiver will read a defined logic level while these pins are high-Z but before transceiver direction is switched.

  • D1-8 - pull up at GPIO/terminal - Arduino internal pullups can be used
  • EOI - pull up at GPIO/terminal - Arduino internal pullups can be used
  • DAV - pull up at GPIO/terminal - Arduino internal pullups can be used
  • NRFD - pull down at GPIO/terminal with 22kΩ resistor to GND
  • NDAC - pull down at GPIO/terminal with 22kΩ resistor to GND

Success

Adapter fully works. For example I have been able to capture curve data and hardcopy imagery.

Hardcopy example

Curve example

Using screen to interact

You can connect to the adapter and send GPIB commands interactively. Find the device name for the USB/serial port on the Arduino - e.g. check Tools->Port in the Arduino IDE.

E.g. on my system, screen /dev/cu.wchusbserial3d20 115200 -L gives you a terminal opened on that port.

  • To exit screen but stay connected to the port, type control-A d

    • You will not be able to upload new code to the Arduino while connected
  • To exit and close port, control-A control-\ (and type y at the prompt)

  • You will probably want to type ++v 1 at the start of your session to enable interactive features like input echo and read-after-write (auto 1).

    2018-07-04 GPIB/Arduino Controller by Toby Thain <[email protected]>
    Use  ++v 1  for interactive session. See  ++help
    
    > ++addr 2
    
    > *idn?
    TEKTRONIX,TDS 460A,0,CF:91.1CT FV:v1.0.2e
    
    >
    

Test plan

There are test routines which can be enabled in the source. Use them in combination with the steps below.

  • Disconnect from bus
  • Output test #1
    • Send square wave to TE (D13), PE (D10) output pins, verify on Arduino side - PASS
  • Output test #2
    • Send square wave to each permanent output pin, verify on Arduino side and bus side - PASS
      • ATN (D12)
      • IFC (A4)
      • REN (A5)
  • Input test #1 By hand set LOW (ground through a 1K resistor for current limiting) and set HIGH (VCC through a 1K resistor for current limiting), verify at Arduino (e.g. read input and print to serial) - PASS
    • SRQ
  • Output test #3
    • Set TE (Talk Enable) HIGH, PE HIGH, ATN HIGH
    • Send square wave to each switchable output pin, verify on Arduino side and bus side
      • B1-8 (D2-D9) - PASS
      • EOI (D11) - PASS
      • DAV (A1) - PASS
  • Input test #2
    • Set TE (Talk Enable) HIGH, PE HIGH, ATN HIGH
      • Verify NRFD as input - input test #2 - PASS
      • Verify NDAC as input - input test #2 - PASS
  • Input test #3
    • Set TE (Talk Enable) LOW
    • Each switchable input pin: By hand set LOW and set HIGH, verify at Arduino
      • D1-8 - PASS
      • EOI - PASS
      • DAV - PASS
  • Output test #4
    • Set TE (Talk Enable) LOW
    • Verify NRFD (A2) as output - PASS
    • Verify NDAC (A3) as output - PASS

Other projects

  • Emanuele Girlando - ARDUINO UNO as a USB to GPIB controller
    • My project is completely independent Emanuele's design, but we did both choose Prologix compatibility. Note Emanuele's project is direct connect to Arduino GPIO, without buffering. This may affect usage with multiple device buses.

      This file is part of "GPIB Adapter", an Arduino based controller for GPIB (IEEE 488). Copyright (C) 2018 Toby Thain, [email protected]

      This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

      This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

      You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

gpib-adapter's People

Contributors

qu1j0t3 avatar toby5box avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

arakiliu ve7it

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.