How to equalize an analog output by a known frequency response?

I'd like the analog output of my system have a flat response. What I'm going to do is first measure the stimulus signal, then using a filter to compensate the frequency response to make the following output signal flat. The difficulty is how to build a filter according to the frequency response. I know it's easy to do by using digital filter design of signal processing toolkit. But I need to do it by LabVIEW and the response is changed frequently. Any suggestions?
Bill

The filter does the signal "adjusting." Filters are typically characterized in the frequency domain, but the work on the signal fed them, which usually occurs sequentially in time. The lookup table is just to select the appropriate filter so you do not have to do a lot of calculations at run time. As an example, suppose you have just treble and bass and only one cut and one boost setting for each. You measure the stimulus and find the bass is too high and the treble too low. You select the bass cut and the treble boost filters for this run. If this is expanded to octave (or third octave) filters and 16 gain/attenuation settings in each band the lookup table approach saves time and may also provide a compact means of recording the equalization settings with your test data (rather than filter coefficients which do not actually indicate the response without characterizing the filter).
Lynn

Similar Messages

  • How can i synchronize analog output and analog input timings to generate and measure voltage at the same time.

    how can i synchronize analog output and analog input timings to generate and measure voltage at the same time.

    Read this Tutorial
    http://zone.ni.com/devzone/cda/tut/p/id/3615#toc3
    And also refer to this link where You have repeated this question.
    PS: Please stick to one thread. That way, its easier to keep track of your query and answers

  • How can I limit Analog Output to positive only?

    Hi everyone,
    I'm using PXI 7350 and UMI 7774 for controlling a DC brushless motor,
    the problem is that the drive for the motor only supports positive voltage input ( to adjust motor's velocity).
    So how can I limit the output voltage to positive ?
     I'm new to labview and I have been confused by this problem for a long time , so it will be geat if there's any example vi of that !
    Thanks for any help !

    What are you using for feedback?  If you are only moving in one direction, then you don't have to worry about limiting the analog to positive, the controller will take care of that.

  • How to switch analog output between two waveform frequencie​s

    Hello,
    I'm using a fairly simple VI to generate a square wave at our analog output board.  I have the square wave controls in one panel of a sequence structure, and a "release" function in the other panel of the sequence. Currently the VI is programmed to switch from the original square wave to -10V when the Boolean control is switched.
    What I'd like to do now is to modify the VI so that I can swtich between a square wave of a given frequency, say 100 kHz, to a square wave of a different frequency, say 10 kHz, or to DC -10V. But I'd like to be able to vary each frequency and amplitude independently.
    Could anyone give me some programming pointers?
    Thanks,
    Michelle

    Thanks to the three of you for the suggestions. I started trying a few of them, and then realized that what I had already built will work pretty well to update the frequency. I didn't realize that it would update the waveform in "run" mode -- I thought it would only do that in "run continuously" -- so I've found that I can change the frequency of the waveform by doing that. This doesn't allow me to change the frequency and the amplitude simultaneously, but I'm not sure yet whether or not I will need to do that -- I so will probably go ahead with the experiments I need to do with this set-up, then modify it if I find that I need to control both frequency and amplitude simultaneously.
    Thanks for your help!
    M.

  • How to send an analog output signal on same axis running a stepping motor umi 7764/ PCI7334

    I am running a single axis stepping motor (which is working fine) but
    for the application I need to be able to turn on and off a 5 volt
    laser.  It notes in the manual for the UMI 7764  that the the
    analog output can be used as a general-purpose voltage output.  I
    would like to use it as such, but can't figure out what VI's actually
    send messages to the board to output a 5 Volt signal.  
    Ideally I would use the analog output on the same axis that the
    stepping motor is on, but if need be I could use one of the other axis
    if this isn't possible (ie. it may not be possible to step and send
    analog voltage output on same axis at same time).  I have been
    looking at the configuring DAQ and ADC stuff, but can't seem to make
    sense if these actually control the analog output channel.  I
    think they just control the Analog input channels, but maybe I am
    wrong. 
    Any help would be greatly appreciated
    Andre

    Hi,
    It is possible to send analog output out of the same same DAC channel in which your stepper is connected, if you configure the stepper as open loop in MAX. I've tried it. This way you have the stepper output, analog output and encoder input acting independently. So you can use these seperately for different purposes, such as using the analog output for constant speed motors where speed or position control is not of much importance, encoder for positioning some other axes and stepper output for stepper control. With good programming skills, the NI motion controllers can thus be used for the most complex configurations. Great work NI !!! Nothing is impossible.
    Regards,
    Giridhar Rajan
    Automation Engineer, Design
    Cruiser Controls
    Mumbai, India

  • How to make stop analog outputting

    Hi nice guys,
    I'm working on an analog voltage simulation, some signals are longer than half hour, maybe one hour. The function I want to do is, when I click the stop button, the analog output can be stopped immediately. I have no exp. and no idea to make it out.
    Thank u in anvance.
    best regards
    Dai

    Sounds like you are looking for something like this
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines
    Attachments:
    Stop Task.png ‏18 KB

  • 2 analog output channels with different frequencies

    Hi,
    hope that somebody can help me:
    I created two physical tasks, analog output channels.
    I should give signals (triangle signals) to a scanner. The problem ist that I need these triangle signals with two different frequencies.
    I can create the signal with each of the task, but not together. Can I solve this problem somehow?
    Ah, and of course the 2 tasks should start together...
    Thanks for your help!!
    Telly

    You didn't mention the type of device you're using, so I'll assume it's a standard MIO. A typical MIO only has one AO timing engine, so you'll have to create one task for both channels and use a single update rate for the task. You will have to make the output frequencies different by passing different data for both channels.
    For example, let's say your update rate is 1KHz. The data for channel 0 is 1000 data points of a single cycle of a triangle wave. The data for channel 1 is 1000 data point of two cycles of a triangle wave. When you run the task, you will get a 1Hz triangle wave on channel 0 and a 2Hz triangle wave on channel 1.
    Good luck,
    Joe

  • How to process the analog output of hall-effec​t sensors to determine gear RPM.

    Hi,
    I am using a hall effect sensor to determine the rpm of my shaft. Attached to my shaft is a spur gear, and the sensor detects when the gear teeth passes it.
    The attached pdf shows the "idle" state when there is no ferrous target detected.  And when a ferrous target (my gear tooth) is detected, a horizontal like is displayed.
    I am using the NI-9229 device connecting my hall effect sensor to my PC.
    I would like to know how I can process this signal so as to determine the rpm of my shaft in real-time.
    Thanks and appreciate the assistance.
    Regards,
    ST
    Attachments:
    Hall_effect_sensing.pdf ‏218 KB

    Hi, check this one out:
    https://decibel.ni.com/content/thread/13337
    Br,
    /Roger

  • How to avoid delay during analog output generation by changing its frequency?

    Windows XP
    LabVIEW 7.1
    PCI-6036E + BNC-2120
    Hi,
    I am going to create a vi to generate an engine speed sensor signal (a simple square wave with specific missed pulses, in my case 58 pulses “teeth” and 2 missed pulses “missed teeth”) as an analog output but in addition give me the opportunity to control parameters for example frequency online to simulate the engine speed changes during running that vi. For this purpose I have started with “Continuous Generation.vi” which is available in NI Example Finder under the following path:
    Hardware Input and Output > Traditional DAQ > Analog Output > Continuous Generation.vi
    Then I modified it towards above mentioned goal, all related vi s are attached. The main vi is: "Motor Signal Generator_1.12.vi"
    At the first try it looks that it works properly but when have a look on that more accurately with Oscilloscope (fortunately I have a good one: Agilent 54621A – 60 MHz, 200 Ms/s) obviously there is a gap (delay or Jitter) whenever I change the engine speed. It is also attached in Signal generation_problem report.doc file.
    Note: Small gaps are OK and related to predefined missed teeth but the big one is happened during changing engine speed.
    As far as I understand it is related to the time which case structure in AO C-GEN sub-vi needs for AO reconfiguration each time after changing the engine speed (update rate). How can I get rid of this delay or gap during signal generation and generating completely continuous signal?
    I have to mention that obviously I changed the frequency by changing the update rate. The other possibility is to change the number of updates in one period (refer to "generate arb frequency.vi" in NI site: http://sine.ni.com/apps/we/niepd_web_display.display_epd4?p_guid=B45EACE3E48F56A4E034080020E74861) which resulted in no delay however then I can not change the frequency continuously but step by step (for example jump from 5Khz to 2.5KHz immediately) and this can not pass to my application.
    Any hint is appreciated.
    regards
    Attachments:
    Signal_generation_NIsupport.zip ‏81 KB

    Hi Roozbeh,
    The following example will allow you to vary the pulse train frequency during run time.
    Thanks,
    Lesley Y.
    Attachments:
    GenDigPulseTrain-ChangingSpecs.vi ‏75 KB

  • How to trigger a TTL output with an analog input

    Hello,
    I have an apparatus for measuring the flame speed of various hydrocarbon/air mixtures.  The chamber uses central ignition as the means for igniting the mixture.  My goal is to film the ignition process with a high speed Phantom video camera.  I control the ignition with an analog output signal from a SCC-68 DAQ.  I would like to trigger the camera with the same signal that triggers the ignition sequence.  The camera is triggered with one TTL pulse so ideally I would connect the output analog voltage signal to an input analog voltage port that would be used to trigger a counter output that generates one pulse.
    I have a sample VI that triggers a digital pulse each time the analog trigger level is met and it works for what I am trying to do but I do not understand how the two channels are connected. I also can't figure out how to make the VI end after just one pulse.  In the VI the digital counter is supposedly triggered using the /Dev1/ai/StartTrigger slot on the DAQ but nothing is connected to this slot.
    I need to first figure out how to make the output_pulses_on_sine_wave.vi terminate after a single pulse is generated. Then I can try to incorporate it into the VI that I use to control the ignition and measure the temperature and pressure once the mixture is ignited.
    John
    Attachments:
    output_pulses_on_sine_wave.vi ‏27 KB

    I am using the USB-6259, sorry for the confusion.  I would be nice if I could trigger with an analog signal to the ignition system but it is controlled with a high voltage relay that operates when 12 volts are supplied to it. It really isn't a trigger as much as powering on the high voltage relay. To control it, I have a 12 V supply line that is switched closed using a SCC-RLY module.  Could I somehow connect the 12 V supply to one of the buses and use a digital trigger to supply the 12V on command to the high voltage relay?
    Thanks for the quick response. 

  • How do I get an analog output signal from my PCI-MIO-16E-4 card?

    I need an analog output from 0-10 V to control the mass range on a mass spectrometer. Do I use the DAC0out channel to do this? The manual only talks about analog out (ao) channels. Is this the same as DAC0out and DAC1out? How do I set up the DAQ assistant for this process? I do not need a waveform, only a constant signal.

    Yes indeeded. The DAC0out and DAC1out are the analog output channels (ao0 and ao1).
    Simply follow the examples that ship with LabVIEW. You can also easily create code with DAQ assistant.

  • How to building a multi-channels analog output task in visual c++ 6.0 (without Measurement Studio)?

    Hello!
     I have a PCI 6251 card, and using DAQmx C function to generate a wavwform. (single channel ).
    But, how to creating a multi-channels analog output task, and had a different frequence in each channels?
    Thanks.

    This is getting to be a common question!
    The answer is, you can't.
    If the rates have common factors, you can use a higher overall rate. The slower waveform will simply have extra points in it to make up for the higher update rate.
    John Weeks
    WaveMetrics, Inc.
    Phone (503) 620-3001
    Fax (503) 620-6754
    www.wavemetrics.com

  • How can I use two analog output channels simultaneously?

    I am using PCI6110 DAQ card. I want to run two separate VIs on one computer. Each VI output a waveform to one analog output channel. How can I do this simultaneously without interfering each other?
    Thanks

    Hi Stephen,
    This can NOT be done with two seperate VI's.
    The issue is in the hardware/driver.
    Your hardware has a clock that controls how fast updates to the AO occur. That clock can only have one value at a time. I will let your contemplate the complications that come up with two different clock settings being active at the same time (see below).
    So how do you work around this complication?
    You will have to develop a single VI that OWNs both output channels. That VI will have to accept start,stop,configure, etc commands from the two clients (what you will have to convert your existing VI's into). If you decide to place a restriction on the services you provide to the clients along the line of "only one sample rate at a time" you will be making your li
    fe much easier.
    If I was contracted by a customer to do what you have asked, I would try to combine the two existing VI's into one or simply buy a second 6110 and avoid all of the hassles. Both of these approaches would end up saving the customer money in the long run while freeing them of any restrictions that where established in order to develop the "server".
    I hope this helps,
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • How to change the update rate of an Analog output in a loop

    I have to generate a ramp at a decreasing frequency. I use a shift register in a "for" loop to decrease the rate of the analog output. Unfortunately, the loop or the analog output initialisation take a too long time delay..
    How can I solve this problem?
    Any help is greatly appreciated
    Thank you

    Hello;
    I'm attaching an example VI that shows how to change the output rate on the fly.
    Hope this helps.
    Filipe
    Applications Engineer
    National Instruments
    Attachments:
    aochangeonthefly.zip ‏47 KB

  • How to reset buffer pointer for analog output generation?

    I am doing a finite analog output generation on a USB-6216
    Sequence of events:
    DAQmx Create Task
    DAQmx Timing (finite samples, 1000Hz)
    Use DAQmx timing property SampQuantamples per channel to set buffer size
    Write buffer with DAQmx Write
    Repeat
      DAQmx Start Task
      DAQmx Wait until done
      DAQmx Stop Task
    Until finished
    DAQmx Clear Task
    I get a full waveform output on the first iteration of the loop. On subsequent iterations I get only a small section of the waveform, but no error. It seems that it is regenerating the waveform, because when I switch off regeneration I get an error at Start Task, but before it can regenerate all the data Wait Until Done.vi decides that the generation is done and exits, stopping the generation.
    I have done this with a PCI device and it works fine; every call to Start Task generates the whole waveform again.
    OK, so it looks like after every waveform generation completes I need to reset the pointer to the start of the buffer, so that the Wait Until Done vi does not think the generation is done. Or - maybe there is a way to reset the "Generation Done" state?
    I'm sure there's an easy way to do this....?

    Hi CDancer,
    Many thanks for contacting National Instruments. If I can start by giving some general advice, it would be well worth posting your actual VI. This helps others on this forum in helping you with your application. 
    From the sounds of things, you want to do continuous analog output generation. I have had a look at the examples that come with LabVIEW and I think you should look at the one below.
    I would have a look at some of the DAQmx examples that come installed with LabVIEW. The following example would be particularly relevant I feel
    Cont  Gen Voltage Wfm-Int Clk-non Regeneration.vi 
    Please let me know how you get on.
    Many thanks,
    Andrew McLennan
    Applications Engineer
    National Instruments

Maybe you are looking for