Counting ttl pulses

Hello Everyone,
I am attempting to continuously record (i.e. time stamp) only positive (i.e. 'Logic High' event) TTL pulses from a PMT using a PCI-6602 board via a BNC-2121.
From reading the LabVIEW tutorials/examples it seems that I should be able to get very high precision (15 digits) from the "Get Date/Time In Seconds" VI. I need to be able to record times to the microsecond (at least). Yet when I look at the data it appears that for every digit less than a millisecond either a 9 or a 0 is recorded, which leads me to believe that I can't get better time resolution than a millisecond. Is there anything I can do to change this?
Assuming that I can get this to work I would also like to simultaneously monitor and record a second PMT channel. Any hints or tips would be great!
I've attached my very basic VI below.
Cheers,
CJ
Message Edited by CJKS on 05-22-2006 11:53 AM
Attachments:
PMTcounter.vi ‏126 KB

Yes the simpliest way to do what you want is to count the time between rising edges using a counter (the 6602 has 8 80 Mhz 32-bit counters).  Yo will not use digital io but time counting.  The gate of your counter will be the TTL/Cmos pulse from your PMT and the source of the counter will be the 6602 master clock 80Mhz, so you can count clock ticks between photons, now you have a 12.5ns time resolution.  You can use the system clock to get a time zero if you would like to use absolute time.  The olny thing to keep in mind is that you will be limited to a maximum time between pulses of 2^32/80M or 53 seconds, you will get an overflow of your counter but usually this is not a problem with photon counting.  You will be also limited to a maximum photon rate of about 20Mphoton events.sec this is also not a problem since the interesting photon events seem to happen between these time scales.  if you want a longer time scale you cvan always casceds 2 counters to get 64bit resolution but this is probablu not necessary.  Look at the buffered period measurment examples.  You can easily scale this to 8 counters with 8 PMTs if desired with your curent hardware but this gets expensive.  Goodluck.
Paul
Paul Falkenstein
Coleman Technologies Inc.
CLA, CPI, AIA-Vision
Labview 4.0- 2013, RT, Vision, FPGA

