Measuring Amplitudes of 3 Mixed/Staggered Phase Square Waves

I'm writing a vi intended to measure the amplitudes of three mixed signals.  These signals are generated by the DAQ already to drive 3 LEDs at 9kHz/ 50% DC combined. 
I was able to modify an existing example vi to create the LED drive.  I was hoping to find a similar example for the data capture and analysis.  I haven't been successful thus far. 
Could someone please suggest a good example to get me started?  Please forgive my inexperience as I have been teaching myself Lab View and thus have a very ignorant instructor.
-Thanks in advance.

Bad,
Have you tried the analog data acquisition examples? The sample rate would need to be >18 kHz to meet the Nyquist criterion, but that assumes sinusoidal signals. Since you are talking square waves, you will need to sample quite a bit faster to recover the waveforms. 100 kHz or 250 kHz are probably good starting points if your device will sample that fast.
Tell us what you have tried and specifically what does not work. Do you get error messages? Does the result look wrong?
Posting you code with the data you have collected is very useful.
Lynn

Similar Messages

  • How to calculate the phase difference between two square wave (acquired from two channel in one DAQ)

    Hello everyone ,
     I need a quickly help that as below :
    I am trying use PCI-6220 to acquired six signals from one rotation encoder (channel A, channel B,channel Z ,and their non-signals) .The encoder out signals will be square wave and 4000pulses per revolution. I set it rotation at 300rpm speed. I need show every square wave of six out channels in waveform and measure the A-B phase difference to check if the value is correct (designed value should be 90deg) .
    I have no idea how to measure or calculate the phase difference of two square wave base on synchronizate to acquire these two square wave from two channel on the PCI-6620....
    Anyone can give a idea how to calculate the phase difference with two square wave ?
    Thank a lot and Thanks again...
    Tim

    Tim,
    Here is a simple rising edge detector for one channel.
    Lynn
    Attachments:
    Rising edge.vi ‏15 KB

  • Phase shift of a sine wave and a square wave

    Hi,
    I would like to simply compute the phase shift between a sinusoidal waveform and a square one. Between two sin-s I can compute, but I have no idea how to do that with a square waveform.
    Thanks,
    Ussr123

    Hi there,
    the easiest way is to use the ExpressVIs.
    But you are only allowed to use the ExpressVI "Tone Measurements" if you have enough periods of the square wave, because it computes the phase with FFT.
    An other possibility is to use the spectrum analyser VI as used in the attached exsample.
    Greetz
    Branni
    Attachments:
    Phaseshift_Sqr_Sin.vi ‏89 KB

  • Measure amplitude continuous​ly

    Hi,
    I am acquiring a sine wave, square, triangle wave with different frequencies and amplitudes directly into labview showing the result in a waveform chart continuously.
    The thing is that i Want to display an indicator that shows the frequency and amplitude of the given waveform.
    I have searched for point by point VIs, but there are no point by point VIs that measure amplitude or frequency of a signal.
    How can i solve this problem?

    Hi Willelas,
    Just as NapDynamite said, you can use the Extract Single Tone Information VI from the Signal Processing palette. I have attached a simple example of how to extract the amplitude and frequency of a generated sine wave. You should be able to open it with LabVIEW 2011 or later.
    Attachments:
    example_measure_amp_and_freq_LV2011.vi ‏29 KB

  • Square wave generation phase offset problems using PXI6602

    Hi,
    I am generating 2 signals to use for simunlating an Incremental AB encoder using a PXI6602.
    The signals need to be square wave, 34.133Khz, offset by 90degrees which I am setting by dividing (1/frequency) by 4 and putting the result into the DAQmx Create Channel (CO-Pulse Generation-Frequency).vi initial delay node.
    The resulting signals phase difference however does not consistantly measure 90degrees. At least 1 in 5 runs of the vi has a phase angle issue resulting in a failed test.
    Can anyone suggest a stable fix for this.
    Thanks,
    David

    Thanks John_P1,
    that seems logical and as for the frequency, it's not really critical that it's exactly 34.133Khz as long as it's there abouts.
    I've had a little play with the trigger suggestion using the examples in LabVIEW as reference (Hardware Input and Output>DAQmx>Counter Output) but I'm getting an error as seen in the attached image no matter what I select the trigger source as.
    I am relatively new to LabVIEW program building and have had no formal training as yet so could you possibly look at the attached vi and suggest or impliment the required changes to get this vi working please.
    Thanks.
    David.
     

  • Does PCI6110 can get a square wave at 3KHz without amplitude distortion?

    We are using LABview with DAQ board(PCI6110)system in our electro-optical measurement.
    Now we need to increase the signal frequency from the origianl 1Khz to 3Khz. Does it work and how to set it?

    Haiying,
    It appears that you are outputting a square wave from your PCI-6110. Are you using an analog output channel or counter to output this signal? From the wording of your question, I am guessing that you are using an analog output channel. The PCI-6110 has a maximum update rate of 4 MS/s. So, outputting a square wave at 3 kHz is definitely possible. The output signal frequency is calculated as follows:
    signal frequency = (cycles in buffer * update rate)/(data points in buffer)
    Thus, you can manipulate any of these parameters to change the output signal frequency. Most likely, you will want to change the update rate. In LabVIEW, this is accomplished by changing the update rate input to AO Start.vi.
    Good luck with your appl
    ication.
    Spencer S.

  • How can be time implimenting in Square Wave Point By Point .vi

    i want to use "Square Wave Point By Point .vi" but i can not understand how to put time value.

    Hello,
    I understand you wanted to use the mentioned vi. So the thing is the inputs that you can see are not compulsory or required inputs. Those are recommended inputs which you can use if you have a requirement in your application. So in thise vi as you know the duty cycle will define the time a square wave remains high versus low over one period. Morever the output of the square wave will be as follows:
    square wave = amplitude × square (p)
    where
    square(p) = 1 if [ (360. frequency. time + phase)mod(360)] is < [360. duty cycle(100%) / 100]
     and -1 for other cases.
    So from this equation you can work on your application and decide if you need any time input at all or not.
    Hope this helps.
    Cheers..!! 

  • I have generated two square wave forms using NI-9221. These two Square waveforms are suppose to be 90 degrees electrical from one another.

     I have two square wave forms from an encoder wheel. I can not seem to generate or calculate the phase of the waveforms. I have tried to extract the data but it is not accurate? I can not use a true false statement with the extracted data either. I have to have the one waveform 90 degrees electrical from the other waveform. Any Suggestions?

    Fist thank you both for responding so quickly. I am using a half encoder wheel and the waveforms are certainly show the phases correctly.  The operator of this program will not have access to the graph only the data and measurements collected. The reason I am trying to get the phase is because that is going to be a major factor in if the board passes or fails. I extracted the phases from the waveforms but it’s not accurate at all. I think I may try to trigger when to measure the wave and when to stop measuring. Is that Possible?
    J. Powell

  • Calculate Square wave Duty Cycle

    Hello everyone,
    I'm acquiring (with USB-6212) a square wave, "100Hz" with variable duty cycle - which can be 20%, 50% or 80% - for matters of decodification; the acquisition frequency is set to 4k. Actually, I said the frequency is 100Hz, because I get a rising edge every 10ms, but the length of the high level is defined by the communication protocol and that is what I called duty cycle (even though this does not match the exact definition of this property)
    Since I need to decode the information contained by the wave, it's necessary for me to be able to tell what the duty cycle is. I've acomplished this so far by taking the derivative of the signal, then calculating peaks and valleys index in the waveform and finally subtracting them, as shown below.
    It works ok almost the whole opeartion, however, the acquisition is not 100% exact. Sometimes I get the signal in the picture A, that is ideal for what I intended.
    Other times, the signal is like B and the derivative amplitude does not cross my threshold, even though there is a rising edge there. I could lower my threshold to 2, for instance, but then I'd get vulnerable to the signal in picture C, which would accuse 2 peaks, instead of just one.
    Anyone have an idea on how to work around this or any other method more reliable than taking the derivative of the signal?
    Solved!
    Go to Solution.

    Well, we can only answer question based on the information supplied!  The LabVIEW Mind Reading Toolkit is still in development.
    Your application is one where parallel loops may be valuable.  In the acquisition loop you read data from the data acquistion device at a rate which optimizes the DAQ perfomance (the >= 2k points you mentioned).  The data is transferred to an analysis loop via a queue. In the anaylsis loop you can put the data into a shift register.  When more data is available from the Acquisition loop, dequeue it and append it to the data in the shift register.  The Duty Cycle section will find two consecutive rising edges and the falling edge between them ( the 10 ms segment).  It calculates the duty cycle for that segment. Then it uses the second of the rising edges as the first rising edge for the next segment.  Repeat until duty cycles have been determined for all segments.
    There are a lot of details which can be imprortant in a process like this. Many of them are dependent on other things you have not specified.  What will be done with the duty cycle values? Is the raw data to be displayed? Saved to file? Discarded after the duty cycle is measured?  How long will the process continue?  How much data can accumulate?
    Lynn

  • Multiplexed Square Wave

    Hy to all
    I'm working on a project where I have to build a sensor. I'm using 8 analogue outputs and 8 analogue inputs. On every output I have to send one square wave impulse positive and negative with various amplitudes. But they have to be multiplexed, that means first the impulse has to be on output 1 and all imputes have to read the data, then the first has to be 0 again and the next output 2 gets started.
    I've written a program and it logically works fine, but as soon as I run it on the FPGA noting happens. It takes 45 min to compile and I don't know what the problem is. I wanted to measure simply the output with an oscilloscope and the is no signal. 
    If you have time can you look at the program and give me some ideas what the problem could be.
    Thanks
    Attachments:
    Vire Mesh 3 (FPGA).vi ‏779 KB

    hello,
    it looks like a timing problem. Here are a few tips:
    1. the output is in the same loop as the input, but the inputs have their own loop afterwards. This means that the output is written a little too infrequently and is therefore not updated. You should probably separate input and output. Also check the calculations at the top to make sure they don't generate values that are out of the ordinary
    2. you can create the square wave in a separate loop and pass its value with a local variable to other places in your code. This is also good to test the output without interference from the inputs.
    3. you really don't need to connect the same wire in parallel to your sequence structure. Just pass it in once and reuse the same wire in every frame. It will make it easier to read.
    Regards,
    Joseph

  • Using pulse width modulated signal (square wave) to control when a signal is turned on or off

    Using pulse width modulated signal (square wave) to control when a signal is turned on or off
    Greetings All
    I'm trying to use a labview created pulse width modulated signal (square wave) to control when a signal is turned on or off.
    Here's my logic and graphic example:
    1) The source wave signal is continuous
    2) Use a PWM (square wave) created in labview to control when the signal is turned on or off
    3) If PWM signal (amplitude) is greater than 0 play signal if PWM is not greater than 0 don't play signal.
    I'm actually using this to step sequence / pulse several separate magnetic coils using my audio card (which has several audio output channels), I have a signal in labview played constantly.  Than compare it to the PWM (square wave) which controls if the signal gets played on each separate channel or not.  That way I can control which coil is on and off and in what sequence they are activated. 
    I couldn't find an edge detection for a square wave created in labview so I tried Limits but that doesn't seem to work unless I change the phase manually and that only goes from 1 to -1.  I'm just trying to compare the PWM (square wave edges) already created by labview / play a signal if the pulse is greater than 0 and it turns off the signal if it's less than 0.
    Should I be doing this another way
    Tia
    Message Edited by sal22 on 08-16-2009 06:09 PM
    Message Edited by sal22 on 08-16-2009 06:10 PM
    Solved!
    Go to Solution.
    Attachments:
    PWM control signal block.png ‏23 KB
    PWM control signal front.png ‏48 KB
    pwm test.vi ‏36 KB

    Greetings,
    I tried it two ways using amplitude and levels and fft spectrum.  The values don't seem to update the way I need them to (basiclly showing a 0 or a 1).   I compare the Y values like you recommended but they don't ever seem to update.
    tia
    Message Edited by sal22 on 08-19-2009 10:05 AM
    Attachments:
    pwm magnitude not updating.png ‏29 KB
    pwm test.vi ‏41 KB

  • How to generate a high freq square wave on NI-USB 62xx

    Hi,
    I am trying to generate a 50khz square wave with an AO channel on the NI-USB 6212 (rated at 250ks/s AO). I started with the Voltage - Continuous Output.vi example but when i go up toward 50khz square wave (100khz sample rate) the edges of the square wave become rounded. The slew rate for the card is 5V/us and my amplitude is just .5V so i feel like I'm doing something wrong with the task setup.
    I also tried setting continuous samples using the onboard clock for a source and then writing an array [1,-1] but that fails at anything higher than ~8khz. 
    What's the most efficienct/correct way to set up a task like this? Any help appreciated. Thanks.
    Matt

    Hello Matt,
    Right now, I think that shape of the signal that is being output is being controlled by the load on the AO. 
    If there is a very large impedance load attached between AO and ground, the RC time constant of the circuit is going to be very high.  This will result in a large amount of time required to charge and dissipate the voltage.  By increasing the frequency, the amount of time allotted for this is being reduced.  Potentially resulting in the waveform you are seeing.
    Can you please upload a picture of your waveform?
    Can you please try to reduce the load on the AO?  This can be done by disconnecting the current load and attaching a small resistor (50 Ohms should be good).  Does this result in the correct waveform?
    Regards,
    Thomas C.
    Applications Engineer
    National Instruments

  • How do you find the frequency of a small sample size and a square wave.

    I am collecting data from ten 12v pulses that are seperated pretty uniformly. The pulses make a square wave. I need to know how to input this small sample size and find it frequency. I need this frequency to be output in a readable file. Im not very knowledgeable in labview so if you try and help me please be very descriptive.
    I know i need some sort of trigger because of uknown wait times before the sensor will be triggored but other than that im pretty lost. Any help would be appreciated.

    What have you tried so far?  What parts are giving you trouble?  Please be as specific as possible. Post the code you have written.
    You ask about frequency measurement and then you are talking about triggering.
    If you always have 10 pulses, just measure the time from the beginning of the first pulse to the beginning of the last pulse.  The frequency is 10/time.
    Break down the problem to smaller parts.  Acquire the data.  Measure the frequency. Save the result to a file.  Get each part working separately, then put them together.
    Lynn 
    Sorry about duplicate post. My internet connection is very slow today.
    Message Edited by johnsold on 05-31-2010 12:05 PM

  • 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 3 phase sine wave to output on ELVIS

    Hi .I need to make a star or delta connected circuit on ELVIS board.2 make this circuit I need 3 wave generator( with 120 phase shift) and one common ground
    and because the ELVIS function generator can only generate one wave I decided to generate countionuos sine wave in Labview.
    Now I can generate 2 continuis sine wave in labview and output them on the analog outputs of ELVIS.Ao-0 and A0-1
    but I dont know what to do for the third signal.the elvis board just has 2 analouge output and when I use  Ao-0 and A0-1 I cant use ELVIS function generator after that.so would u please help me on this problem.how can I output 3 contious sine wave in Elvis.I have attached my VI to this post
    Attachments:
    new.vi ‏38 KB

    Hi, I am also having some problem in generating two signals from two AO. Could you please tell me how to generate two different signals from two AO. I have attached vi which generate square wave from one AO 0. I need the inverted signal in AO 1. 
    Attachments:
    Pulse Width Modulation.vi ‏48 KB

Maybe you are looking for