To celebrate Project 14's birthday, I'm going to make a programmable lab instrument with the UNO that I received from tariq.ahmad. The device can be used in a LabVIEW setup and will allow you to control a few relays in an automated test process.
As proof of concept, I will use it to extend the test setup I made for a recent Road Test:Programmable Electronic Load - Automating a DC Switcher Efficiency Test with LabVIEW |
Background
I'm extending the capabilities of my lab. I want to be able to create repeatable and automated test setups.
The goal is to control the lab instruments and have all measurements logged to a document.
My PSU and scope are programmable. Together with two other element14 community members I've designed a programmable DC load.
What I'm missing is a programmable switch that can be used to turn on or off signals. I'll make one for The Birthday Special: Open Arduino.
Hardware
I'll use an Arduino UNO and two relay breakout boards. I received the UNO from element14 to celebrate Project 14's birthday.
I got the two relay boards when I purchased the components from someone who was quitting the electronics hobby a few years ago.
Given that I have all components and that they are very simple, I don't expect any complexity on the electronics part.
Firmware
details: Arduino in Test Instrumentation - Part 1: SCPI Lib
details: Arduino in Test Instrumentation - Part 2: Firmware
The software is a different story. I've automated instruments before with SCPI, but the challenge with the Arduino UNO will be the available memory.
I'll have to fit (or slim down) the SCPI lib that I want to use and leave enough space for serial communication lib and the logic to switch the relays.
I'll support the standard SCPI commands and dedicated ones to control both relays in the Arduino firmware.
Command | Description | Example |
---|---|---|
*IDN? | instrument identity |
*IDN? Project14,Arduino SCPI Switch,1,0 |
*RST | reset instrument. Set all switches off | *RST |
*CLS | same as *RST | *CLS |
:DIGITAL:SWITCH# ON|OFF | turn a switch on or off. 1 based | :DIGI:SWIT1 ON |
:DIGITAL:SWITCH#? | get a switch' status. 1 based |
:DIGITAL:SWITCH1? OFF |
LabVIEW Library
details: Arduino in Test Instrumentation - Part 3a: LabVIEW Driver Intitialisation Block
details: Arduino in Test Instrumentation - Part 3b: LabVIEW Driver Switch Control Block
details: Arduino in Test Instrumentation - Part 3c: LabVIEW Driver Read Status Block
The end game is to include the Arduino switcher in the test setup I made for the RoadTest TI SWIFT Power Module EVM
Just as many instrument manufacturers do, I'll write a LabVIEW library with easy to use blocks: Init, Control and Close.
These blocks will make it easy to include the Arduino switcher into designs and it collaborate in an automated setup.
I'll claim success when I'm able to switch some configuration resistors in and out of my device under test to change its operation parameters.
If I can then run a test cycle It should be possible to capture the device's efficiency with 3 separate output voltage settings, with an input range sweeping from lowest to highest values, pulling between 0 and 7 A from the output.
In total this will be more than 2000 measurements that I'll have to capture.
That's it. Wish me luck.
The LabVIEW project, with driver library and example, is attached.
Top Comments