ATTACH_ANALOG_INPUT_ACCELEROMETER
Attach channel(s) to a task to measure acceleration using an accelerometer. **Compatibility:**
Compatible with National Instruments devices that utilize NI-DAQmx. Tested with a simulated NI-9234 module.
This block is designed for use with Windows and Linux systems due to NI driver availability. Ensure you have installed the NI-DAQmx runtime from https://www.ni.com/en/support/downloads/drivers/download.ni-daq-mx.html. Params: task_name : str The name of the task to attach the channel(s) to. cDAQ_start_channel : NIDAQmxDevice The device and channel to read from. cDAQ_end_channel : NIDAQmxDevice To read from only one channel, set this to the same as `cDAQ_start_channel`. To read from multiple channels, set this to the last channel you want to read from. min_val : float Specifies in **units** the minimum value you expect to measure (default is -5.0). max_val : float Specifies in **units** the maximum value you expect to measure (default is 5.0). units : Literal The units to use to return accelerometer measurements (default is "G"). sensitivity : float The sensitivity of the sensor. This value is in the units you specify with the `sensitivity_units` input. Refer to the sensor documentation to determine this value (default is 1000.0). sensitivity_units : Literal Specifies the units of the sensitivity input (default is "Millivolts per G"). current_excitation_source : Literal Specifies the source of excitation (default is "Internal"). current_excitation_value : float Specifies in amperes the amount of excitation to supply to the sensor. Refer to the sensor documentation to determine this value (default is 0.004). Returns: out : Optional[DataContainer] This block does not return any meaningful data; it is designed for creating a task to measure acceleration using an accelerometer.
Python Code
from flojoy import flojoy, DataContainer, NIDAQmxDevice, DeviceConnectionManager
from typing import Optional, Literal
import nidaqmx
@flojoy(deps={"nidaqmx": "0.9.0"})
def ATTACH_ANALOG_INPUT_ACCELEROMETER(
task_name: str,
cDAQ_start_channel: NIDAQmxDevice,
cDAQ_end_channel: NIDAQmxDevice,
min_val: float = -5.0,
max_val: float = 5.0,
units: Literal["G", "Inches per second squared", "Meters per second squared"] = "G",
sensitivity: float = 1000.0,
sensitivity_units: Literal["Millivolts per G" "Volts per G"] = "Millivolts per G",
current_excitation_source: Literal["External", "Internal", "None"] = "Internal",
current_excitation_value: float = 0.004,
default: Optional[DataContainer] = None,
) -> Optional[DataContainer]:
"""Attach channel(s) to a task to measure acceleration using an accelerometer.
**Compatibility:**
Compatible with National Instruments devices that utilize NI-DAQmx. Tested with a simulated NI-9234 module.
This block is designed for use with Windows and Linux systems due to NI driver availability. Ensure you have installed the NI-DAQmx runtime from https://www.ni.com/en/support/downloads/drivers/download.ni-daq-mx.html.
Parameters
----------
task_name : str
The name of the task to attach the channel(s) to.
cDAQ_start_channel : NIDAQmxDevice
The device and channel to read from.
cDAQ_end_channel : NIDAQmxDevice
To read from only one channel, set this to the same as `cDAQ_start_channel`. To read from multiple channels, set this to the last channel you want to read from.
min_val : float, optional
Specifies in **units** the minimum value you expect to measure (default is -5.0).
max_val : float, optional
Specifies in **units** the maximum value you expect to measure (default is 5.0).
units : Literal, optional
The units to use to return accelerometer measurements (default is "G").
sensitivity : float, optional
The sensitivity of the sensor. This value is in the units you specify with the `sensitivity_units` input. Refer to the sensor documentation to determine this value (default is 1000.0).
sensitivity_units : Literal, optional
Specifies the units of the sensitivity input (default is "Millivolts per G").
current_excitation_source : Literal, optional
Specifies the source of excitation (default is "Internal").
current_excitation_value : float, optional
Specifies in amperes the amount of excitation to supply to the sensor. Refer to the sensor documentation to determine this value (default is 0.004).
Returns
-------
Optional[DataContainer]
This block does not return any meaningful data; it is designed for creating a task to measure acceleration using an accelerometer.
"""
# Check if task already exists
task = DeviceConnectionManager.get_connection(task_name).get_handle()
# Attach the requested channel(s) to the task
units = {
"G": nidaqmx.constants.AccelUnits.G,
"Inches per second squared": nidaqmx.constants.AccelUnits.INCHES_PER_SECOND_SQUARED,
"Meters per second squared": nidaqmx.constants.AccelUnits.METERS_PER_SECOND_SQUARED,
}[units]
sensitivity_units = {
"Millivolts per G": nidaqmx.constants.AccelSensitivityUnits.MILLIVOLTS_PER_G,
"Volts per G": nidaqmx.constants.AccelSensitivityUnits.VOLTS_PER_G,
}[sensitivity_units]
current_excitation_source = {
"External": nidaqmx.constants.ExcitationSource.EXTERNAL,
"Internal": nidaqmx.constants.ExcitationSource.INTERNAL,
"None": nidaqmx.constants.ExcitationSource.NONE,
}[current_excitation_source]
name, address = cDAQ_start_channel.get_id().split("/")
if cDAQ_end_channel:
_, address_end = cDAQ_end_channel.get_id().split("/")
address = f"{address}:{address_end[2:]}"
physical_channels = f"{name}/{address}"
task.ai_channels.add_ai_accel_chan(
physical_channels,
min_val=min_val,
max_val=max_val,
units=units,
sensitivity_units=sensitivity_units,
sensitivity=sensitivity,
current_excit_source=current_excitation_source,
current_excit_val=current_excitation_value,
)
Example
Having problems with this example app? Join our Discord community and we will help you out!
This app shows how to use a accelerometer input block for with National Instruments Compact DAQ module.
Blocks used:
CREATE_TASK_ANALOG_INPUT_ACCELEROMETER
CONFIG_TASK_SAMPLE_CLOCK_TIMINGS
READ_TASK
LINE
The blocks were connected as shown, and the app was run. The result displayed the first 100 samples taken from the device buffer for 3 channels.