Novice LS user: Changing 'Input Configuration' on a NI DAQ (6363) card

98 views
Skip to first unread message

Connor Roncaioli

unread,
Jan 8, 2021, 5:53:55 PM1/8/21
to the labscript suite
Hello,

I'm working with a NI USB-6363 DAQ card to read in a signal using the analog input channels. The NI MAX user interface lets me adjust the input configuration between Differential, Single Ended Ground-referenced (RSE), and Single Ended non-referenced (NRSE) modes. Is there a way to adjust the analog input configuration in Labscript? I have already searched labscript_devices.py for an appropriate property_names declaration and I cannot find anything that would make sense referring to Differential/RSE/NRSE.

Thanks,
Connor

dihm....@gmail.com

unread,
Jan 9, 2021, 3:17:54 PM1/9/21
to the labscript suite
Hi Connor,

This is because the NI-DAQ labscript driver only supports RSE analog inputs. At some level, it shouldn't be impossible to add support for other input types, but it would take a bit of work and the primary dev for that driver is pretty busy these days.

I'm actually pretty interested in at least getting diff inputs working since specific NI DAQs only allow that mode (see this issue). With appropriate motivation, and finding some time, I may be able to get it working. Is there a particular reason you need these other input modes?

-David

Philip Starkey

unread,
Jan 9, 2021, 8:34:46 PM1/9/21
to labscri...@googlegroups.com
Hi Connor and David,

The relevant line (where the channel is configured) is here. In the past when people have needed NI DAQ customisation, the easiest solution has just been to hack in an if statement at this point catching a specific MAX_name and channel, and configuring that one differently. Would be great to have it officially supported though. I think the biggest blocker to that is labscript#49, as there is no easy way to store per channel configuration options (output/input channel "device_properties") in the HDF5 file. There are workarounds of course (like manually storing channel configuration in the parent device group, or abusing the "connection_table_properties" storage), but it would be good to decide on a proper structure for storing them before adding other features that rely on it (which thinking about it is probably just a JSON encoded dictionary, keyed by channel name, stored as an HDF5 attribute of the group for the parent device)

Cheers,
Phil

--
You received this message because you are subscribed to the Google Groups "the labscript suite" group.
To unsubscribe from this group and stop receiving emails from it, send an email to labscriptsuit...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/labscriptsuite/026a02b9-3805-4e09-bf8e-5e67d3fc9c84n%40googlegroups.com.


--
Dr Philip Starkey
Senior Technician (Lightboard developer)

School of Physics & Astronomy
Monash University
10 College Walk, Clayton Campus
Victoria 3800, Australia

Connor Roncaioli

unread,
Jan 11, 2021, 10:39:30 AM1/11/21
to the labscript suite
Hi David, Philip,

Thanks for the replies! They've been very useful. The goal of switching some of our input channels to Differential mode was to read in from a photodetector. It's not immediately clear to me whether the photodetector is a grounded or floating signal source (something we've contacted the producer about) but RSE seems to be a poor fit for our goals either way.

Philip the hack you suggested worked pretty well. The one catch is that we had to change the for loop to only iterate over the first seven channels (changing chans to chans[:7]) since channel ai8 in the 6363 is set to AI SENSE and does not support a change to  DAQmx_Val_Diff. This seems to work for the moment, but I'm unsure if there is an unintended consequence for not initializing channels that we are not using.

The switch to differential mode did an incredible job in dropping noise for our PD. So thanks again for the help!

Best,
Connor R 
Reply all
Reply to author
Forward
0 new messages