I have a quite simple problem with Python code. I'm using the cDAQ-9185 with NI 9237 module connected to 2xKulite XTM-190M pressure transducers. My aim is to get data in a continuous manner until user input is given (this is not implemented atm). I have based my code on this video:
The main issue right now is to specify the custom scale for the measurement.
The pressure transducer documentation specifies 0.216 mV/bar (so linear scaling).
import nidaqmx from nidaqmx.constants import BridgeUnits from nidaqmx.constants import UnitsPreScaled from nidaqmx.constants import BridgeConfiguration from nidaqmx._task_modules.channels.ai_channel import AIChannel
import matplotlib.pyplot as plt
# Prevent the graph from closing during measurement plt.ion() # Index of a data point i = 0
# bool: Specifies if NI-DAQmx divides the measurement by the # excitation. You should typically set this property to True # for ratiometric transducers. If you set this property to # True, set **ai_max** and **ai_min** to reflect the scaling. AIChannel.ai_excit_use_for_scaling.setter(False)
# Initiating a task for bridge based sensor with nidaqmx.Task() as task: # min_val = -0.075 V, max_val = 0.075 V # units = 10065 - custom units task.ai_channels.add_ai_bridge_chan("cDAQ9185-1EF7BE9Mod1/ai0", min_val = -0.075, max_val = 0.075, units = BridgeUnits(10065), custom_scale_name = '99991')
while i < 100: data1 = task.read(number_of_samples_per_channel = 1) plt.scatter(i, data1, c = 'r') plt.pause(0.05) i += 1
Using this code it raises an error:
DaqError: Requested value is not a supported value for this property. The property value may be invalid because it conflicts with another property. Property: DAQmx_Scale_PreScaledUnits Requested Value: DAQmx_Val_Volts Possible Values: DAQmx_Val_VoltsPerVolt Channel Name: cDAQ9185-1EF7BE9Mod1/ai0
Task Name: _unnamedTask<27>
Status Code: -200077
So even though the 'ai_excit_use_for_scaling.setter(False)' is in place the bridge still wants 'volt per volt' measurement (which is incorrect in my case).