Similar Messages

  • How to count TTL pulses during 100ms ?

    I need to count TTL pulses coming out of an instrument (particule
    counter). The pulses appear randomly. I must count how many pulses
    appeared in the last 100ms, and so on, every 100ms. I don't want
    cumulative counts, but the number of events every 100ms.
    I need a hardware clock, so that the counting pace cannot be disturbed
    by Windows making some weird, unrequested, CPU-hungry task.
    I fact, I need to do that for 2 identical instruments of the same kind,
    and I have 2 cards with 2 counters each, total 4 counters. My idea
    would be to use 1 counter as the clock for 2 other counters, but how to
    trigger the counter value read ?
    Thanks.

    Hi,
    In the example I gave you, you need to supply the TTL you want to count the pulse (connected on pin 37) and a TTL "clock"  which is connected to PFI0. The TTL on PFI0 permits a hardware timing (100ms for example) to count the edges that occur on the TTL source.
    If you do not need hardware timing, have a look at the example attached. You only have to connect the TTL source and the VI counts every 100ms (software timed) the edges that occur durind those 100 ms.
    Hope it will help you,
    Regards,
    David D.
    Application Engineer - NI France
    01-02-2006 01:26 PM
    Attachments:
    Compatge des fronts toutes les 100 ms.vi ‏61 KB

  • Counting TTL pulses from 10 Hz to 3000000Hz with LAB-PC-1200

    I want to count TTL pulses from an electron analyser. How can I use the DAQ wizard to connect the analyser to the PC-1200 and look if it works?

    Augerspectro,
    The counter chip used on the Lab-PC-1200 is the 8253. Thus, you will be able to use any of the 8253-counter examples available in LabVIEW. To count pulses, I would suggest that you examine the Count Events (8253).vi example. With regards to the required hardware connection, this is discussed in the device's user manual (link available below).
    Lab-PC-1200/AI User Manual
    Good luck with your application.
    Spencer S.

  • Counting TTL pulses at high speed

    Hi all,
    I am using PCI-6221 board with DAQmx to count the number of TTL pulses (which varies in its frequency between 0Hz to 10MHz) at a high speed (200,000 samples/sec.) and I am having a problem when the TTL pulse frequency drops below a certain level.
    I am using CTR0 to generate continuous pulse train at 200kHz frequency to feed to CTR1 Gate input. I verified that the pulse train is being generated fine.
    I am using CRT1 with buffered counting to collect the count for 200,000 samples at a time (duration of 1 sec.). I got the example code (Cnt-Buf-Cont-ExtClk) and pretty much used it as is.
    CTR1 Gate is coming from CTR0 Out, which is 200kHz pulse train with 50% duty cycle, and CTR1 Source is the TTL signal that I am trying to count. At first, I thought that everything was working fine with the Source signal being at around 5MHz. Then, when I had the Source signal down below about 300kHz, I noticed that the program is taking longer than 1 sec. to collect the same 200k samples. Then, when I got the Source signal down to 0Hz, the program timed out.
    I am guessing that somehow the counter is not reading for the next sample when there has been no change to the count, but I cannot figure out why and how.
    Any information on this and a way to get around would be greatly appreciated.
    Kwang

    One thing you can try is to set the counter input CI.DupCounterPrevention property, this setting will filter the input, it is possible that when the ctr 0 is slow then many of the values you are counting become zero as well and are filtered out, since they are nolonger points, the counter will not collect enough points before the time-out occurs and the counter input read times out.  I am not sure if this is your issue but I found out the hard way that this occurs when I switched to daqMX where this feature was added.  Let me know if it worked,
    Paul
    Paul Falkenstein
    Coleman Technologies Inc.
    CLA, CPI, AIA-Vision
    Labview 4.0- 2013, RT, Vision, FPGA

  • Counting TTL pulses within specified integration time

    Dear all,
    I have a PCI-6014 board, and I use Labview 7.1 and would like to do the following task with DAQmx7.4:
    Analog source:  analog square wave (or = 1Hz TTL pulses) produced by a function generator
    Signal: photon signals from a photomultiplier (random TTL pulses)
    I would like to count the photon signals at 100ms integration time, repetitively. But I don't want cumulative counts, just the number of photons (TTL pulses)  in every 100ms.  I would also like to make sure that I synchronize the counter with the analog source, i.e. to make sure I get exactly 10 data points in each analog cycle. ( I can't use the computer to start the function generator and it just keeps running., so I want to make sure I start counting on the starting edge of the analog wave.)
    I used to do this with the traditional DAQ and connected the analog source to the "GATE" pin of the counter , so i could count "while gate is high" ( or while gate low, or count on rising edge/ falling edge. ) However I found some problems and I think my counter wasn't counting correctly, and I would like to rewrite the task  with DAQmx anyway.  Ideally I would like to separate the signals that occur in the first 1/2 and the second 1/2 of each analog cycle. But if that is not quite achievable, I can do the separation later when I process the data, provided that I know each 10 data points from the counter correspond to each analog cycle.
    I have read several threads on the discussion board, but I still couldn't configure my applications using those examples.
    Also I wonder if the "Arm Start Trigger" function is not available on my PCI-6014 card ? Because I can not find it in the Start Trigger property node.
    Thank you very much for your reply. Any hint or advice would be greatly appreciated.
    Joyce

    ...(Continued from prev post due to 500-char limit)
    Now, here's a proposal for a method that should be able to work, though it'll require more data and more processing.  One key area to watch out for under DAQmx is the property node for "Duplicate Count Prevention."  The behavior changed between 7.1 and 7.3 (on E and/or M series, but not on TIO-based counters), then the defaults changed in 7.4, and something changed yet again in 7.5
    Bottom line: you can set it to True or False.  One setting will allow you to buffer up 0 values for intervals where there are no Source signals (photon events) within a sampling period (10 Hz hw clock).  The other setting will not record anything in the buffer for those intervals.  Clearly, you need the former setting, so you can always experiment to see how it behaves.  I kinda gave up on trying to interpret it, understand it, or keep up with the differences by DAQmx version and DAQ board.
    Ok, here goes:  I'm going to propose that you actually oversample by about 10x and that you capture the Analog square wave in sync with your photon counts.  Then your post-processing can determine for sure which samples correspond to Analog Square High and which to Low.  You'll also be able to adjust for times when you get 1 too many or one too few samples in a square wave cycle, due to having independent un-sync'ed timebases.
    So on one counter you generate a 100 Hz clock.  The other one is programmed for buffered period measurement using the 100 Hz clock as a SampleClock and the photon pulses as the Source signal (this must be set up using a DAQmx Channel property node I believe).  Remeber to be careful also about the DuplicateCountPrevention property.
    You would further setup an AI task using the same 100 Hz clock as a Sample clock.  Be sure that the 100 Hz clock task is started after starting both the other tasks.  Also, be sure to always read the same # of samples from both tasks to keep the counter period and AI data in sync.
    Voila!  You now generate a data record of # of photon pulses for each 10 msec interval along with the voltage of the analog square wave at the end of that interval.  A bit of post-processing and you're covered.  If you're not required to manipulate data while the acq tasks are running, you can surely afford to bump up the oversampling rate considerably.  The main advantage is to gain resolution on the time of transition of the analog square wave.  For any interval ending with a TTL state change, you won't know where within that interval the transition occurred.
    -Kevin P.

  • Counting TTL pulses from A between TTL pulses from B

    I have two sources of TTL pulses. I need to count, from a c/c++ script, how many TTL pulses are received from source A between each of the  TTL pulses received from source B.
    I have a PCI-6229 connected to a BNC 2090A, and both of my TTL pulses sources are connected via BNC plugs.
    Is there any function that can do that?
    I tried to get an example script using the DAQ assistant from LabWindows, selecting acquire signals -> counter input -> Edge count. The function that I got as a result was DAQmxCreateCICountEdgesChan, and I am afraid that it only takes the counter as an argument and not the second digital input that marks the intervals.

    From your description it seems to me that the best option is to use two-edge separation measurement. I am not on a PC with CVI installed so I cannot point you to a specific example but this tutorial gives you a brief explanation and some guidance on examples to look at.
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

  • How to count TTL pulse by DAQ through BNC 2090?

    I'm trying to count the TTL pulse from a APD by DAQ. There are some very nice discussions about this issue in this board. However, I am a novice and not sure about the hardware connection. The signal from APD is delievered out through a BNC cable and I'm trying to deliever this signal to DAQ through BNC 2090. I tried just simply connect the BNC cable to ACH0 and tried running the vi's, such as "Count_Edges.vi" and "Count_Events.vi". But I got no counts. I noticed that both these vis are actually reading signal from PFI port. That could explain why I got not counts.
    So now the problem is how should I connect my signal in a BNC cable to the DAQ and have the counting working? Thank you for your help.

    Hi Opal,
    Here is what you should do for the hardware connections with these devices:
    - connect your external signal to the BNC-2090
    - connect the 68 pin connector on the BNC-2090 to the 68 pin connector on your DAQ board. You should have a 68 to 68 pin cable for this.
    That is all that is involved with the hardware connections. After this, you should be able to read your signal. Here is the link to a helpful DAQ manual with in depth getting started information: DAQ Getting Started Guide. I hope that you find this information helfpul.
    Regards,
    Hal L.

  • Count ttl pulse only over 2 V

    Hi I have a problem while I was trying to count a ttl pulse by using the DAQ Assistant. The problem may be simple but I just cannot solve that since I am new to LabView.
    There is a TTL pulse generated from our APD which is about 30 ns width, 5V. I want to use LabView to do the photon counting. However due to the noise, I would like to set a count limit of 2V, so the software only count the TTL pulse which is greater than 2V. But I cannot do that. There is no option to set the limit.
    And our hardware is BNC-2110 and PCIe-6323.
    Can someone help me with this? Thanks.
    Solved!
    Go to Solution.

    Okay so perform a finite or continous read of your analog input.  Then you can perform a threshold, where all values below 2 become 0.  This can be done many ways but I'd suggest an auto indexing for loop and using a select function in the for loop.  Then you can perform any normal edge detection you normally would to count pulses.
    EDIT: Post some code if you can.
    Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
    If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

  • Counting TTL pulses using USB 6008

    Hi Folks,
    I am trying to setup a performance monitoring VI for a manufacturing line.
    I am going to use a sensor at the end of the line to count the number/rate of boxes that come of the line and perform a calculation to give us the productivity.
    The problem I have is that I would like to be able to scroll back over time to view historical productivity. Also I would like to be able to insert reason codes for downtime and print off a report at the end of the week showing a productivity graph and downtime associated with the line.
    I am new to Labview and I am not sure if this can be done, any help would be appreciated.
    Thanks
    Tony.
    Attachments:
    K2 Productivity-s.vi ‏60 KB

    Search 'count'.  Count Digital Events.vi is the most basic one of interest.
    Of course you won't find an example of counting pulses, analyzing the data and creating a report.  You'll have to put all the pieces together yourself.  This is just a start.  The good news is that LabVIEW is designed to do just the type of thing you're needing and your app will be quite simple to contrive once you get the hang of LabVIEW.  I suggest going through the many tutorials to get the basics down before you try to architect your program.
    Using LabVIEW: 7.1.1, 8.5.1 & 2013

  • Inputing TTL pulses to NI-PCI-MIO​-16E-1 via BNC-2110

    I need to count TTL pulses coming from photomultiplying tube (PMT) module. Can someone tell me, please, how do I connect BNC cable from PMT module to NI PCI-MIO 16E-1 DAQ board via BNC-2110 adapter?
    thanks a lot in advance

    Hello Photon Guy,
    Thank you for contacting National Instruments.
    I have attached an image which shows how to connect the USER 1 BNC and USER 2 BNC connectors to the proper PFI pins which serve as the source of counter 0 and counter 1. You should only need to use one counter to count edges.
    Regards,
    Bill B
    Applications Engineer
    National Instruments
    Attachments:
    BNC-2110.JPG ‏105 KB

  • I want to create a TTL pulse. The stepper motor I'm trying to control responds to a high to low edge, when the low pulse width is greater than 0.5 microsecon​ds. What is the best way to go about creating a pulse like this?

    I'm using the NI PCI-6025E card connected to an SCB-100 wiring peripheral. I'm programming the DAQ card using LabVIEW 6.0.2 on a win95 box.
    My first attempt has yielded some surprising results.
    I created a vi with a single while loop set to true. Within that while loop is a two frame sequence. Both frames use the "Write to Digital Line.vi".
    The first frame sets the line in wire to false.
    The second frame sets the line in wire to true.
    The device channel on both frames has been set to my user defined channel nam
    e -> clock.
    clock --> sets the DIO0 channel to be digital write out.
    Using an oscilloscope and some wires I hook ground to the SCB-100's digital ground and I hook the probe to the DIO0 channel. What I see are two different pulses alternating between one another. One has a pulse width of 5ms and the other has a pulse width of about 50ms. You seem to get a grouping of one type of pulse followed by a grouping of the other type of pulse.
    Obviously this is very strange and not what I want. It is also far too slow. So I'd like to know if anyone knows how to do this properly. Remember I only need a low pulse width of 0.5 microseconds.
    Thanks,
    Any help or guidance would be much appreciated.
    Scott

    Scott,
    You don't need to use a digital line to create a TTL pulse. The PCI-6025E has two onboard general purpose counters. You can use one of these counters to create a single pulse of the desired pulse width. For an example of how to program the counters on your board, refer to LabVIEW's Search Examples>>I/O Interfaces>>Counters>>Pulse Generation>>DAQ-STC based.
    The advantage of using a counter over the digital line is that it allows you to control the timing of the pulse through hardware and not software. Thus, it is inherently faster, and the timing resolution is more accurate. The counter will count down an internal 20 MHz timebase to create the pulse delay and the pulse width.
    For more information on the hardware capabilities of your board, you can refe
    r to the User Manual online at www.ni.com/manuals.
    Hope this helps.
    Regards,
    Erin

  • Synchronous acquisition 4 analog signal and independently count TTL impulse

    Hello!
    I'm have NI DAQ board PXI-6115. I have problem:
    Need synchronous acquisition 4 analog signal and independently count TTL impulse. When value counter will, at example, 5000 acquisition must stop. I'm read program in LV 7.1 but have a problem.  In HELP write:"You can create only one counter input channel at a time with this VI because a task can contain only one counter input channel. To read from multiple counters simultaneously, use a separate task for each counter". I make two different task, but error not disappear.
    I don't know how escape this error?
    Program VI with Front panel screen-shot in attach archive.
    Message Edited by _Pavel_ on 05-23-2007 09:06 AM
    Attachments:
    Progr.zip ‏80 KB

    Hey Pavel,
    Thanks for contacting National Instruments support.  Your program, in it's current state, is attempting to generate a finite pule train and count edges on the same card.  Finite pulse generation is a two counter device, where one counter generates the pulse train and the other counter gates the generation, or goes high when the generation is to start and low when it is finishes.  So no matter which counter you select for the count edges task you will get the error you describe. 
    Is it possible to use the pulses that you are counting as an external clock?  If so then you could just generate 5000 pulses and you would only acquire 5000 samples. 
    I have attached a modified example from your code.
    Let me know what you think.  It only acquires 5000 samples as desired.
    Regards,
    Kenn North
    Senior Product Manager - Search, Product Data
    http://ni.com/search
    Attachments:
    Progr.vi ‏58 KB

  • Wiring a SCB-68 to measure the frequency of a TTL pulse signal

    Sorry if this is a basic question but could someone please help me and tell me how to wire up a SCB-68 connector block (connected to a AT-MIO-16 DAQ board) so that I can measure the frequency count of a series TTL pulses (signal from photon counting). At the moment I don't understand how the PFI1-9 connections are related to the GPCTR0/GPTR1 counter connections on the block and how they're all realted to the source,gate and out 1-5 connections on the DAQ board.
    Ultimately I want to be able to put this measured frequency into a Labview program with a controllable gate period.
    Thanks in advance
    Nick

    You might want to search the Knowledge Base on the NI's Support Pages for "Cable Mapping for a 68 Pin Connector to a 50 Pin Connector". This should take you to a link that will explain the mapping of a 50way to 68way cable and subsequent lines you are looking for ( reference sub link 68F50M), I guess you have SH6850 cable connected from the AT-MIO16 card to the SCB-68.
    Please check out the information about the pin outs, that should help you work out which pins map to the counters, eg GPCTR0_source would be pin 37 on your SCB-68
    Regards
    Joe (NI)

  • How to use counter output pulses to trigger analog input?

    Hello all,
    I hope the kind people using this forum can help me, a lowly beginner LV programmer! I have been attempting to create a VI that produces a user defined number of TTL pulses, separated by every n seconds. Each TTL would be outputted to a stimulator, which in turn generates its own TTL. Using the stimulator-generated TTL, I would like to trigger finite analog data acquisition (e.g. for every TTL, trigger the collection of a data sweep that contains 4000 samples (collected at 4000 Hz), with 1000 samples collected pre-trigger. I would like to also be able to see each data sweep as it is triggered on a chart. As I understand things (lots of online/book/forum reading), I should be using the counter output to generate my TTL pulses, and syncing each counter produced TTL with analog input, as well as using a reference trigger. Also, the AI part should be started first, so that I don' t miss any counter outputs. If it matters, I also need to use one of the AI channels to acquire the TTL, so I can see my stimulator-induced responses to the stimulator in time.
    I am able to generate the TTL pulses from the counter output, but I am having a problem with the AI part. I am unsure how to sync the counter output with AI. Also, since I need to acquire pre-trigger samples, I would be needing to acquire samples continuously, but when I set 'continuous samples' on daqmx timing, the VI doesn't work (hence why's its set to 'finite samples').
     I hope someone out there can help, as I have been at this for what seems ages, with limited success. I am using a USB-6259 and LabView v8.2. Thanks!
    Attachments:
    RC001 v_1.vi ‏49 KB

    Hello,
    Due to the fact that analog tasks themselves are not retriggerable, a
    pulse train produced by a counter is always used as the sample clock
    for the analog input task in order to recreate a retriggerable effect
    for analog input. This can be done by creating a finite pulse train set
    to retriggerable using the DAQmx Trigger Property Node, or the pulse
    train could be continuous and just be gated by another signal. Neither
    of these methods can be properly applied in hardware to create a
    retriggerable reference trigger. You can however implement something
    similar in software by just stopping and restarting your reference
    triggered analog input task within a loop. There will be some delay
    between when the task is stopped and restarted, as these events require
    software intervention, but if there is enough time between when each
    trigger signal is generated, there should not be any noticeable delay
    or missed samples.
    I have attached an example of this!
    Mark B
    ===If this fixes your problem, mark as solution!===
    Attachments:
    RC001 v_1mod.vi ‏25 KB

  • Tracking where I am in between TTL pulses

    Greetings.  I have a little Labview experience but very little with counters.  I have a PCI-6602 card with a CB-68LP connector block.  I have used up 7 of the 8 channels counting events so I have one channel left. 
    What I have is a Z pulse that is followed be four events and then another Z pulse.  I know the point in the cycle at which each of these events occurs.  I need to write in my program which event is occuring. 
    I apologize for the confusion.  It's difficult to explain.
    The ideal situation for me is that if the Z pulse is a 360 degree cycle I could track in my program if I am in the first, second, third, or fourth quarter of the cycle between Z pulses.  I know that sounds almost impossible since my Z pulse can change. 
    For what it's worth, I CAN run one of the events in a separate TTL input if that helps me. 
    I have been trying to just reference the Z pulse to a timebase, then a little math would get it done for me but I don't have a full knowledge of counter/timers. 
    Any help would be appreciated.  Sorry for the confusing post.
    Dave B
    www.signalg.com

    I am measuring the speed of an event.  To keep it simple, I am measuring the edge separation between TTL pulses.  As the event moves through a cylinder it sets off probes that will send my system a 5 volt, TTL pulse.  Knowing the time between the event passing probe 1 and probe 2 will tell me the speed of the wave.  I have 7 probes in each of 4 tubes.  Because we are running at 40 hz or less my boss would like to run all seven probes for each tube together.  This way we are writing a smaller amount of data and only using a 7 channels of a counter card rather than 28. 
    So probe 1 in each tube will generate a pulse to the same channel.
    To determine which tube I'm in I am referencing the spark for each tube.  My plan is that when the spark for tube 1 occurs it initiates case #1.  Spark 2 will make case 2 true, etc for 3 and 4.  Each case performs the exact same reading on the exact same channels.  Since not all tubes are exactly the same, each case will have custom formatting for that tube. 
    In each of these cases I am measuring the time between probes to figure speed.  We can run one tube up to all four.  My program should work for all without any intervention from the user since unused tubes will never send their corresponding case structures to true. 
    Using the 90 degrees per was when I was considering using the Z (timing) pulse to determine which tube is active.  Now that I'm using sparks for each tube that is much simpler (I hope).  The sparks coming into the DIO (adjusted to give me a clean TTL) will activate the case for their corresponding tube. 
    The 6221 is pretty affordable but I think this should work with what I have.  If it doesn't I could sell them on another piece of hardware. 
    Do you think this will work?
    Thanks
    Dave
    www.signalg.com

Maybe you are looking for

  • Pl/sql block returning sql query.

    Hello, I am using oracle 10g apex 3.2 version. I am using the following return statement inside my report which is pl/sql block returning sql query. declare pid varchar2(100); begin return 'select patient_id_code from t_files_data_exp where patient_i

  • How to configure extended network via ethernet

    i have a airport extreme and i need to connect my airport express using ethernet cable. what should be the configs in the airport extreme to get this done? thank you. mauro

  • Multi-user security & privacy

    I understand that there have been discussions concerning security and privacy using the iPad.  Many have described issues with multiple e-mail accounts.  The reality is that many of the items, from Safari bookmarks to iBook (and other applications) s

  • Need Value of VKAUS(usage code) within exit (userexit_xkomv_bewerten_end)

    When a sales order is created manually, the Function Module PRICING is called by SAP that helps in determining the pricing for a created Sales Order. within this PRICING FM, the Subroutine xkomv_bewerten  is called. Now from the Subroutine xkomv_bewe

  • Trouble with Register/Login

    I'm using a tablet with prepaid data plan. I can clearly confirm that my device is activated at verizon because I'm posting this and I can see the message on settings-cellular data-view account(iOS). Here it goes. 1. When I try to register on web sit