Analog input generating trigger on the counter gate to measure frequency

Hello,
I want to measure a frequency on the analog input but it doesn't seem to work.
I'm trying to get it working using DAQmx with the use of ansi c.
The
first step I made was acquiring the information on the analog input.
With the use of a simulated device this shows a sine wave on the input.
My next step was to generate a trigger signal for the counter, but this doesn't seem to work.
I don't see how it is possible to connect the trigger on the analog input to the counter.
For the creation of the analog input and trigger I use the following code:   
    DAQmxErrChk (DAQmxCreateTask("",&taskHandle));
    DAQmxErrChk (DAQmxCreateAIVoltageChan(taskHandle,"Dev1/ai0","",DAQmx_Val_Cfg_Default,-3.0,3.0,DAQmx_Val_Volts,NULL));
    DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandle,"",10000.0,DAQmx_Val_Rising,DAQmx_Val_FiniteSamps,1000));   
    DAQmxErrChk (DAQmxCfgAnlgEdgeStartTrig(taskHandle,"Dev1/ai0",DAQmx_Val_RisingSlope, 0));
For the creation of the counter I am using the following code:   
DAQmxErrChk(DAQmxCreateCIFreqChan(taskHandle1,"Dev1/ctr1",
"",1,2000,DAQmx_Val_Hz ,DAQmx_Val_Rising ,DAQmx_Val_LowFreq1Ctr ,1,4,"");
I hope some one could give me a hint.
I have also tried the examples that come with DAQmx but far as I know this are only counter examples using digital inputs.
Thanks in advance.
Solved!
Go to Solution.

Hi,
You have to use the comparison event output to the counter input. Change this property after the configure channel function.
DAQmxSetChanAttribute (taskHandle1, "", DAQmx_CI_Freq_Term, Dev1/AnalogComparisonEvent);
Regards,
Bas

Similar Messages

  • Generating trigger using a counter

    Hi,
    I am wondering if it's possible to use a counter input to generate a trigger signal with one of the NI PCI boards.
    Thanks
    Raphael

    Hi,
    I am using a NI USB-6211 and plan to use a PCI equivalent.
    My application needs to average pulses of data. I am using an acqiris averager for this.
    I would also like to use the trigger of the pulses to generate every n times another trigger.
    This trigger would be used to generate a clock for buffer position measurements of an angular encoder (using a NI DAQ).
    That will allow me to synch the average of the pulses with the angular reading.
    I am wondering if any NI device would allow me to do it (and the angular encoder reading as well).
    Hope this clarify a bit the context.
    Thanks
    Raphael

  • Determine analog input task trigger status

    I am writing a basic analog input function, which will be triggered via a start trigger sent by another instrument. Is there a way to programmatically deteremine if the Analog Input task has been triggered? I would like to have a Boolean indicator that shows "True" after the Analog Input task is triggered, but I couldn't find out how. Does anyone have a suggestion? Thanks!

    Is this a continuous acquisition?
    I am not aware of a function querying the trigger state of a task. Nevertheless, i don't think this is necessary as you usually start reading right after starting the input task.
    So in case a trigger is late, you will/should run in a time out error. Otherwise, you will get some data which is a clear indication that the task is running....
    Norbert
    CEO: What exactly is stopping us from doing this?
    Expert: Geometry
    Marketing Manager: Just ignore it.

  • Generate trigger on n counts of quadrature counter?

    Hi,
    I have 6212 card. I use one counter to produce pulse train that drives a motor. The second counter reads position with quadrature encoder. Is there a way to configure the encoder counter to automatically send a pause/reference trigger to the first counter after a specified number of quadrature counts?
    Thank you

    Igor,
    I have attached the two VIs that I was using to test the simple count edges case.  You should run the Gen Dig Pulse Train-Finite-Retriggerable.vi first and then run the Count Digital Events.vi because it will send the pause trigger when the terminal count is reached.  I also looked at the Device Routes for the 6212 and you should be able to route ctr1internaloutput or ctr0 internaloutput to its respective trigger source terminal.  Please let me know if you are succesful.
    Thanks,
    Gio L.
    Digital Support - Product Manager
    National Instruments
    Attachments:
    Count Digital Events1.vi ‏32 KB
    Gen Dig Pulse Train-Finite-Retriggerable1.vi ‏38 KB

  • Start Counter Output on a Analog Trigger in the PCI 6259 Mseries board

    Hi,
    My question is regarding how to use Analog Triggering to start a counter in the PCI 6259 M-series board.
    I have attatched a program here
    'Mult_Device_Digital_Analog_Out_on_Analog_Trigger.​vi'
    and I'll explain my problem regarding this program.
    I've tried to include all the details about the program in the documentation for the VI, but what the program
    does is essentially output a set of digital and analog patterns as specified by an end user, and at times
    specified in the front panel.
    Problem 1.
    I wish to start the whole operation on a analog trigger signal, in the program its the boolean "Line Trigger",
    but I get an error saying that trigger type is not supported, when the M Series board manual clearly says it can be done.
    Is there something wrong with my program ?
    Thanks.
    Shomu
    Attachments:
    Programs.zip ‏101 KB

    Shomu
    Admittedly, it might take a little time to find the documentation, but it is there. Also, the error you are getting indicates the proper trigger signals to use. In the help look at the analog Triggering Considerations for E Series, M Series, and S Series.
    With that being said the easiest thing to do is to setup an Analog Input task configured to start on an Analog Trigger. Then, setup a digital edge trigger for the Counter task. The signal you are going to want to look for is the Analog Comparison Event. This signal won't show up by default in the list. What you need to do is right click on the trigger source constant or control and select I/O Name Filtering. Then check Include Advanced Terminals. Once you have done this you can select the Analog Comparison Event
    StuartG

  • When using the analog inputs and analog outputs of the PCI-7344, what is the conversion between the voltage entering the card to counts? Similarly, what is the conversion between counts to voltage at the output of the card?

    I am using the PCI-7344 to control my system. The analog inputs are connected to the output of my system while the analog outputs serve as feedback to the system. The system is a servo. I want to know what is the conversion between the voltage read at the input, to card counts, and finally to the voltage output to the system.

    Carole,
    If you are trying to do analog feedback with a servo motor, Chapter 14 of the manual talks about how to set up the torque feedback. Also linked below is a LabVIEW example of analog feedback.
    Chapter 14
    NI-Motion User Manual
    Automatic Analog Feedback with FlexMotion example
    A. Talley
    National Instruments

  • Please help with C code to synchronize counter output to analog input

    Hi All,
    I am using NI DAQ USB-6353 with text-based C code to control it. I would like to send a continuous pulse train from the DAQ to pulse a power supply, which then activates an electron beam producing current to be read by the analog input port of the same DAQ. I would like to keep only the analog samples during the pulse peak and samples of a couple pulse widths right after. I am successfully to generate a pulse train using the sampled clock from a counter output channel, but fail to use the same clock to synchronize the pulse train with the analog input. DAQmxReadAnalogF64 is not called by the static function EveryNCallback set for the analog input task. Am I doing something wrong with the following codes? It would be great if it turns out only I am using the wrong sampled clock name of the counter ("dev1/PFI8") for the analog input. Or is something more fundamental that a counter cannot be sync. with an analog input?
    Would someone be able to send me a link to an example in C or C++ or visual basic showing how to synchronize a buffered sample clocked digital pulse train from a counter output channel to an analog input? To simplify the post, the below codes do not include the static functions EveryNCallback and DoneCallBack, but I can send them if needed.
    Many thanks in advance for your help,
    Thuc Bui
    //setting operation parameters
    double initDelay = 0.0, freq = 10;
    double dutyCycle = 0.0001;           //thus pulse width is 10 microsec
    unsigned highTicks = 4;   //per period
    unsigned numSamplesPerPeriod = highTicks / dutyCycle;   //40000 samples/period
    unsigned lowTicks = numSamplesPerPeriod - highTicks;      //per period
    unsigned sampleRate = 2*numSamplesPerPeriod*freq;       //800000 samples/s
    //create counter
    TaskHandle counterTask;
    int errCode = DAQmxCreateTask("", & counterTask);
    errCode = DAQmxCreateCOPulseChanFreq(counterTask, "dev1/ctr0", "",
                                     DAQmx_Val_Hz, DAQmx_Val_Low,
                                     initDelay, freq, dutyCycle);
    errCode = DAQmxCfgSampClkTiming(counterTask, "dev1/PFI8", sampleRate, DAQmx_Val_Rising,
                               DAQmx_Val_ContSamp, numSamplesPerPeriod);
    //create analog input
    TaskHandle aiTask;
    double minVolt = 0.0, maxVolt = 1.0;
    errCode = DAQmxCreateAIVoltageChan(aiTask, "dev1/ai0", "", DAQmx_Val_Diff,
                                     minVolt, maxVolt, DAQmx_Val_Volts, "");
    unsigned bufferSize = 10* numSamplesPerPeriod;
    errCode = DAQmxSetBufInputBufSize(aiTask, bufferSize);
    errCode = DAQmxCfgSampClkTiming(aiTask, "dev1/PFI8", sampleRate, DAQmx_Val_Rising, DAQmx_Val_ContSamp, numSamplesPerPeriod);
    errCode = DAQmxRegisterEveryNSamplesEvent(aiTask, DAQmx_Val_Acquired_Into_Buffer,
                                            numSamplesPerPeriod, 0, EveryNCallback, 0);
    errCode = DAQmxRegisterDoneEvent(aiTask, 0, DoneCallBack, 0)
    //start aiTask first
    errCode = DAQmxStartTask(aiTask);
    //then counterTask
    errCode = DAQmxStartTask(counterTask);

    Hi Xavier,
    Thank you very much for getting back to me. I really appreciate it. I followed your advice with the option 2 and simplified my code by using one of the NI C example templates to generate the below codes (also attached). I was able to see the pulses generated with an oscilloscope, and on the same oscilloscope I could see the ouput pulses of the electron beam probe. Unfortunately, the below code via DAQmxReadAnalogF64 reports of no data read from the probe and finally times out. Below is the error message given by this function. I did check the connection of the analog input wires to make sure they were connected to pin 1 (A0+) and 2 (A0-) because I was using the terminal configuration DAQmx_Val_Diff. Do you see any obvious errors I have made in my codes?
    Thanks a lot for your help,
    Thuc Bui
    Task started, waiting for trigger...
    Acquired 0 analog samples DAQmx Error: Some or all of the samples requested have not yet been acquired.
    To wait for the samples to become available use a longer read timeout or read later in your program. To make the samples available sooner, increase the sample rate. If your task uses a start trigger,  make sure that your start trigger is configured correctly. It is also possible that you configured the task for external timing, and no clock was supplied. If this is the case, supply an external clock.
    Property: DAQmx_Read_RelativeTo
    Corresponding Value: DAQmx_Val_CurrReadPos
    Property: DAQmx_Read_Offset
    Corresponding Value: 0
    Task Name: _unnamedTask<1>
    Status Code: -200284
    End of program, press Enter key to quit
    ********************** C Code **************************************************
    #include <stdio.h>
    #include "NIDAQmx.h"
    #include <math.h>
    #define DAQmxErrChk(functionCall) { if( DAQmxFailed(error=(functionCall)) ) { goto Error; } }
    int main(void) {  
    int32 error = 0;  
    char errBuff[2048]={'\0'};
    TaskHandle  taskHandleDig=0;  
    TaskHandle taskHandleAna=0;    
    double  timeout=10;  
    double minVol = -1.0, maxVol = 1.0;
    double initDelay = 0.0;  
    double freq = 10.0;  
    double pulseWidth = 1.0e-5; //10us  
    double dutyCycle = pulseWidth * freq;
    unsigned hiTicks = 4;  
    double sampleRate = hiTicks/pulseWidth; //samples/s  
    unsigned lowTicks = ceil(sampleRate/freq) - hiTicks;  
    unsigned nSpPeriod = hiTicks + lowTicks;
    unsigned numPulses = 1;  
    unsigned nSpCh = numPulses*nSpPeriod;    
    double sampleRate2 = ceil(2.0*sampleRate);  
    unsigned sampleMode = DAQmx_Val_FiniteSamps;
     /*********************************************/  /*/ DAQmx Configure Code  /*********************************************/  
    DAQmxErrChk(DAQmxCreateTask("", &taskHandleDig));  DAQmxErrChk(DAQmxCreateTask("", &taskHandleAna));    
    DAQmxErrChk(DAQmxCreateAIVoltageChan(taskHandleAna, "Dev2/ai0", "", DAQmx_Val_Diff, minVol, maxVol, DAQmx_Val_Volts, ""));  
    DAQmxErrChk(DAQmxCfgSampClkTiming(taskHandleAna, "/Dev2/Ctr0InternalOutput", sampleRate2, DAQmx_Val_Rising, sampleMode, nSpCh));
    DAQmxErrChk(DAQmxCreateCOPulseChanFreq(taskHandleDig, "Dev2/ctr0", "", DAQmx_Val_Hz, DAQmx_Val_Low, initDelay, freq, dutyCycle));  
    DAQmxErrChk(DAQmxCfgSampClkTiming(taskHandleDig, "/Dev2/PFI12", sampleRate2, DAQmx_Val_Rising, sampleMode, nSpCh));    
    unsigned bufferSize = nSpCh;  
    DAQmxErrChk(DAQmxSetBufInputBufSize(taskHandleAna, bufferSize));  
    DAQmxErrChk(DAQmxSetBufOutputBufSize(taskHandleDig, bufferSize));
    /*********************************************/  /*/ DAQmx Write Code  /*********************************************/  
    DAQmxErrChk(DAQmxWriteCtrTicksScalar(taskHandleDig, 0, timeout, hiTicks, lowTicks, NULL));
    /*********************************************/  /*/ DAQmx Start Code  /*********************************************/  
    DAQmxErrChk(DAQmxStartTask(taskHandleAna));  DAQmxErrChk(DAQmxStartTask(taskHandleDig));
    printf("Task started, waiting for trigger...\n");
    /*********************************************/  /*/ DAQmx Read Code  /*********************************************/  
    double* dataAna = new double[nSpCh];  
    int32 numReadAna = 0;  
    int errCode = DAQmxReadAnalogF64(taskHandleAna, -1, timeout, DAQmx_Val_GroupByChannel, dataAna, nSpCh, &numReadAna, NULL);  
    printf("Acquired %d analog samples\n",numReadAna);  
    if (numReadAna) {   
        unsigned nPts = (numReadAna < hiTicks)? numReadAna : hiTicks;  
        for (unsigned n = 0; n < nPts; ++n) {    
             printf("%6.3f ", dataAna[n]);   
        printf("\n");  
    delete [] dataAna;
    DAQmxErrChk(errCode);
    Error:  
    if( DAQmxFailed(error) )   DAQmxGetExtendedErrorInfo(errBuff,2048);  
    if( taskHandleDig!=0 && taskHandleAna!=0 ) {   
    /*********************************************/   /*/ DAQmx Stop Code   /*********************************************/   
        DAQmxStopTask(taskHandleDig);   
        DAQmxClearTask(taskHandleDig);   
        DAQmxStopTask(taskHandleAna);   
        DAQmxClearTask(taskHandleAna);  
    if( DAQmxFailed(error) )   printf("DAQmx Error: %s\n",errBuff);  
    printf("End of program, press Enter key to quit\n");  
    getchar();  
    return 0;
    Attachments:
    Correlated DIO AI_Sample_Clock Dig Start.c ‏6 KB

  • Synchroniz​ing two counter frequency inputs with multiple analog inputs

    Hello all,
    I'm fairly new to LabVIEW and I'm trying to collec​t data from multiple sources with synchronized tim​ing on the acquisition but I'm having trouble figu​ring it out. My problem is that I've got two count​er frequency inputs, one optical tachometer readin​g one pulse per revolution, and a max machinery fl​ow meter with a k factor of 12000. I can't seem to​ figure out how to sync the timing with my multiple analog inputs. I've be​en attempting to get the tachometer  to sync with ​the analog inputs first by following the example l​inked here. (https://decibel.ni.com/content/docs/DOC-10785) So far each time I run it I either get a timeout e​rror on the DAQmx read or a "Multiple sample clock​ pulses were detected" error (see attached image).  It seems if I slow the sampling rate way down to ​say 10 hz and ensure that the tachometer signal is​ over 800-1000 RPM (13-17 Hz) before starting the VI then the program will run without errors until ​the RPM drops below that threshold then the "Multi​ple sample clock pulses" error occurs.  The code is attached below.
    Does anyone know of a more effective way of syncin​g counter frequency inputs with analog inputs?  I'd like to have a VI that can show 0 RPM (and ev​entually 0 flow as well, but I think I need to fig​ure out the timing of one counter before I add ano​ther as it seems I can't have two counters in the ​same task). Any help on this would be greatly appr​eciated.
    LabVIEW version 13.0
    cDAQ-9178 Chassis with NI 9401 for the two counter inputs and NI 9205 for the analog inputs.
    Thanks!
    Richard
    Solved!
    Go to Solution.
    Attachments:
    SimpleDAQ.vi ‏44 KB
    LV_Error.JPG ‏31 KB

    Maybe third times the charm? 
    So I've finally got a good handle on why the VI is having problems at low RPM though I'm somewhat embarassed how long it took me to do that
    Because I have the counter time synced to my Analog input task if it doesn't see at least two pulses between the two clock pulses set by the analog input task I get the -201314 "Multiple sample clock pulses" error. This seems fine at first as it just sets a minimum RPM that I can measure and it's well below the area I'm interested in so no problems there.  I tried a simple error handler that would clear the error when it happend assuming the loop would keep iterating until the RPM went above that minimum at which point I would get a signal again. This is not the case, the read function just continues to spit out the -201314 error even after the RPM is back in the readable range. So then I tried adding two case structures so that when the error occured it would stop the task, clear the error, and then start the task again on the next loop iteration (Code Attached). This also doesn't work as the error shows up again on the stop task and then AGAIN on the start task on the next loop iteration. It seems this error is not actually being cleared and once it happens it stays with the task regardless of what the error cluster is carrying. 
    Anyone have any ideas?  The only solution I can think of is to just clear all tasks and recreate them each loop iteration until the RPM is readable again but that strikes me as a horribly clunky solution.
    Richard 
    Attachments:
    SimpleDAQ_1_Start Stop.vi ‏48 KB

  • Measuring frequency with counter or analog input?

    I have some frequencies which I need to measure. Some signals are digital and some are analog.
    I have a PXI-6040E DAQ which has both counters and analog inputs. 
    I heard that you can measure higher frequencies with the counters than with analog inputs.
    What is the range of frequencies an analog input can determine versus a digital counter? 
    Where is the cutoff that you must absolutely use a digital counter to determine the frequency?
    Is the cutoff different for different DAQ cards? Or is generally the same.

    Have you looked at the specs for the device? The max sample rate and the max counter input will be listed there. The max frequency for an analog input is based on nyquist sampling theory. Are you at all familiar with? It states your sampling frequency has to be at least twice the frequency you are measuring.
    Since each device might have a different max sample rate, your last question is answered.

  • How to link an analog input to a controller implemented in PC(Labview) then feedback to the external system?

    Atten : Jeff or anyone =)
    I had discretized my controller onto labview. And would like to feed the analog input from external into the PC(that the controller is implemented in). I do hv a DAQ card. The problem is I do not know how to link the analog input -> ADC -> controller -> DAC -> system. And i really believe labview hv functions to do it. But really confuse how should i do it. Could anyone pls advise me. Thanks

    Darren,
    You have answered my question. I was wondering whether you were doing single point (non-buffered) analog input, or multipoint (buffered) acquisition. Seems you are doing the latter.
    I'll offer answers to both, however, and I'll start with single point. If you have a single point of data that you'd like to output on a DAC, use the Functions->Data Acquisition->Analog Output->AO Update Channel. You can wire your data right into this VI, and it will update the channel.
    If you have an array of data that you'd like to send out on the DAC, you can use the Functions->Data Acquisition->Analog Output->AO Generate Waveform. This VI is similar to the former, but you tell it the DAC you want to update, the update rate (samples per sec
    ond), and the array of samples you want it to update with.
    In LV5.X, the input is an array of samples; in LV6i, it's an array of waveforms. Therefore, you'll have to change your array to a waveform. Do this by selecting the Functions->Waveform->Build Waveform VI. Stretch the output down, and another input will show up (dt). Wire your array to the squiggly line input. Wire a 0 to the t0, and 1/scan rate into dt. Then wire this output to the AO Generate Waveform VI.
    Hope this helps.
    Mark

  • How to convert the counter input as a RPM

    Hello NI,
                          Could you tell me. how to convert the Counter input to the RPM. I am using Rotary encoder has a 5V amplitude with 500 PPR. i am going to measure the Engine speed as a rpm.
    I am using third party hardware, from the hardware i can get the Count as well as Frequency also.
    Could you suggest to me...?  i looked out some disscussion in these forum but i cant able to understand.
    can you please explain with simple way....
    if you have any simulation send me....
    Regards,
    Balaji DP

    Hi balaji,
    [email protected] wrote:
    ...I am using third party hardware, from the hardware i can get the Count as well as Frequency also.
    If you're able to read frequency as X pulses/sec(?) that seems to convert RPM as follows:
    X (pulse/sec) * 1/500 (rev/pulse) * 60 (sec/min) = X * 60/500 RPM (???)
    Cheers!
    "Inside every large program is a small program struggling to get out." (attributed to Tony Hoare)

  • Can we acquire the Analog input and Digital Input at

    Can we acquire the Analog input and Digital Input at
    the same time? My sensor data include Analog and
    digital signals.

    Hi Chenchen,
    It usually simplifies things greatly if you use analog inputs to monitor both the analog signals AND the digital signals.
    If you abosulutely HAVE to use digital lines, then the answer is, DEPENDS....
    With the correct hardware and depending on how fast you want to collect data and how closely the measurements have to be syncronized in time, it can be done.
    But first, concider using analog inputs to monitor all signals.
    If you need to move forward with both analog and digital acquisitions, then post a new quesion and give us details on the hardware you are using and the other details we will need to advise you.
    Trying to help,
    Ben
    Ben Rayner
    Certified LabVIEW Developer
    www.DSAutomation.com
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • How to combine Digital Output, a delay and Analog Input in a fast loop

    I need to develop a process loop that runs at least at 250 Hz that performs a Digital output, than a delay of 50 microseconds and than an analog input of all the channels. All will be done using ATI MIO 64E3 card. Of course, the acquired data will be processed, displayed and saved. The loop will be running for several minutes until user stops it.

    The fastest and most precise timing will occur if you use hardware timing. You can apply hardware timing to analog input on the E Series boards, but not the digital lines. Let's focus on the analog input first. Continuous waveform scanning uses a scan clock, which can be the board's internal one or an external one which you apply. If you want to scan all the channels 50 microseconds after a digital rising edge, then you need an external signal to signify that scan clock.
    The E Series boards also have 2 counter/timers onboard that you can use for this purpose. You can set up a retriggerable pulse generation operation, where the counter receives a trigger and then on the user specifications, produces a pulse. You can have that route to the analog input scan clock.
    The trigger signal for the counter is that digital pulse. As I mentioned earlier, there is no hardware timing for the digital lines on an E Series board. We do have other digital boards (653x family) that have hardware timed operations if precision is important. If you are satisfied with software's resolution (in the milliseconds), then you can call the E Series board digital function in a loop with a software timer. That digital line can route to the counter to act as the trigger.
    So, on the programming side, you can have three separate and independent operations in parallel. One is for the digital function to output on that line every so often. Another is for the counter set at the retriggerable pulse generation. The last is for the analog input. I will describe this in terms of LabVIEW, but it can be done in a similar fashion with the NI-DAQ function calls or Measurement Studio.
    The digital examples are in the LabVIEW >> Examples >> Daq >> Digital >> E-Series directory. The Generate Retriggerable Pulse example is in the LabVIEW >> Examples >> Daq >> Counters >> DAQ-STC directory. The E Series boards use the DAQ-STC timing chip.
    Go to the LabVIEW >> Examples >> Daq >> anlogin >> strmdisk.llb directory and start with the Cont Acq to Spreadsheet File. This shows how to continuously acquire data and stream it to disk while displaying the data on a chart. Streaming to disk is the efficient way to save data while you are acquiring, as it eliminates the overhead of always opening and closing the file through the iterations of the loop. This saves to a file that can be opened by other applications (Excel, Word, etc.), but it is not as fast as writing to a binary file, which must be opened and read back through LabVIEW. However, for your ~250 Hz rate, it should be fine. Then, go to the LabVIEW >> Examples >> Daq >> anlogin >> anlogin.llb and look at the Acquire N Scans -ExtScanClk example. This shows how to apply the scan clock. Here, the AI Start that you saw in the previous example is replaced by 4 VIs (3 AI Clock Config's and the AI Control). Make those changes to the first example and then add a constant 0 to the AI Control parameter for total scans to acquire. That specifies the continuous operation. The File >> VI Properties >> Documentation menu item of the example describes the physical connections.
    If you aren't using LabVIEW, use the NI-DAQ User Manual and the NI-DAQ Help file installed on your machine. You can look at your AT E Series User Manual at the http://www.ni.com/manuals pages for more information on the hardware. Also, if you want to route those signals internally on the board, you can find some entries in the KnowledgeBase at the http://www.ni.com/support pages.
    Regards,
    Geneva L.
    Applications Engineering
    National Instruments
    http://www.ni.com/ask

  • How do I read a pulsed input on an SCB-68 counter channel?

    Hello all, I have been searching through the DAQ help and this board
    for a few hours now and I cannot find an answer that addresses what
    should be a simple problem. Let's start with hardware and software: I
    have a 6062E PCMCIA DAQmx card connected to a SCB-68 (E Series)
    connector block. I am running Version 7.1.0.306 of Measurement Studio
    for Visual Studio .NET and am coding in C#. So please, no LabView
    answers.
    I am trying to read the pulsed output of the Omega HHT-1501 Digital
    Tachometer - it outputs a TTL LOW pulse every time the sensor is
    triggered, I would like to read in these pulses and  get the
    frequency to determine RPMs.  As far as I can tell I need to
    connect the pulsed signal line to CTR0, which is PFI9/GPCTR0_GATE on
    the connector block, pin #3. I have verified that the tachometer is
    indeed pulsing correctly. I have used the DAQ Assistant to create a
    DAQmx task to acquire the frequency of a digital signal using the 1
    Counter Low Frequency Measurement method, input range is set from 1Hz
    to 1KHz, starting edge is set to falling. For Task Timing the
    Acquisition Mode is Continuous, Samples to Read = 100.
    When I run the test I get no response. And it also seems that the
    GPCTR0_GATE is always at +5V. I have tried just about every other
    combination of inputs, including using CTR1 on GPCTR1_GATE, pin 41, all
    with the same result - no signal read.
    So what is the problem? Every post or help article I have read makes it
    sound like plug and play to read the pulses but this is not the case -
    does the counter gate need to be configured as an input in either
    software or hardware? Am I supposed to have a signal set on the SOURCE,
    and if so what? And what about my ground line from the pulse source? I
    have tried attachign that to DGND, still no result, and if I attach the
    pulse signal gnd to the GPCTR0_SOURCE it causes my tachometer to lock
    up.
    This thread
    http://forums.ni.com/ni/board/message?board.id=170&message.id=34826&query.id=3937#M34826
    seems to be very closely related to what I want to do but is as vague
    as the help articles - it mentions using one of the two timebases as
    the source input - what does this mean in terms of code/wiring?
    Additionally in the NI-DAQmx help article under Device
    Considerations->Counter Signal Connections->AO/E/S Series it says
    "The count direction terminal must be tristated to use an external
    signal. Reset the device to ensure the terminal is tristated" for edge
    counting. A) Is this related? and B) how does one tristate by reset?
    Power cycling the scb-68 has no apparent effect on anything.
    I would appreciate any help on this matter, hopefully with as much
    detail as possible since the help manuals seem to be mostly useless for
    guiding one in performing any task.
    Thanks!
                       J. Slater

    Hi Shyam,
    The major factor that would come into play with the signal having some noise is that the counter is expecting a TTL signal and the oscilloscope is measuring an analog input signal. If your signal floats above the TTL thresholds or does not rise/fall within the specifications, the behavior is not predictable and it can be measured as a high or low by the counter. An oscilloscope will measure the analog signal and you may be able to measure the frequency of the noise on your scope by analyzing a smaller timeframe of the signal.
    What Is the Definition of a TTL (Transistor-Transistor Logic) Compatible Signal?
    http://digital.ni.com/public.nsf/3efedde4322fef19862567740067f3cc/acb4bd7550c4374c86256bfb0067a4bd
    Steve B

  • DAQPAD 6020e misses digital triggers during analog input (AI)

    I am using a 6020E BNC DAQPAD to acquire two seperate 12kHz analog signals from a sonar through ACH0 and ACH1. The sonar generates a digital start trigger at the start of each ping to notify the DAQ that new data is to follow and i am using this to trigger my application through PFL0/ TRIG 1. Typical trigger repetition rate required/generated by the sonar is 20-30Hz but is selectable. My problem is that the board/software misses complete analog input data pings when the digital trigger repetition rate goes above 2-3HZ (ie I only receive 10% of the pings I desire). Analog sampling rate is 45kHz and I am acquiring 1-2kSamples per triggered acquisition. The problem happens using a Labview application based o
    n a modified version of the shipped "Acquire N - Multi Digital Trig.vi" (and original). Any suggestions welcomed.

    Hi,
    I believe that the problem you are having is due to using the pause function to pause the acquisition before the next trigger and the fact that DAQpads do not have a DMA transfer mechanism. The default setting is to create an interrupt when the onboard FIFO buffer is half full. So when the pause trigger occurs there will always be data left on the FIFO, up to a half buffer of data.
    To work round this problem you can use an external stop trigger instead of the pause.
    Or it is possible to change the data transfer mechanism to cause an interrupt on every sample acquired instead of every half FIFO buffer. This will send every sample acquired by the DAQ board to the computer. The drawback is this method is very processor intensive and significantly slows
    down data acquisition rates. As you are approaching the sampling limit of the card (100Ks/s or 50Ks/s for 2 channels) you may find that you will get buffer overflow.
    To change the interrupt setting use the "Set DAQ Device Information.vi", which is located on the Functions Palette » Data Acquisition » Calibration and Configuration. See the LabVIEW help for information on using this VI.
    Kind Regards
    Tristan J
    Applications Engineer
    National Instruments

Maybe you are looking for