Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

NI 9269 AO: Set output to high impedance

Solved!
Go to solution

I'm using the NI 9269 module in a cDAQ-9185. When the cDAQ boots, the 9269 output is high impedance (~280k ohms), as specified in the datasheet. However, as soon as I do anything on the cDAQ chassis (including reading AI from the adjacent NI 9205 module have), the output goes to low impedance (0.1 ohms on handheld multimeter). 

I've tried "DAQmx Reset Device" to no effect (just sets the output to zero). It seems I have to reboot the entire cDAQ chassis to get it to go back to high impedance.

 

So, how do I set the output of the NI 9269 to high impedance (in a cDAQ chassis)?

 

SW:

DAQmx 17.5

LabVIEW 2017

C# drivers written for DAQmx drivers (my real use-case, I'm just trying things out in LabVIEW)

 

Use-case:

I have a test case where an AO channel on the 9269 is active low - meaning I can't just write zero to the output to "turn it off" so to speak.

0 Kudos
Message 1 of 10
(4,693 Views)

Hi ColdenRouleau,

 

I do not believe that the output impedance of the 9269 is configurable. I also do not believe that we spec what the output impedance should be while the device is on (not while rebooting). I can look into this further, however it may be best to implement some sort of external circuitry to accomplish the test case task

Applications Engineering
National Instruments
0 Kudos
Message 2 of 10
(4,649 Views)

Hello Sailesh,

 

Can you please look into this further? This is the sort of issue that makes me wish I had purchased different hardware than what I have. I can't use the NI 9269 to control any active-low circuitry because it shorts its output to ground as soon as the cDAQ chassis turns on. I will need to find a non-NI AO solution for this application.

 

Do NI's digital modules allow you to do tri-state?

0 Kudos
Message 3 of 10
(4,644 Views)

Hi Colden,

 

You may just need pull-up resistors for the outputs in order to keep it from shorting to ground when you turn it on

Applications Engineering
National Instruments
0 Kudos
Message 4 of 10
(4,619 Views)

Hello Sailesh,

 

I'm not sure how what you're proposing would solve the problem. If I use some passive circuitry (e.g. resistors) to force the analog output to go high when it is low, how do I write a low analog output values to my device under test? It seems to me that I'd either be stuck with whatever voltage I've hooked up my pull-up resistor to, or perhaps some very small range of values that is highly sensitive to the resistances of the DUT.

 

You said in your original response "I can look into this further" - did you look into this further, and if so, did you conclude with confidence that it is not possible, using software, to set the analog outputs to their power-up high impedance state?

0 Kudos
Message 5 of 10
(4,598 Views)

Hi Colden,

 

Yes I did look into this further, and I did find that we are unable to set the analog outputs to their power-up high impedance state using software. I do believe that a pull-up or pull-down resistor would work for this situation. I would recommend taking a look at one of the resources I have linked below, just to make sure that pull-up/pull down resistors would work for your application. If not, please let me know!

 

Pull Up and Pull Down Resistors

https://playground.arduino.cc/CommonTopics/PullUpDownResistor

Applications Engineering
National Instruments
0 Kudos
Message 6 of 10
(4,584 Views)

Hello Sailesh,

 

That link is about using a pullup resistor on an analog input. I'm looking at an analog output (the 9269). 

 

It's pretty common in digital logic to have a high impedance state (see the wikipedia page https://en.wikipedia.org/wiki/Three-state_logic). It's more difficult to do that for an analog output because you can distort the quality of the signal, it's more expensive, etc. Here's an example of a device that supports a high impedance mode for its analog output:

https://www.rohde-schwarz.com/us/product/hmp-productstartpage_63493-43468.html

(I think it just uses a relay to do so)

 

What I really need is a way to tell the cDAQ chassis to disconnect or stop providing power to the 9269 analog output module so that all of its outputs are effectively high impedance. It's not as good as channel-by-channel disable/enable, but it's better than the current state. That way, when I'm ready to run the tests that require the 9269 to be active, I can then control the outputs as needed, but when I'm not running those tests I can leave the 9269 in a "non-interference" type of mode.

 

It might only be possible to do this within the world of the C-series module development kit (http://www.ni.com/white-paper/9017/en/), if you could hack it to let you play with the 9269 - but that's probably too much work. I bet you could do it in cRIO though by reprogramming the FPGA with a bit file that does not support the module you're trying to disable. Unfortunately cRIO doesn't really work with C# unless I write my own Ethernet "drivers" for the software I load onto the cRIO.

 

Another possibility is that the system configuration API would work if I could find the right function. Maybe I'll try that next.... although then I need it to work in C# so perhaps that's a bit of a longshot.

 

If I do find a resolution I'll post it in this thread.

0 Kudos
Message 7 of 10
(4,574 Views)

What you are asking for is represented in the DAQmx API with the IdleOutputBehavior AO Channel property, which is not supported with the NI 9269.

 

The reason that you're seeing the 9269 channels in high-impedance during boot is because during 9269 bootup all of the modules in the system are held in a sleep state until DAQmx connects and can "take control" of the chassis. The cDAQ-9185 does not support user control of this sleep state. Some CompactRIO chassis do-- on those it is called "sleep mode", and can be enabled or disabled on a per-slot basis. (Unfortunately, the cDAQ-9185 hardware does not have the technical capability to support this on a per-slot basis.)

——
Brandon Streiff
ni.com/compactdaq · ni.com/daq
Message 8 of 10
(4,567 Views)

Hey Brandon,

 

Thanks for the response. Do you know which AO modules do support IdleOutputBehavior or how to figure out which ones do?

 

Am I correct in assuming that the slot-by-slot control is only available on the cRIO platform, and is not available on any cDAQ chassis?

 

Finally, do you know if there's a way to tell the cDAQ chassis to disable ALL modules in all slots? I'd like to have tighter understanding and control of the "bootup state" of various modules in the chassis. The hardware seems to remember its last setting under certain conditions. Since the 9269 can do +/- 10V, it's possible overvolt and possibly damage a 3.3V system by wiring up a 9269 and not understanding the bootup conditions (if someone was previously using the 9269 at 10V for example). It seems like the 9269 can start outputting a non-zero voltage before a task gets to the "write" node.

0 Kudos
Message 9 of 10
(4,562 Views)
Solution
Accepted by topic author ColdenRouleau

In the C Series family, only the NI 9260 appears to support the IdleOutputBehavior property, and only with the settings of "Zero Volts" and "Maintain Existing Value", not the "High-Impedance" one you're interested in. The property is more commonly supported by products in PXIe form factor.

 

Slot-by-slot sleep control is only available on the cRIO platform. No cDAQ chassis supports this.

 

There is no user control for making the cDAQ chassis sleep all modules in all slots. That would be a new feature request, which you may want to pitch over on the Data Acquisition Idea Exchange for greater visibility.

——
Brandon Streiff
ni.com/compactdaq · ni.com/daq
0 Kudos
Message 10 of 10
(4,558 Views)