Velocity Measurement from FPQuad-510 encoder pulse counter

Hi, I have a quad-510 quadrature encoder counter and a 1024pulse/1rotation encoder. How can I read or calculate angular velocity(accurately and without much delay) from encoder readings?
Is there a special vi or another algorithm (other than derivative.vi) that could help?
Thank you.

Caner,
What do you see listed for the status of the velocity channels in MAX?
Also check your channel configuration to make sure you have an appropriate range set.
Regards,
Simon
Message Edited by Simon H on 02-02-2007 06:50 PM
Attachments:
MAX_CTR.png ‏26 KB
MAXDataConf.png ‏11 KB

Similar Messages

  • Velocity measurement from low resolution encoders

    Hi, I have 1024 pulse/1rotation encoders. I want to calculate or estimate angular velocity from this low resolution encoders. When I use dx/dt(derivative.vi)  there are high and low readings which obviously seem wrong to me.I want to have a more smooth and accurate reading(and without much delay). Is there an efficient and accurate way of reading velocity measurements from this low resolution encoders? FOr example does Ni/Motion help? Or is there a velocity measurement .vi ?
    Thank you.

    As far as I remember (*) , the FP-QUAD will measure the velocity by counts during a fixed time slot. The maximum time is (was?) 26.??ms.
    Your resolver has 1024 pulses (I assume 2 pulse streams with 90° shift) , the QUAD will count pulse edges, so you get 4096 counts per revolution. Together with the integration time (26.??ms), you get a resolution of 38.15 counts/s (See manual of the FP-QUAD) or an error of +/- 0.559 RPM
    Of course you can read the 32bit counter of the QUAD in a user defined time periode and calculate the velocity.
    If you have real slow movements, you can measure the time between each pulse. The accuracy will depend on the quality of your resolver and the resolution of your timer, however I think this couldn't be done with the FP-QUAD.
    * My last task with FP-QUAD was 4 years ago, maybe new firmware and driver give you more choices now
    Greetings from Germany
    Henrik
    LV since v3.1
    “ground” is a convenient fantasy
    '˙˙˙˙uıɐƃɐ lɐıp puɐ °06 ǝuoɥd ɹnoʎ uɹnʇ ǝsɐǝld 'ʎɹɐuıƃɐɯı sı pǝlɐıp ǝʌɐɥ noʎ ɹǝqɯnu ǝɥʇ'

  • Servo motor encoder pulses/counter data erroneous

    First off, I am very new to using labview.  I am trying to complete a project a former employee was working on.
    For a quick background on what I am working with, I am using a NI DAQCard-6036E connected to a SC-2345.  The SC-2345 is then connected to a load sensor, Omron R88D servo driver, and an omron servo motor.  The servo motor has a incremental encoder with a resolution of around 2048 pulses per revolution.  My labview program includes a counter that records the data from the encoder on the servo motor.  I have been able to get accurate data when testing through the measurement and automation program by manually turning the motor.  Also when running through the specific DAQ assistant I am using for my counter, I am getting correct readings when manually turning motor.  Once I run my complete program, instead of getting 2048 pulses per revolution, I am getting between 34000-36000 pulses per revolution.  The most logical assumption is that I am getting vibration in the motor itself or some sort of noise is interfering with my signal.  I first attempted to change any possible settings through the omron servo driver that might reduce any vibration in the motor.  I attempting changing the rigidity settings, turning on and off the auto-tuning function, and a few other settings specified by the user manual that might cause vibration.  If I turn the rigidity settings as low as possible, I am able to get around 2000 pulses per revolution, but the data is very sporadic. Also, my equipment needs to be very rigid, and with the lowest rigidity setting for the servo driver, I am able to almost stop the motor with minimal force.  My equipment needs to be able to travel at a near constant speed with fluctuations of up to 200 N of force.  Any suggestions on which direction I should go in finding a countermeasure? 
    Thanks
    Solved!
    Go to Solution.

    The model number of the servo motor is R88M-W10030L.  The servo motor rotates at a constant speed.  The program is designed to drive the servo motor connected to a ball screw in one direction.  Once the load sensor reaches a desired load, it will reverse at a constant speed until no load is on the sensor. Throughout, it records load vs. displacement.   I have found a few things that will alter the pulses counts.  If you apply resistive pressure on the servo motor while it is rotating, the pulse output will vary.  Also when you apply pressure to the casing of the servo motor itself, the pulses will often jump around. I was almost certain my false pulses were caused by vibration.  After have no success adjusting settings to reduce vibration(according to the user manual), I ran the program while moving around several wires to see if any were loose, etc... After applying force to the power lines and encoder cable, the program ran several times with an average of 2000 pulses per revolution and would actually subract pulses while going in reverse(what I want it to do); Although the average was around 2000 pulses per revoltion, i saw positive and negative jumps in pulse counts while traveling forward at constant speed.  Today I re-wired the equipment, seperating as many wires as possible.  After the re-wire, the equipment/program is back to sending 34000+ pulses per revolution, and does not subract pulses while reversing.  I have read the 'Using Quadrature Encoders with E Series DAQ Boards' article.  Referring to the article, I am running similar to "method 1".  I am already using a signal conditioning box, but have the counter data run directly through. Do you believe running the signals through a SCC-CTR01 might solve the problems? 

  • Measurement error in reading Encoder Pulses

    I am using PCI-6601 card to read a Linear Encoder which gives 2000 pulses per mm of distance.The accuracy of the Linear encoder is 2Microns.In my application I am measuring a distance of 7mm.But the card is reading with an error of 30 to 50 Microns error.We had checked up all the factors related to mechanical and Encoder.In fact the same application was earlier working with Advantech Encoder card which has provisons to connect the A,B,A Bar,B Bar inputs from Encoder.There was an accuracy of 0 to 5Microns.But the application was replaced with NI Card because of the continuous problem of the Digital I/O Card used from Advantech.
    Mail me the possible causes and also the troubleshooting procedures for correcting the above problem

    Hi,
    What I think is happening is there might be some noise on your signal lines. The PCI-6601 counters are capable of detecting a pulse as small as 20ns. If the Advantech card can't detect pulses at that small a resolution, it might be ignoring "noisy" pulses that shouldn't be there. Are you reading more pulses than you should be or less?
    There are a couple things I might be able to suggest to clean up your signal. The counters support several different encoder modes. Try using X4 Encoders. An X4 encoder counter increments or decrements on each edge of channels A and B. Whether the counter increments or decrements depends on which channel leads the other. Each cycle results in four increments or decrements. I believe this X4 mode is more noise resi
    stant than the standard mode.
    Another thing you might want to consider is applying a filter to the input signals (debounce or deglitch filters). Each PFI line coming from the I/O connector can be passed through a simple digital filter. The filter operates off a filter clock and a fast internal sampling clock. It samples the signal on the PFI line on each rising edge of the sampling clock. A change in the signal is propagated only if it maintains its new state for at least the duration between two consecutive rising edges of the filter clock (one filter clock period). The frequency of the filter clock determines whether a transition in the signal may propagate or not.
    6601/6602 User Manual
    http://digital.ni.com/manuals.nsf/webAdvsearch/DD0DBB6404BC139886256721007CF16D?OpenDocument&vid=niwc&node=132100_US
    Hopefully one of these suggestions will do the trick. Have a good day.
    Ron

  • How to measure the frequency of a pulse being generated by a counter

    Hi,
    I am using labview 8.6 to generate 5 evenly spaced pulses for every 1 revolution of my shaft. However, I would also want to know the frequency of these pulses so I can determine the shaft speed. Since I am already generating the pulses using one of my counters, can I still tap into that or task another counter to measure the pulse frequency? If so, how? I have attached my code for generating the pulses and I am using an Ni 9401 module and an NI 9172 chassis. If someone can helo me modify the code to measure and tell me the pulse frequency as well, that would be really appreciated
    Attachments:
    autotrain2.vi ‏19 KB

    You'd probably get a more coherent answer if you didn't bounce around from thread to thread so much...
    How can I generate a pulse train from shaft encoder? (5/13)
    pulse train from encoder (5/15)
    how to measure rpm (5/20)
    How to measure rpm using shaft encoder and labview (5/23)
    This thread (also 5/23)
    I see you ignored my suggestion from the other thread--Kevin's solution is good too but using an encoder task offers more noise immunity (I think this is probably the cause of the problem you reported on the other thread).  You can fix it with digital filtering if you want to keep using a counter output instead of an encoder task.  Noise during transitions is pretty common for a quadrature encoder.
    A finite counter output task uses 2 counters on the 9172 (although you said 9174 earlier at one point--this wouldn't be the case on a 9174) so you wouldn't have one left to make your frequency measurement.  With the solution you have now, you can change to continuous to free up a counter if you don't care about outputing an exact number of rotation's worth of pulses (I'm not sure if you do or not--I didn't read through all of the various threads relating to this application to find out).
    For your actual question in this thread...  Have you tried running one of the frequency measurement examples?  From the code here I can't tell what you have tried (it just looks like a mangled version of the code Kevin gave to you in your other thread).
    Best Regards,
    John Passiak

  • Slow Velocity Measurement Using cFP QUAD-510

    I want to use the cFP QUAD-510 Module with a 1024 Count Per Revolution Quadrature Encoder to get velocity, direction, and placement of a rotating shaft. The shaft is a VERY SLOW ROTATING SHAFT, about 1 revolution per 7 seconds, or .143 rps. The encoder frequency is 1024 X .143 which comes to 143.432 Hz. I have two questions:
    1. Since the velocity counter registers in the QUAD-510 are fixed in microsecond references, will I get a meaningful resolution out of the registers with an encoder freq. of 143Hz?
    2. Is 143Hz too slow for the QUAD-510 and should I just change over to an absolute encoder with a DIO Module and do my own velocity calculations with loops and longer time bases?
    I know the quadrature will work for placement and direction. But I am not sure if this is the right application for velocity.
    Ron Kocol

    Ron-
    Due to how slow your encoder is running, I can’t guaranty the accuracy of the velocity readings from the counter references.  A better way to do this would be to simply take the derivative of your position (dx/dt).  This way it will be as accurate as possible.
    Regards,
    Mike S
    NI AE

  • 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?

  • Velocity calculation from qudrature encoder

    Hi,
    I am using Labview 8 with E series DAQ card, and trying to calculate velocity from the Quadrature encoder. I calculate time difference by using Tick Count, and then divide the change in position to the change in time. The problem is that the time difference should be the same as sampling rate or Wait Until Next ms in the attached file, however the time difference is not always the same, which sometime makes spike in the velocity calculation. I would like to know if I have to use the constant number (sampling rate/wait until next) for velocity calculation, or is there any other solution? I don’t understand why the time difference is not the same for different iterations. I would appreciate if somebody can help.
    Thanks,
    Azadeh
    Attachments:
    try encoder.vi ‏46 KB

    Software timed data acquisition is always subject to timing variations due to OS latencies. Both the DAQ operations and the screen updates (writes to indicators) will occur at times controlled in part by the OS and not necessarily synchronized with the loop timing. In addition the conditional execution (Case ..0 compared to Cases 1 or 2) may take different amounts of time - the differences are probably much smaller than the tick count resolution, but there are differences.
    If you cannot do hardware timed DAQ, then try two things: One, put the DAQ in a high priority loop which does nothing but Read the counter and the Tick count and put the data into a queue at the timing rate you prefer. You do not need a separate Tick count function - just take the data from the Wait until next ms Multiple. Be sure to use dataflow so you know whether the tick count was read before or after the DAQ. Put all the calculations and front panel controls and indicators in a separate, parallel loop which reads the data from the queue. It must also have some kind of wait function. A wait of 100-200 ms is reasonable for user interface updates. People cannot respond any faster than that.
    Two, do some smoothing of the data. Any differentiation process, such as position -> time, tends to enhance any noise or high frequency variations. A simple moving average filter may clean up your velocity signal. How much filtering and what type may depend on the intended usage of the data.
    Lynn

  • How to measure time difference between two continous encoder pulse (PULSE A & PULSE B)

    im trying to figure out the time difference between two square
    wave pulse (PULSE A and PULSE B) from an encoder. I tried to modify many code but fail to capture thephase difference  for each pulse. the
    pulse only rise to 5V and fall to 0V like normal square wave pulse
    can you and all of experts here help me out with this?
    my problem
    1) Encoder pulse are continous (pulse A and pulse B)
    2) Square wave pulse have "0V" and "5V" please rapidly
    if possible someone show me correct method , Im using LABVIEW 7.1 and Hardware NI SCOPE (PCI 5102)
    your advice are highly appreciated
    among my idea as in attachment , but I failed to get it
    Attachments:
    Need to Get this wave.JPG ‏34 KB

    Hi Amirul,
    Check the attached JPG file. i think this will be use full to you
    Regards,
    Santhosh M

  • Encoder pulse edge counting on VBAI

    Hi I am Dana and currently using smart camera 1772C.
    I connected the incremental encoder (1200 pulses/revolution) to the camera in digital input port to trigger image acquisiton. 
    This is working well and accurate when encoder is rotating at very slow speed.
    But the problem is when it goes a little fast (1 revolution /sec). It cannot read edges because encoder pulses just remain at high (=1) and doesn't change at all.
    On the monitor panel, I can adjust the sampling rate but the maximum is 150 Hz. Is this the reason why I cannot read the high speed pulses?
    Please anybody help me !
    Thank you

    Hi Dana,
    The sampling rate most likely maxes out at 150Hz because the digital lines can change that quickly, but I checked the specs for the 1772C, and it looks like the maximum frames per second for that specific smart camera is 65fps. In order to trigger off a 1.2kHz signal, you would have to divide the signal down to a maximum of 65Hz. 
    David S.

  • Velocity readings cFP-QUAD-510, explain limitations

    I am trying to understand the limitations of the Velocity measurements capability of the [c]FP-QUAD-510.
    Looking at the operations manual I see the maximum velocities that can be measured in counts/us.
    If I have a quadrature encoder tracking a shaft running at 1750 rpm, and the encoder is 60 PPR - this yields 1750 counts/second or 0.00175 counts/us.
    Would I thus have to use the longest timebase to obtain RPM +/- 38 counts/sec which with the 60 PPR yeilds +/- 38 rpm ? 
    Thus I would need to increase my PPR to get me a better Velocity Resolution.**
    **Is my understanding of the velocity Ranges correct?
    Message Edited by RVallieu on 07-01-2008 04:30 PM
    Ryan Vallieu
    Automation System Architect

    Hi Ryan,
    This is what I have:
    60 Pulses /revolution * 1750 revolutions/minute * 1minute/60 seconds = 1750 revolutions/second = 1750 counts/sec (1 revolution = 1 count)
    1750 counts/sec *1sec/ 10^6 microsecs = 0.00175 counts/microsecond
    Comparing this value to Page 11 of the operating instruction, the best time base for this would be 26214.14 microsecs.
    Velocity range means the highest velocity value that can be measured within that rage. So for your value of 0.00175 counts/microsecong, the range of +/- 1.25 counts/microsecond would be the most appropriate since you would get the best resolution. You can, of course measure values upto +/- 1.25 counts/microsecond within the range.
    I hope this helps!
    Warm regards,
    Karunya R
    National Instruments
    Applications Engineer

  • Measuring speed with incrementa​l single counter

    Hi,
    I need to measure the rotational speed and acceleration of a wheel that has 3 hall sensors on it. I will use only 1 of them en it gives 24 pulses 0-5V for a 360° rotation. How can I measure the speed with only a pulse train. I dont have the Quadric encoder...
    Now I'd like to measure the rotational speed using a counter of some sort, but the software I tried writing for it isnt working.
    Thank you for your help

    Hey Nitch,
    Concerning the measurements errors:
    As you get error when speeding up, it looks like the pulses coming from the hall sensors are to short to get measured by the counter.
    Following the USB-6008 specifications, the pulse needs to have a minimum lenght of 100ns (both in high and low state).
    As a counter is using edges to count the pulses (for USB-6008 only the falling edge) the edges need to comply with the TTL specifications which means that the rise and fall time of the pulse needs to be within the 50ns range. 
    So please have a look at the pulse lenght at higher speeds (are they at least 100ns?) and make sure the pulse comply with the TTL specifications.
     If not you will have to add some additional electronics to reshape the pulses.
    Looking at your program.
    It's not nescesarry to have two loops.  It's very well possible to have two DAQ tasks within the same look.
    Have a look at the Examples which come with LabVIEW --> Exampled Finder --> Hardware Input/Output --> DAQmx --> Synchronization --> Multi-Function.
    There are some examples which so the combination of analog and digital input.
    Anyhow you will have to remove the right while loop as the DAQ Express VI which apparently gives you the "spanning, stroom, gashendel" values will only start once you have done the counter measurements.  I assume that you would like to have the "spanning", "stroom", "gashendel" and"speed" synchronized measured.
    Then you have the choice to log to file during acquisition or after the acquisition.
    If you would like to log on the fly don't use the express VI's, but use the lower lever "File I/O" functions. These are faster (less processor time usage).
    As you VI is written now, the left while loop will only output the lastest counter value measured to the next loop when you click the stop button for example.
    You have to "Enable Indexing" of the m/s output tunnel.  Right click on the tunnel and you will be able to select "Enable Indexing".
    This way the application will automatically create an array and each loop iteration the measured value will be added.  One the measurements have been done you can do analysis and save the data using the full array instead of point by point.
    Again, also bring your "spanning, stroom and gashendel" inputs to the left loop.
    In your right loop you also have a loop counter.
    You can simply use the loop iteraction counter (the square box in the left bottom corner with the i).  This is also counting from 0 and incrementing by 1 each loop iteration.
    Again, you can do this in the left loop and forget the second loop completely.
    Hopes this will bring you a step further.
    Don't hesitate to post the VI itself.  This is always easier to look at than an image.
    This way we can also make some modications and post it back.
    Best regards,
    Joeri
    National Instruments
    Applications Engineering
    http://www.ni.com/ask
    Make our forums great:
    If you like the answer, don't forget to "Kudos!".
    "Accept the Solution" if your question is answered!

  • Low velocity measurement using 6601

    I am using 6601 on measurement of position and velocity of increamental encoder. Our sevor motor rotate at very low speed. How can I measure the velocity at high accuracy at the same time of measuring the posstion of encoder.Can you provide me some tip? Thanks.

    Hello;
    You can use two counters to accomplish that task.
    The first counter can be used and configured as position measurement. That will make the counter to give back the position of the motor.
    The second counter can be used as buffered event counter. You just need to route one of the encoder channels to the counter gate, and since you know the frequency of the source, and at every event of a gate pulse, the internal value of the counter is transfered to the buffer, you can do a quick calculation with the number retrieved and the source signal frequency.
    Hope this helps.
    Filipe A.
    Applications Engineer
    National Instruments

  • CDAQ module for high speed pulse counting

    I need to know a USB module which can be used for pulse counting. The pulses are generated from an encoder attached with an stepper motor. It generates 15 pulses per step.Pulse amplitude is 0 to 5V. I am using a compact DAQ system (ni 9178).

    The counters are on the cDAQ chassis backplane (there are 4 of them on the 9178).  So, in order to use an external signal with the counters you would need a way to route the signal to the backplane.  Your available options are:
    1.  Any digital I/O module with 8 or less lines on it (some modules are input-only or output-only--input modules can be used for counter input tasks only, output modules can be used for counter output tasks only).  Modules with over 8 lines transfer the data serially to the chassis backplane and so do not support routing signals through to the counters.
    2.  The 2 PFI lines on the 9178 (I should have mentioned this earlier, this might be a good option for you to route your encoder pulses without having to purchase an additional module if you only need 2 inputs--that is, no Z index signal).  The bandwidth on the chassis PFI lines is lower than that of the 9401 and 9402, I believe the chassis PFI lines should take signals up to ~1 MHz.
    3.  An analog module with triggering capabilities (at this time only the 9205 and 9206) can route a digital signal (the 9205 and 9206 have a PFI line) or an "analog comparison event" (see my post here) to the counter terminals.
    In case 1 above, you configure this by selecting the counter using the module's name (e.g. "cDAQ1Mod2/ctr0").  Default input terminals will be used (check the device pinouts for your module in Measurement and Automation Explorer) or you can select which terminals to use for your inputs using a DAQmx channel property node.
    In cases 2 and 3, you would need to select the counter as the internal backplane counter (e.g. "cDAQ1/_ctr0").  You will need to select which terminal your signal is coming from (since the internal backplane counter does not have default terminals.  This same method can be used to count internal signals (e.g. sample clocks, counter outputs, etc.) without having to use any of the 3 routing options mentioned above.
    Best Regards,
    John Passiak

  • Analog and Encoder being collected only on encoder pulses.

    I currently have the setup below and the XValue timestamps from the Write to Measurement File are not exactly at the rate I specified in the DAQ Assistant.  The DAQ Assistant just has analog channels with Samples to Read set as 10 (or 1, which does not affect this example) and the Sample Rate (Hz) set to 10 Hz.  The main problem that I am having is that the analog channels seem to follow the Frequency Counter in the sense that it alters the XValue timestamps in the Write to Measurement File and will only log the analogs and frequency channel when the encoder (frequency counter) encounters the edge of a pulse.  How do I get the analog channels in the DAQ Assistant to log as well as getting the Frequency Counter to log simultaneously with the correct XValue timestamps from the Write to Measurement File with or without the encoder moving? 
    Also, is the 100 ms Wait Until Next ms Multiple needed for the Frequency Counter?
    Thanks in advance for the help.

    The *.vi works correctly except for the fact that when the encoder is not reading any pulses, not moving, it delays all data acquisition for all channels (analog and counter) until the encoder rotates again or the counter channel for the encoder times out according to the timeout specified.  I would like for all of the channels to be able to continue logging at the specified rate in the DAQ Assistant for the analog channels and the specified rate for the counter channel (encoder) if the encoder is not reading any pulses.  Also, when the counter channel is reading pulses, the timestamp XValue of the Write to Measurement File is not at the exact rate I specify in the DAQ Assistant.  An example of some data is shown below.
    X_Value
                  Analog
           Encoder
    0
    2.231008
    0
    9.237507
    0.942442
    0
    20.366281
    3.523876
    5.227699
    20.725778
    -4.150966
    1.09365
    22.304438
    6.117589
    70.197237
    When the encoder is not receiving counts, it halts all data to be written to the Write to Measurement File and the X_Value timestamps are not exactly at 10Hz as I requested in the DAQ Assistant.
    Thanks again for any help.

Maybe you are looking for

  • Changing computers but not external hard drive, how to modify and delete catalogs?

    Moving my relatively new 2012 Mac Mini from office back home that has LR4 and PS CS6 installed.   It has a small LR catalog that I want to delete completely. Presently at home, I use my MacBook Pro which I want to take "offline" in regards to photo e

  • Adding environment variable in build.xml(ANT)

    Hi, I need some information Regarding ANT, the problem is i have to add a property file in build.xml (as a environment varialble) so that i can read it in my java code. as System.getProperty(""). Please sugggest me how to set environment variable in

  • Easy DMS | storage category

    Dear experts, is it possible to create a dependency between document types and storage categories in EDMS? EDMS has to select a storage category by default or inherited it from root folders? e.g. project documents => StorCat 01 office documents => St

  • March 6th 08 Steve Jobs Keynote???

    Deggie said it is on the 6th! Is apple going to announce a al macbook? Or SDK??

  • ITunes forgetting or erasin text in search field when in mini-player modus

    Hi, there has been an annoying bug in iTunes since version 8 where iTunes doesn't seem to remember the text typed in the search field when it's in mini-player modus. Concrete example: I type in the search field The Beatles. I get the list with all mu