Skip to content

ipxe/people-rjn-ni4462

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

INTRO
-----

These programs make use of the NI 4462, National Instruments 4 channel 24-bit 204.8 kHz ADC.

   * ni4462_check
			- Trivial shell-script to check for the presence of the NI 4462 device (by lspci)

   * ni4462_test
			- For experimentation. It configures the NI 4462 in various modes, setting up the voltage-range,
			  input-channel(s), sample-frequency, sample-count, input-coupling, terminal-mode and triggering. It is extremely well
			  commented, and designed partly as an exploration of the NI DAQmx C-library. It is fully-functional for data-capture
			  (though it only uses the Voltage mode, and doesn't exhaustively support every permutation).

   * pb_ni4462_trigger
			- Programs the Pulseblaster to trigger the NI 4462 via digital 'loopback' cable between them. (variable rate and pulse count)

   * pb_ni4462_pulse
			- This sends a trigger and an analog input pulse (with variable offset and length). Uses analog loopback cable.

   * pb_convey_hwtrigger
			- This uses the NI4462's RTSI6 output to constantly convey the HW_Trigger to the PulseBlaster.

   * ni4462_voltmeter
			- Wrapper around ni4462_test to act like a voltmeter.

   * ni4462_speak_noise
			- Simple wrapper around ni4462_test, that causes the noise std-dev to be spoken once per second. Useful for hunting
			  sources of noise: use as a hands-free "multimeter".

   * ni4462_capture
			- Main program used by the IR camera. Less customisable than ni4462_test. Outputs statistical summary data, rather than raw reads.

   * ni4462_system_clock_calibrate
			- Check the master system clock (exported from NI4462, used by PulseBlaster) against an external gate.

   * ni4462_characterise
			- Measure the exact value of the trigger delay, and characterise the ADC input pulse-response.



Each program has a short man page, but should be invoked with "-h" for detailed help.



COMPILE
-------

Simply make, make install.

Note that the (proprietary) libnidaqmx must be installed already. It probably only works on a 32-bit system.

[Alternatively, build with the daqmx_dummy.c file ("make dummy") - this supports a limited subset of fake DAQmx() calls to allow ni4462_test to build, 
even on 64-bit without having libnidaqmx installed.]


DOCUMENTATION
-------------

See:

   *  doc/NOTES.txt
			- my notes on the performance, quirks and limitations of the NI 4462 and DAQmx.

   *  ../../ni-daqmx/
			- the installation of the kernel driver and c-library, libnidaqmx

   *  ../../ni-daqmx/datasheets
			- the NI data acquisition manual and NI 4462 specifications.
			 "NI4462_NI_dynamic_signal_acquisition_manual.pdf",  "NI4462_NI446x_specifications.pdf",
                         "NI4462_24-Bit_204.8kHz_signal_acquisition_brochure.pdf"


   *  /usr/local/natinst/nidaqmx/docs/cdaqmx.chm/_main.html
			- the DAQmx documentation: DAQmx concepts, C-functions, C-properties



SEE ALSO
--------

   * My programs:   linregplot, fftplot, dataplot, dat2wav

   * NI basic utilities: nilsdev, nidaqmxconfig, DAQmxTestPanels

   * LabView (a rather weird, proprietary and expensive GUI wrapper for making simple things complicated!)
     [LabView for Linux is really expensive; LabView for Windows XP has a student edition, installed on the Windows partition of this machine.]




TODO
----

It would be useful to support a "dummy mode" - compile-time choice to not link against libdaqmx, but to redefine the functions as stubs
cf. pb_utils. Then we could run on test-systems where libdaqmx isn't installed, and generate dummy simulated data. Quite a lot of 
functions to emulate though! (So far, this is partially implemented, but only for ni4462_test.c).