Nice, I must give this a try. Between work and the whole Covid mess I got sidetracked and have not had a chance to mess with this lately.
Thanks for all the work you guys are putting into this project. Since this thread started with just a couple of the full size uno and mega boards and has now evolved into multiple variants of micro, mini, esp, rasberry, etc... is there a simple way of adding a document on the github or on 1st page of topic with maybe excel tables with which version arduino, wifi/bluetooth/ethernet support/ and maybe verified equipment that has been tested working. Bonus points for rounding up different pcb adapter links that have been used so there could be easier way to have someone like myself say well I have a few V3 nanos but want bluetooth connectivity to x multimeter and x o-scope. Would be cool to see what members have already tested sucessfully and would let those thinking about building up the ar488 see if a different version board would be a better option. If this sounds like it should be on a seperate forum topic please chime in.
MCU | Board | Serial Ports | Layouts |
328p | Uno R3 | Single UART shared with USB | Layout as per original project by Emanuelle Girlando |
328p | Nano | USB/Single UART shared with USB | Identical to Uno |
32u4 | Micro | USB/CDC+1 UART | Compact layout by Artag, designed for his back-of-IEEE488-plug adapter board |
32u4 | Leonardo R3 | USB/CDC+1 UART | Identical to UNO |
2560 | Mega 2560 | 4 x UART, Serial0 shared with USB | D - default using pins to either side of board E1 using first row of end connector E2 - using second row of end connector |
ESP32 | Various | 3 x UART, U0UXD/Serial0 shared with USB | In development |
I haven't had a chance to try the TDS400 but I had to do something with a TDS700 already so I tried plotting from it. I can confirm that once I sent a ++lon and then loaded up the plotter emulator I was able to hit Hardcopy and it plots perfectly.
So do we know at this point whether the need to send ++lon is a bug in the GPIB interface or in the 7470A emulator?
Got it working with a Fluke 8840a
I'm not sure that the need to send ++lon should be characterised as a bug. It simply places the interface in the required operating mode. Looking at the manual, the TDS-700, like the TDS-400, operates in non-addressed or talk-only mode. In order to receive, the "plotter" would need to be in the corresponding non-addressed listen-only mode. This is what the ++lon command does. This kind of direct point-to-point communication makes sense in a 1:1 scenario where you have a plotter connected directly to the back of an instrument with the instrument pushing data over the GPIB wires to the plotter.
Got it working with a Fluke 8840a
Sorry for missing your earlier comment and thank you for posting your photos. Interesting to see different instruments being connected. Curious that you didn't use an IEEE488 connector but soldered directly to the board inside the instrument. Are you intending to mount this internally somehow? I haven't tried those Elegoo boards so its good to see that they do also work.
The interface is connected to my Solartron 7061 which performs logging using PuTTy or the arduino serial monitor
I am trying to read out the memory of the 7061. I can do this 1 memory location at a time but to do this automatically has exceeded my skill level :-)
For example:
Using the serial monitor (red is my typed command)
DU is the 7061 command to DUmp the memory contents
HIST is the memory location of the particular measurement being read back.
Hello from AR_SERIAL :-)
++Auto 2
++Read
-0.0000101 VDC CHAN 0
DU
++Read
-0.0000129 VDC CHAN 0 HIST 1
++Read
-0.0000133 VDC CHAN 0 HIST 2
++Read
-0.0000134 VDC CHAN 0 HIST 3
etc
Using this macro
#define MACRO_4 "\
++addr 1\n\
DU\
++auto 3\n\
++read\
returns -0.0000042 VDC CHAN 0 HIST 3 and Bad Argument on the meter
and using this modified macro
#define MACRO_4 "\
++addr 1\n\
DU\
++auto 2\n\
++read\
returns -0.0000054 VDC CHAN 0 HIST 2
Possibly a timing issue, but I'm now a bit stuck, any help greatly appreciated.
Dek
<edit>
If I reorder the macro to
++auto
DU
++Read
then it works
Also works if i enter the commands manually in that order via the serial monitor or PuTTy
Hello from AR_SERIAL :-)
#define MACRO_4 "\
++addr 1\n\
DU\n\
++auto 3\n\
++read\
"
#define MACRO_4 "\
++addr 1\n\
DU\n\
++auto 2\n\
++read\
"
I have used the AR488 controller on Arduino Nano to talk to many different devices without any problem. But one recently stumped me. Its a Cryocon temperature controller that uses EOI but no EOS characters. I have set the program for ++eoi 1 and ++eos 3 and it still didn't work. The device would switch to remote and then go back to local with ++loc command, so it was getting something. I also verified that EOI line was indeed asserted during the transmission. Crycon worked just fine with NI controller and VISA. Not sure what the problem was, has anyone used an instrument with these settings?
If anyone wants to copy the version I built, you can get PCBs from here : https://oshpark.com/shared_projects/HrS1HLSE
I will probably revise that at some point (I'd like to move the daughterboard further along, making the USB connector stick out less) but don't know how long I'll take to get around to that. The electrical connections will stay the same so the software will still work.
You use the serial port to select the instrument. You can set all the GPIB addresses the same as there is only one on each bus.
Side question, is it still possible to have multiple devices (with unique addresses) on the same gpib bus with one ar488?
Well it's a bug in one part or another, Hardcopy works just fine IF you first load up another program and issue the required command. It's looking to me like it's a bug in the plotter emulator, it should be sending ++lon if you set it to non-addressed mode and then have it listen for a device initiated plot.
If the option to send ++lon is added then I believe that will fix it.