Measuring Sine wave deformation

Hi Folks.
I am trying to measure the signal deformation coming from a scope. Its a typical sine wave that distorts as the input increases (shown in the attachments). I was initially just going to subtract a known signal from the recieved signal to give the difference. The point by point error is to big for this. I am also trying to determine the slope over time and the rapid change of slope would indicate the point. However point by point calculation of the slope gives too much error to. Is it possible to generate accurate slopes or is there a function that determines if a signal is non-sinusoidal??
Thanks,
Mark.
Solved!
Go to Solution.
Attachments:
Sine1.jpg ‏26 KB
Sine2.jpg ‏26 KB
Sine3.jpg ‏26 KB

For a quick visual check you can use the tone detection vi and export the residual signal, maybe the rms value of the residual is a nice value (THDN)
Measures of deformation of a periodic signal are (usually) often done in the frequency domain and called harmonic distortion. There are also vis that already can do that for you.  (SINAD) . The THD level is usually used.   Look under signal procesing - wfrm measure
Your traces look like a 1g steel ball accelerometer calibration to me.  
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 ǝɥʇ'

Similar Messages

  • How to measure time difference between zero crossing of a sine wave and rise time of a pulse on a same graph?

    I have a 50Hz sine wave and a pulse signal on a same graph. The phase difference between two is between 0-90 degrees.
    Now I need to calculate the time difference between (when the sine wave crosses zero volts) and (when the pulse rises). The frequency will stay approximately same for both signals.
    The application is for a three phase generator. In simple words, when the time difference between the zero-crossing of sine wave and the pulse rises increases, that means that the load on the generator has increases.
    I am a beginner user of LabView (version 9, 2009), maybe it is a very simple problem but I've been pulling my hair out for the last few days and coudln't figure anything out. Any help would be greatly appreciated. I am using DAQ USB-6008 to measure these voltages and pulse from the generator and a sensor
    I have attached a jpg (a graph that i just made with excel to explain). The time 't' is what I am trying to measure
    Cheers
    Awais 
    Message Edited by awais.h on 03-30-2010 11:20 PM
    Message Edited by awais.h on 03-30-2010 11:21 PM
    Solved!
    Go to Solution.

    Hi
    Thanks for the code but I'm afraid it won't work. Like you said the probability of choosing a value that is on both graphs may not happen. This is something that I would like the code to do automatically.
    But I did use the previous code posted and made some modifications to it and it seems to work perfectly. Now the next thing is to be able to get just that one value that tells you the first time difference.
    Here is what I get using that code.
    As you can see from the t Values. I only need the one that is highlighted. If there is a way to filter out the rest it would be great.
    I was thinking of a while loop and as soon as the value is higher than 3E-5 it would store the number and stop the loop, but I'm not too familiar with arrays in labview.
    Here is the the code modified.
    As you can see, it wasn't that big of a modification and it still is your code.
    I will keep trying.
    Thanks for the help
    Attachments:
    FinalShockSpeed.vi ‏55 KB

  • Measuring Superimposed Frequencies on a Sine Wave

    Hi,
    Just looking for advise on the best way to measure superimposed frequencies on my raw data. The raw data (voltage versus time) is ultimately a noisy sine wave with a frequency of 1Hz. I need to determine where the noise is coming from, i.e. is it vibrational, electrical or surrounding noise, hence requiring the frequency of the noise if possible.
    Any advise on the best way of filtering the data would be appreciated. Currently I am using a butterworth filter with a cutoff setting of 1.5Hz. The original data was sampled at 1.5KHz so the noise was measured and so could be filtered during postprocessing.
    Also when filtering I don't want to loose important data i.e. sudden peaks or drops.
    Regards,
    John.

    John,
    Have you tried spectrum analysis of your data? That will give you the frequency content of the signal plus noise. One peak will be at the 1 Hz sine signal and other peaks will correspond with the supeimposed signals. With a 1.5 kHz sampling rate you would get information on frequency content up to the Nyquist frequency of 750 Hz. A peak at 50 or 60 Hz will likely be power line frequency interference. Gears, bearings, and motor armature slots produce characteristic frequencies which are related to the rotational speed.
    Lynn

  • How to measure relative phase of several sine wave inputs

    I'm using a USB-6229 to acquire 10 sine waves, and I would like to output their rms amplitudes and relative phases.  The rms amplitude is not a problem, but I wasn't sure how to go about determining the phase of one signal relative to another.  Do I need to use the Frequency Response analysis step?  Thanks.

    Hi,
    There are some functions you can use to measure the relative phase. You can either measure the phase of every signal related to another one using like you said: a frequency response function step. Using one of these to functions might do the job: “Frequency Response, Express VI” or “Frequency Response Function (Mag-Phase).vi, if you are working in LabVIEW. The first one of these functions "Frequency Response" is also found in signal express and is the one I think you are refering to.
    Although this functions is use for a stimulus response approach they will give you the relative phase of Y with respect to X, “Typically, time signal X is the stimulus, and time signal Y is the response of the system.  in signal express your options is the frequency response step.
    I would also like to point you to some references that might serve you as reference when doing spectrum analysis: An Overview of Frequency-Domain Measurements and FFT Analysis.
    Message Edited by Jaime F on 02-06-2008 11:42 AM
    Jaime Hoffiz
    National Instruments
    Product Expert
    Digital Multimeters and LCR Meters
    Attachments:
    frf.png ‏37 KB

  • How do i measure the frequency of a sine wave using a field point counter module

    I need to measure the frequency of the sine wave using field point. is it possible and if yes how. do i need to convert the sine wave signal to square wave. Please let me know.

    It probably would be easiest to convert the sine wave to a square wave with a simple external circuit and then use a counter module to measure the frequency. There is a shipping example in LabVIEW that shows how to measure frequency with a FieldPoint Counter module.
    JRA

  • Measuring lag between input and output sine waves...

    Hi,
    I am using a Labview VI to control an array of servo motors, each receiving a sine wave input (with different phase offsets for each servo). I'm using a NI USB-6229 DAQ system to monitor their movement via a wire that I've soldered onto each servo's potentiometer. I've written another VI that recieves both the initial sent signal and the returned DAQ signal and plots both on a waveform chart. Both signals show up on the plot as expected, with an obvious phase shift between them. I'm having problems accurately measuring the phase shift, and I'd rather have an automatic method that gives accurate numerical values instead of a more qualitative visual method.
    So far I've tried to use triggers and peak to peak comparisons, but I've been having problems getting results in real time. My incoming signals are time stamped, if that helps. Is there a quick and easy method to extract phase shift data from two sine waves on a waveform chart?
    Thanks for the help...

    Since I work with lock-in amplifiers I came up with this. I guess it will work in your case. This method has some limitations. It will work up to 180 degree. It also measure absolute phase lag. You can not say if the signal is leading or lagging. But in your case it will always be lagging. I posted a VI showing the method in another discussion. Here is the link. http://forums.ni.com/ni/attachments/ni/170/409516/1/demo_v2.vi. Since your DAQ unit do not have simultaneous sampling you will get a small phase error due to inter-channel delay. This is also true if you use the FFT method. What is your signal frequency and which samplerate do you use?
    Besides which, my opinion is that Express VIs Carthage must be destroyed deleted
    (Sorry no Labview "brag list" so far)

  • Measure Every Peak Value Sine Wave

    Hi 
    I have a sine wave that has an average peak to peak value of 1.2V. The sine wave has a dc offset of around 2.5V. Each cycle in the sine wave varies in width. 
    I can feed the signal into the express vi to tell me the maximum Positive pulse peak value and minimum negative peak value. 
    Unfortunatly i would like to measure the Maximum and Minimum Positive Pulse Peak value and Maximum and Minimum negative peak values. 
    Im a little bit lost on how to do this. 
    the frequency of the signal is around 10-20 hz. 
    If i could get the Postivie peak value for every cycle and negative peak value of every cycles stored in two seperate 1d Array i could then search the 1d array for maximum and minimum. Problem is i am unsure how to find each indiviaul peak value. 
    i have attached my code. I am using at 9229 to monitor the signal. I am sampling at 10000 samples per second and recording about 2 seconds of data.
    Thanks 
    Attachments:
    Sine Wave Hystersist Calculator.vi ‏88 KB

    I tried using the you put into the VI and unfortunatly it doesnt work. Im using a 20hz sine wave. I have set my threshold to be the dc offset of the signal so around 2.5V but this changes by around 20mv each time. 
    I have uses an Max and Min array function. It chucks out the highes Peak amplitude but the lowest peak amplitude is incorrect. It counts that there is over 2000 pulses, but that is impossible as there is only 20 high pulses. 
    Any more ideas or help would be great. 
    Attachments:
    Sine Wave Hystersis Calculator.ldj (1).vi ‏109 KB

  • How can i measure only the valley voltages of a sine wave in labview 7 express evaluation version?

    I am trying to convince my company to send me to purchase labview and send me to classes for labview.
    I am trying to put together a small demo for them using the Labview 7 express evaluatin copy that I recieved.
    What I am wondering is how can filter out everything besides the valley peaks on a sine wave.
    What I am trying to accomplish, is create an example showing that Labview can sameple from a sine wave, read about 5 "valley" points of the wave, evaluate these based on a value that i can define, and signal pass or fail.
    attached is a picture of what i have so far
    Ryan
    LV 7.1
    Attachments:
    progress.bmp ‏3841 KB

    Hi,
    I built a VI using LabVIEW 7.0 that detects the valleys in a sine wave. It uses the 'Peak detector' VI that I believe is available in the evaluation version.
    (Functions palette >> All Functions >> Analyze >> Signal Processing >> Time Domain >> Peak Detector)
    I have attached a VI as well as the screen shots its front panel and block diagram.
    I hope this helps.
    Sincerely,
    Feroz
    Attachments:
    valley_detector_bd.jpg ‏36 KB
    valley_detector_fp.jpg ‏72 KB
    valley_detector.vi ‏29 KB

  • Measure a Linear Scale Unit, with sine wave signal

    I have a Linear Scale Unit, with three outputs, Phase A, Phase B and Scale ABS point. The outputs signals are in sine wave, with Phase difference of 90º. I have a NI PCI-6034E, and I don't know how to read that signals and convert them in mm and also put them in LabView program. I only find Quadrature Encoders. I don't know if it is better read the signal by the counter or analog input line.
    Thanks and Best Regards

    Hi Luis,
    If your inputs are sine waves, you're probably best off using analog input, though if the voltages are correct, you might be able to use counters.
    The conversion from the voltage outputs to mm distance is dependent on the sensor, so you will have to look in its documentation or search the web to find the parameters for your device. Once you find these values, you should be able to convert with a pretty simple LabVIEW application based on the input signals, either using their exact values or counting cycles, whichever is appropriate for your sensor.
    If you need more help with the conversion, please post more detailed information on the encoding of your sensor.
    Thank you,
    Kyle Bryson
    National Instruments

  • How can I Write a sine wave in an Access-fil​e?

    I measure a sine wave in LabView 6i. How can I write the datas automatically to an Acces-file, at the same time?
    In my program, I managed it with Execute SQL.vi, I change a number in a SQL statement(String) -> after this I push start and then it writes the statement in the Access-file.
    The problem is, it writes only one data per measurement in the file. How can I write all datas in the Access-file and measure the wave at the same time?
    Thanks for help!
    Attachments:
    getwave.vi ‏49 KB

    On the waveform palette, you will find a "to components" vi that you can break out the array of the waveform. You can then, using a for loop write all of the values from the waveform.
    Better yet, there are examples in the database toolkit manual on pages 3-13 to 3-15 that deal with reading arrays (and even has a waveform example).
    Good luck!

  • How can I calculate the frequency of a 2-4Hz three phase sine wave in 50msec?

    I want to calculate the frequency of a sine wave using either all three phases or just one, but I want to know the frequency after 50 msec, I don't want to have to wait for a full period.

    I have a mathematically sound suggestion but I do not know how well it will work in application. Most period measurements measure the time between a full period or several periods to eliminate the error introduced by the measuring device. Essentially the device error is made insignificant.
    Mathematically you can do much more but there is a tradeoff between recording less information and knowing (or assuming) some values. For instance, if one knew the amplitude and could calculate the derivative of the signal, one could calculate the frequency. A sine wave can be represented by the function: A sin (BX)=C , where A is the amplitude, B is the frequency, C is the present measured value. If the equation is solved for X, we get: X=(sin^(-1)(C/A))/B. The d
    erivative of the first equation is AB cos(BX)=C. If the equation for X is now substituted into the second equation, we get, AB cos(B (sin^(-1)(C/A))/B)=C. Solving for B we get B=C/(A cos(sin^(-1)(C/A))). Remember, we already know A and C, so we are done.
    Practically every step and assumption in the above argument introduces possible error which will affect the accuracy of the frequency. Unfortunately it is a trade off and that is why at least a whole period needs to be measured to get an accurate frequency.
    Jeremy Braden
    National Instruments

  • How to count the number of cycles in sine wave

    Hi,
    I am new to Labview.  I have labview 8.2 version and my dataacquisition is NIDAQPAD6015.  I could write a program to generate a sine wave of desired frequency through simulate signal. My question is how do i measure the number of cycles for this sine wave as soon as I run the program. Hope my question  is clear.
    Ravi Mokirala

    To find the offset (which in this case is the Y value midpoint around which the sine wave is symetrical):
    Capture more than one cycle.  Find the min and max values.  Subtract Min from Max and divide by 2.  Then subtract this result from the Max value (or add the result to the Min value).  This is the offset.
    To count the number of cycles where the offset is unknown, just use the first data point value as a reference.  If the next data point is more positive, then count the number of times that the first data point is repeated and the next data point is more positive.  Of course with DBL data type, you probably would not get the exact same value as the first data point, so you need to use In Range with a very tiny limit.  It all depends on your signal amplitude, frequency, and sampling rate.
    Example:  Lets say your first data point value is 0.5 and the 2nd point is 0.55.  You need to look for another value that is between 0.48 and 0.52.  Then read the very next data point value.  If it is greater than the previous value, add one to the cycle count.  If it is less than, you are at half a cycle, do not add to the count.
    - tbob
    Inventor of the WORM Global

  • PXI-board only returns perfect sine wave

    Hi, everyone!
    This is a strange one:
    Im peforming synchronized sampling from two boards; one is a PCI-6224 in my computer and the other a PXI-6229 located in our PXI-system. Being a rookie when it comes to labview, I was quite proud of myself for managing this all by myself. However, when i looked closer at a 10 sec test-record I noticed something peculiar. Although none of the 32 (differential) channels had inputs during the recording, the PXI-board returned 16 perfect 1 Hz sine waves with exactly the same amplitude as the measurement range. Attaching a signal to the terminal block didn't alter this. The PCI-board returns only weak 50 Hz (power network) noise, as expected. What is going on ??
    I'm using a PXI-1031 chassis together with a PXI-8184 controller connected to the PC with a network cable. I trigger the pxi-board by sending the PC-clock through a PFI-port and a physichal wire.
    regards, Einar

    As I said, I haven't used LabVIEW 8 all that much. It's a bit tricky: you'll have to make a new Project, add the PXI as a new Target, and the add the VI you're trying to run underneath the new target. The last time I was playing with this I also had to open some ports in the Windows XP firewall.
    If this is all a bit much for you, you might have a PXI controller that is configured to dual-boot both LabVIEW RT and Windows XP. If you reboot the controller in Windows XP mode, you can then access the PXI-6229 in the same way you currently access the PCI-6224... provided you don't mind copying the VIs over and hooking up a mouse, monitor, and keyboard to the PXI.
    Switching from LV RT to Windows XP is most easily done by selecting the appropriate option in the PXI's BIOS. Check your PXI controller's manual for details.

  • How do I Fix DDS Generated Sine Wave That Produces a Periodic Square Wave?

    Hello,
    I'm an undergraduate researcher with almost no experience dealing with FPGA semantics and other National Instruments hardware in general.  Part of my project revolves around creating a sine wave signal via the FPGA on an sbRIO-9632 that is output via the board's analog I/O pins, and I found it convenient to adapt the code provided by the National Instruments tutorials (http://zone.ni.com/devzone/cda/epd/p/id/6066) to have it run on an sbRIO FPGA.  The problem I'm encountering right now is that the actual output I'm seeing is a square wave as opposed to the smooth sine wave that was expected, and I've exhausted all my ideas on possible ways to debug this issue.  Can anyone please give me feedback if they've seen this problem before or offer other suggestions on fixing this?
    I'm currently running LabVIEW 2009 with the appropriate real-time and FPGA modules on a 64-bit Windows 7 machine.  Again, the hardware is an sbRIO-9632 complete with analog I/O.  I appreciate it everyone!

    I am also having this issue and have not been able to find a solution in the forums. I am somewhat of a rookie so pardon me if I seem ignorant in any way. I am working on a graduate project where I need to produce some sine waves and I am getting more of a square wave when I output it and measure on the scope. The program I am running is quite simple at the moment to attempt to discover any errors by process of elimination. I have the sine wave generator in a while loop outputting to an AO port. I am using the cRIO 9022 with the 9269 AO module. I will attach screen shots of my code and my oscope image
    Attachments:
    sine wave.jpg ‏76 KB
    code for project.PNG ‏169 KB

  • How to generate finite cycles of sine wave using daq mx in vc++

    Hi,
    How to generate finite cycles of sine wave or for finite duration in vc++ using hardware timer without any sleepfunction in the code.
    Thanks & Regards,
    satya

    Hello Elizabeth,
    Thanks for the response.
    1) I am using NI 6040E PXI.
    2) I am using NI-DAQMx 8.3
    3) Measurement Studio is 6.0.0.105
    4) Operating system is Windows XP.
    I want to generate sine wave for finite duration previously in traditional daq there was function called wave_op.In which we can mention number of cycles of sine wave we wanted to generate. That function is not available in DAQMx so we have to use sleep function to generate finite period. Any hardware control function to control generation of finite cycles please let me know.
    Thanks & Regards,
    satya

Maybe you are looking for