I've got a small problem with my 6009.
Basically, I have to cycle the inputs of a Demux (74HC238D) (3 lines) writing an address to it to select the data lines out of the Demux.
The signal from the DAQ goes through an FPGA and the signal appears on the Demux input pins. Here is the problem.
(It should be noted that the FPGA is programmed good (coz if it was'nt then the signal would not get to the DEMUX in the first place.)
when I connect the inputs of the FPGA to the 3 digital lines from the DAQ and cycle through the lines (turning each one ON and OFF), the signal appearing on the Demux pins is not a correct logic level. (the voltage I measured on the scope is approx..less than 1.1 V). Because of this no matter which line I choose, the Demux output will always remain on the first channel and will not select the other channel.
I tried the same test by7 connecting it to the 5V supply of the DAQ (each line) and after programming the FPGA, the correct voltage level is available on the DEMUX pins. The problem only occurs when I try to cycle through the inputs via software.
I am not what is causing this. My firm belief is the DAQ.
What are your suggestions?
Solved! Go to Solution.
The first thing that jumps out at me is the fact you're using these signals to interface with an FPGA. The USB-6009 Digital Ouputs are either 5V or 3.3V TTL, and commonly FPGA I/O is 3.3V. Just to double check, what FPGA is it that you're using?
Q: When I connect the inputs of the FPGA to the 3 digital lines from the DAQ and cycle through the lines (turning each one ON and OFF), the signal appearing on the Demux pins is not a correct logic level. (the voltage I measured on the scope is approx..less than 1.1 V). I tried the same test by7 connecting it to the 5V supply of the DAQ (each line) and after programming the FPGA, the correct voltage level is available on the DEMUX pins. The problem only occurs when I try to cycle through the inputs via software.
A: This probably hits the nail on the head. Firstly I'd be inclined not to use program any software directly, and instead use some of the pre-built tools for debugging I/O connectivity that come with the NI-DAQmx Driver. You can get these from the Measurement and Automation Explorer (MAX).
Start » All Programs » National Instruments » Measurement and Automation
Expand the Devices and Interfaces tree on the left hand pane then select your USB-6009. Using the Test Panels button on the right hand pane, you can quickly perform some Digital I/O with the device.
Our best bet is to first grab a multimeter and see if we can measure the correct voltage outputs from the correct pins on the USB-6009.
Now, by checking the USB-6009 Datasheet, we can see that on Page 17 there are a couple of different ways we can configure the method by which the output signal is driven from the device; we can have Open Collector mode and Active Drive. We'll have to make sure that since you're trying to pass a signal to the FPGA, the device needs to be configured in Active Drive mode, in order to generate 0V to 3.3V Signals. Open Collector output allows generation of 0V to 5V signals. This can be done through NI-DAQmx Property Nodes in LabVIEW.
In terms of current...
The +5V line that you used in order to drive the FPGA's pins is rated at 200mA. General DIO lines on the USB-6009 can generate current up to 8.5mA. Does this limitation suit the Digital Input specifications of your FPGA?
thanks very much for your input. I got a bit held up at work (hence late reply). I havent tried your suggestion yet. But just for your information, I am using the same DAQ and the same FPGA board for another test. In this test, I would program the onboard ADC (on PCB) to read a set of pots.
These pots are connected to a DEMUX. (the same one as mentioned before but a different chip). Now, I select which pot to read by setting the particular address of the pot adn the output of this DEMUX is transferred to the ADC and the ADC will give me a digitised value out. I can cycle through the address using different ports via software.(again the ADC is connected via the FPGA)
This brings me to the ques: If I can do this then why can't I do the same for the previous query? Ive scratched my head till Ive got no hair left Maybe it might be something very simple or very complicated. Dunno which. what are your thoughts?
thanks very much for your helo on this.
I got the thing to work,. Now the DAQ is sending 3.3 V pulses out and now I can do all of my tasks as needed.
5 stars for Alex for helping me out.
For others who have similar problems, here is the solution.
I used the Channel Node property and set it to Write mode. Then I created a constant for it to work on Active drain mode. and now it pulses 3.3 V out. like a dream........
This problem is solved.