08-28-2017 08:17 PM
Hi,
I am trying to AO a square wave pulse using DAQmx with USB-6002. The signal that I would like to generate is as follows:
For 1ms, generate 25 pulses of 5V amplitude @ 50% duty cycle. Then, 100ms after that, generate 1 pulse of 0.5V amplitude @ 50% duty cycle. Data is only acquired and logged during the 100ms duration. How to best implement this?
I started with a state machine in the test vi (see attached) with counters (might not be necessary) to monitor when the program should move to the next state. My goal is to later use such structure in my main QMH program for the signal generation and data acquisition loop. I understand that my timing and sampling information may be off. I am open to ideas and critiques! Thanks. 🙂
08-29-2017 01:01 AM - edited 08-29-2017 01:03 AM
Hi qtism,
why not measure your signal all the time and remove the (small part of) samples you aren't interested in in postprocessing?
According to your description you want to measure for 100ms, but signal generation takes just 1ms…
I started with a state machine in the test vi (see attached) with counters (might not be necessary) to monitor when the program should move to the next state.
Right now you try to output a very short pulse ("for 1ms generate 25 pulses") writing each pulse seperately to your rather slow USB device. Why not reduce the overhead by generating that 1ms signal of 25 pulses in one waveform and output the waveform for the whole 1ms?
Btw. your VI doesn't fit to your description:
- in "main pulse" you generate a waveform of 1s duration while in your message you take about just 1ms…
- in "main pulse" you set a sample rate of 50kHz, but your USB6002 is only able to output analog values at 5kHz. Read it's manual!
08-30-2017 05:44 PM
Hi GerdW,
The pulse is essentially two different signals. For the first 1ms, it is 25 pulses of a square wave of 5V amp @ 50% duty cycle. That signal then stops and then run the next signal which is 1 pulse of a square wave of 0.5V amp @ 50% duty cycle. I do not need to record the results during the 1ms signal so I thought it would just be better to split the waveform generation into two different signals and only have DAQmx.read in the measure pulse state (have yet to be added).
I understand that there is still a lot that I don't know about LabView programming, but intuitively... I think my logic should work! Please advise me if there is a better approach. I will admit, I am not too experience in determining the sampling information. If USB-6002 really does not have the capability to generate these pulses, then I might have to reconsider a different DAQ!
08-31-2017 01:06 AM - edited 08-31-2017 01:07 AM
Hi qtism,
I understand that there is still a lot that I don't know about LabView programming, but intuitively...
Your problem is not (completely) LabVIEW-related, it's rather DAQ-hardware related!
Read the manual of your device!
For the first 1ms, it is 25 pulses of a square wave of 5V amp @ 50% duty cycle.
Some simple math:
- To generate such a waveform you will need to provide 50 samples: 0V, 5V, … (25 times)
- To output 50 samples within 1ms you need a hardware capable of a sample rate of (atleast) 50kHz.
- Your USB-6002 is rated with 5kHz for AO: this is 10 times slower than what you need.
When you need help with selecting suitable DAQ hardware you should call your local NI sales rep! (You will find phone numbers on the NI website.)