Filtering signal to prevent flickering of the output.

Hello
I am using Labview 2010 and a usb 6008 DAQ to acquire two signals from  a 555 timer circuits with LDRs and  I am measuring them and comparing them. The idea is that when one of them is greater than the other I will generate an output. My problem is that even though I have allowed for +- 10 tolerence , I am still getting a flickering output once the treshold has been exceeded. Can someone give me any ideas because maybe I am approaching this completely the wrong way. The VI I have attached is using a simulate signal tool to represent my input signal.
Bye
Attachments:
Simulation Circuit for Testing Purposes Sensor Circuit.vi ‏124 KB

Hello Darren,
Is there any reason you haven't considered SoftMotion for your application? As far as exactly what you are trying to achieve with the timers Im still a bit lost as to what the problem is? What behavior are you seeing that is unexpected? So from what I gather is that you are measuring two frequencies and trying to establish which one is greater? I have written a VI to show you a simple yet effective way of doing just that. I have modeled it appropriately for the up and coming red nose day. Please see attached code. Enjoy!
Regards
Andrew George @ NI UK
Attachments:
Frequency Compare.vi ‏95 KB

Similar Messages

  • Why is it that when I saved the waveform of my acquired signal into a wav file, the output waveform of my saved file turn out to be different from my input signal?

    Hi all,
    I am currently doing a heart sound analyzer project. I acquired signal using NI USB 6008 continuosly. My program is able to saved the acquired signal into a wave file. But when I browse open the saved file, the output waveform did not look the same as the acquired input signal and also the sound of the heartbeat captured cannot be heard from the loud speaker though I have saved the file as a wav file. I am not sure if the method i use to save the acquired data as a wav file is correct.  I have attach the print screen of the differences of the output I have notice and the program I have created. I would be glad if anyone here is able to troubleshoot my program.
    Thanks. 
    Attachments:
    heart sound analyzer.zip ‏257 KB

    Hi Brett Burger,
    Thanks for your reply. For your information, I have set the sampling rate as 10000 as for the sound format, I have set the bits per sample as 16 bit, the rate as 11025 and the sound quality as mono. I tried using your method by changing the sampling rate as 8K but still my program encounter the same problem.
    I wish to also create a button that is able to generate a preformatted report that contains VI documentation, data the VI returns, and report properties, such as the author, company, and number of pages only when I click on the button.  I have created this in my program, but I am not sure why is it not working. Can you help troubleshoot my program. Or do you have any samples to provide me. Hope to hear from you soon.
    Many thanks.
    Regards,
    min
    Attachments:
    Heart Sounds1.vi ‏971 KB

  • I have a DAQ Assistant configured to read multiple channels at the same time. When I wire a graph indicator to the output, I see all of my signals jumbled together. How do I split them up into seperate signals?

    I have a DAQ Assistant configured to read 2 channels at the same
    time. When I wire a graph indicator to the output, I see the 2
    signals jumbled together. How do I split them up into seperate signals?
    When I wire any type of indicator it is showing just one output of a single channel.
    I want 2 indicators showing 2 different signals as expected from the 2 channels configured. How to do this?
    I have tried using split signal but it end up showing only 1 output from 1 signal in both the indicators.
    thanks in advance.
    Solved!
    Go to Solution.

    Yes you are right. I tried that but I did not get the result.
    I just found the way. When we launch split signal, we should expand it (split signal icon) from above and not from below. It took me a while to figure out this. 
    thanks 

  • Generated Pulse waveform is distorted when I deliver the signal to the output port in the DAQmx

    Problem: Generated Pulse waveform is distorted when I deliver the signal to the output port in the DAQmx.
    Environment: Windows XP sp3 (32bit), Visual Studio 2010 sp1, NI-Measurement Studio 2010
    Device: NI - DAQmx PCI 6251
     Analog Input: 1.00MS/s multi-channel (aggregate)
     Analog Output: 2 Channel 2.00MS/s
    Reference Example: AO_ContGenVoltageWfm_IntClk / AI_ContAcqVoltageSamples_IntClk
    Generated Pulse:
    1) AO0 = Square Waveform /0-5V / 8KHz / 0.5㎲/sample / sample 50% Duty
    2) AO1 = Square Waveform /0-5V / 8KHz / 0.5㎲/sample / (Reverse Image)
    Description: I’d like to deliver the waveform stream satisfied with specified constraints to the 2 channel output port in the DAQmx. To verify accuracy of the generated waveform, I did an electrical wiring from the Analog output channel (2 channels) to the Analog Input channel (2 channels) in DAQmx. As a result of this experiment, I could get a result which has signal distortion. Since the waveform has to satisfy with both high frequency (8KHz) and very short moment interval time (△t = 0.5㎲/sample) between samples, I cannot handle some parameters of the function in the referenced VC++ example. Following formulas shows an approach to deliver the generate pulse waveform to output port satisfied with constraints.
    Analog Output Channel
     Frequency = 8,000 cycles/sec (constraint)
     Sample per Buffer = 2,000,000 = 2*106 samples/buffer
     Cycles per Buffer = 80,000 cycles/buffer
     Sample per Channel = 1,000,000 = 1*106 samples/channel
     Sample Rate  = Frequency * (Sample per Buffer / Cycle per Buffer)
                              = 8,000 * (2*106 / 80,000) = 2*106 samples / sec
     △t  = 1 sec / 2*106 samples / sec
               = 0.5 * 10-6 sec/sample (constraint)
     Buffer Cycle  = Sample Rate / Sample per Channel
                              = (2*106 samples / sec) / (1*106 samples/channel)
                              = 2 channel / sec
    Analog Input Channel
    Sample per Channel = 1,000,000 = 1*106 samples/channel
     Sample Rate  = 1 MS/s * (2 Channel) = 5 * 105 Samples / Sec
    Program Code
    AO_ContGenVoltageWfm_IntClk / AI_ContAcqVoltageSamples_IntClk (VC++ Example)
    Result: The proposed approach was implemented in the experiment environment (VS2010, MStudio2010). As shown in Figure 1, we could get the unsatisfied result. Although I intended to make a ‘square’ pulse wave, the result looks like ‘trapezoid’ pulse wave (Figure.1). However, there is other result which was undertaken with different parameter condition. It looks like the square shape not the trapezoid shape.
    Please let me know what the conditions make the problem of signal distortion. (AO0 = Green line / AO1 = Red line)
    [Figure. 1] Frequency 8000 Hz / Cycle per Buffer = 8000 Result
    [Figure. 2] Frequency 1000 Hz / Cycle per Buffer = 1000 Result
    Questions: Please let me know following questions.
    1) Is it possible to deliver the generated pulse wave satisfied with constraints (f= 8KHz), △t = 0.5㎲/sample) to the output port without distortion using PXI 6251?
    (Is it possible to solve the problem, if I use the LabView or MAX?)
    2) Are there some mistakes in the proposed approach? (H/W or S/W program)
    3) What is the meaning of the Cycle per Buffer?, It could effect to the result?

    Hi Brett Burger,
    Thanks for your reply. For your information, I have set the sampling rate as 10000 as for the sound format, I have set the bits per sample as 16 bit, the rate as 11025 and the sound quality as mono. I tried using your method by changing the sampling rate as 8K but still my program encounter the same problem.
    I wish to also create a button that is able to generate a preformatted report that contains VI documentation, data the VI returns, and report properties, such as the author, company, and number of pages only when I click on the button.  I have created this in my program, but I am not sure why is it not working. Can you help troubleshoot my program. Or do you have any samples to provide me. Hope to hear from you soon.
    Many thanks.
    Regards,
    min
    Attachments:
    Heart Sounds1.vi ‏971 KB

  • Prevent the Output Message when creating PO from inbound IDOC

    Hi SAP Gurus,
    In my project, I have to create PO from inbound IDOC (PORDCR) with a specific Document Type ('099').
    Requirement: These PO should not generate the output message while the others (Doc Type # '099') do.
    I have the Z fuction module which call BAPI_PO_CREATE for posting IDOC and it works fine.
    In the existing system, there are some set up that trigger the output message type for PO (output NEU) when using ME21 or ME22, as a result my PO created with output message.
    Can you please advise if there are some way (User Exit?) that prevent the output message in this scenario (specific PO Type) without touching the current Condition setup?
    I'm new in MM and really need help!
    Thanks,
    Elaine.

    Hi Vinod,
    I really appreciate your anwer. I'm going to explore this with my functional consultant.
    Just like to have more questions:
    1. Is it easier if we change the existing condition table instead of creating a new routine?
    2. There are two forms for routine 101 (FORM KOBEV_101 and FORM KOBED_101). Can you explain to me why we need 2 here for what purpose of each form.
    3. In the debug mode by using WE19 to post inbound IDOC, I change the SY-SUBRC = 4 and PO created without output message. Is it the right direction? Anything else I need to pay attention to?
    Thanks again.
    Regards,
    Elaine.

  • I am using the dynamic signal analyzer.vi but this vi has the output as single precision. How can I change this to DBL precision?

    I am using the dynamic signal analyzer.vi but this vi has the output as single precision. How can I change this to DBL precision? If I change the representation from single to double in the AI buffer read.vi labview returns ilegal operation and crash. I have labview 5.1 on windows 95 and one AT-MIO16XE50 DAQ board.
    Thanks in advance
    Ricardo.

    Probably by changing the data type that lvdaq.dll expects to write to is causing the crash. I can't test this since I have only 6.1 installed now. In any case, since the daq card is only 16 bits, the single precision is probably adequate for AI Buffer Read. If you do need the greater precision later on, you should be able to change representation in any one of the upper level VIs.

  • How to select signals from the output of a DAQ assistant

    Hi! 
    I am a new user of Labview 8.5 and I am working with a USB-6210. I have two different instruments connected to the same USB device, half of the channels are being used for pressure transducers where I only need to reed and save the data, while the other half are associated to TCD detectors where I need to perform some analysis to the signal to obtain and save the data. I am in the first step of building the block diagram, After I define each of the signals which its corresponding channel using the DAQ assistant, I need to select and separate the signals coming from the pressure transducers from those coming from the TCD detectors, before I can continue drawing the block diagram. I am trying to use the Select Signal function but I am not sure how to do this. Can anyone please let me know at least in which manual can I find a good explanation? I have been reading the Getting Started and the User Manual for LabView but they have not been very useful so far.
    Thanks!
    Solved!
    Go to Solution.

    Wire the Select Signals express VI to your DAQ Assistant and run the VI once (this allows the signal names to propegate).  Then when you open the Select Signals configuration you'll be able to pick out the channels you want by name instead of just "Signal 1" etc.
    It sounds like you'll probably want two Select Signal Express VIs, one for the TCD detectors and one for the pressure transducers.  Something like this:
    If you right click on the VI and select Help or click on the Help button within the configuration dialog you will bring up the LabVIEW help page for this (or any other) VI.  Are you looking for some other information that isn't documented in the help file?
    Hope this helps,
    Simon

  • How do I prevent the output of my JSP or Servlet pages from being cached by

    I 've tried this code, but it cannot run.
    <%
    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
    response.setHeader("Pragma","no-cache"); //HTTP 1.0
    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
    %>
    and
    <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
    Anybody can help me?
    thanks

    Hi,
    Since different browsers have different formats, this header settings may fetch your need....
    <%
    /** stop browser from caching */
    response.setHeader("Cache-Control","no-cache,post-check=0,pre-check=0,no-cache");
    response.setHeader("Pragma","no-cache");
    response.setHeader("Expires","Thu,01Dec199416:00:00GMT");
    %>
    Regards
    Collins

  • How can I select the time values of a signal and connect them to the y-input of a divide command?

    Hi,
    I have an analog signal connected with a threshold peak detector. The counted peaks shall be divided by the total time of the recorded signal. My problem is, I don't know how to connect just the the x-values, i.e. the time component of the signal, to the divide command. I have no idea how to "split" the signal so that I don't have the whole signal but just the time in seconds as an output of the measured or filtered signal sub-VI, respectively.
    Does anyone have a hint?
    Thanks for your help,
    Philipp

    Hi Phillipp,
    do you mean you have a waveform and you want to get the components? In this case "Get Waveform Components" should work.
    Mike

  • Is it possible to limit the output of a multi-turn encoder to match a single turn?

    I am using a Heidenhain encoder with a Heidenhain EIB 741. The 741 takes the EnDat signals and converts them. I am using a LabView program from Heidenhain called Poll Positions. The outputs of the encoder are both Incremental and Absolute. The outputs keep counting after one revolution and I would like to return to 0. The program is using a 1 d array with quad 64 bit integer for the absolute value and a 1-d array of value 16 bit for the incremental values. I am trying to convert these to degrees. I have accomplished this except when it reaches 360 the count does not return to 0. Is there a way to make the position count return to 0 after the Bit count is complete?  Or is there a way to make the degrees return to 0? The degrees was output by taking the (Position/((2^26)/360)) which is Position/186413.51.
    This is my first big LabView project I hope this is enough information.
    Solved!
    Go to Solution.

    Hi msmith,
    You could try using a property node in a case structure to change the value. For instance, when the "360" case is activated, the property node inside the case sets the value of degrees back to 0.

  • How to redirect the output display on Ultra 5 box.

    Hello,
    Good day to you.
    I have issues with redirecting display output to my console server (which is configured with cyclades switch) on a newly installed solaris 10, Ultra 5 box.
    I could access the output display on the monitor when I connect it directly to the serial port. But I also have my parallel port connected to cyclades switch which is primarily being used for accessing multiple servers thro' one single console server.
    When I try to access my ultra 5 box thro' console server, the display not getting redirected over there..I did checked the port from cyclades switch front, it did work well with other machines.
    Looks like some work needs to be done at Ultra 5 box level so that the parallel port can send output signals to the respective port on cyclades switch and consequently to the console server.
    Any thoughts ??
    Thanks.

    Hi,
    Good day to you.
    Apologize for quoting "Parallel" port. It is a in-built 25pin serial connector placed next to regular 15 pin serial port.
    Just to make a point here, this 25 pin serial connector has an external converter attached with other side having RJ45 jack.
    CAT5 cable connected between switch port to this RJ45 jack.
    I did tested this converter with another machine and could able to access the display on my console server. So it seems to be the connectivity from serial port to switch port works fine.
    Adding to that, this ultra 5 box with the current connectivity set up was working fine until I rebuild this machine. I was very well accessing this box thro my console server. There was no changes done except rebuilding the operating system.
    I think some work needs to be done at the ultra 5 box level to get this 25pin serial connector to act.
    Thanks.

  • NOOB Question - Cannot seem to get the output in a text or CSV file - Please help!!

    I was able to put together a script which finds members of a certain AD group, filters down the users, and then calculates the number of days till a password reset is needed.  I am able to get on screen exactly what i am looking for, but cannot seem
    to figure out how to get the same data to a file.  What i am doing wrong?  two goals here:
    1.  Create a spreadsheet with a list of users whose password is about to expire.
    2.  Down the line automate an email to users whose password is about to expire. 
    Here is my code:
    ## Get List Of Users in Password Change Lockout that do not have an expired password or a password that never expires
    $Names = (Get-ADGroupMember -Identity "Password Change Lockout" -Recursive |`
    Get-ADUser -Properties * |`
    Where-Object {$_.PasswordNeverExpires -eq $False -and $_.PasswordExpired -eq $False} |`
    Sort-Object name |Select-Object -ExpandProperty SamAccountName)
    ## Get Password last Set values for all
    Foreach ($Name in $Names)
    $VAR1 = (Get-ADUserResultantPasswordPolicy -Identity $Name).MaxPasswordAge
    $VAR2 = (Get-ADUser $Name -Properties *).passwordlastset
    $VAR3 = (Get-ADUser $Name -Properties *).name
    $DTPC = (New-TimeSpan -Start (Get-Date) -End ($VAR2 + $VAR1) | Select-Object -ExpandProperty Days)
    Filter users to those who need to change thier password in 15 days.
    If ($DTPC -lt 15)
    No matter what i try between the {} after the If statement, I cannot get the output to a file.  However, if I use a Write-Output I get exactly what i looking for.  I feel like i am forgetting some basic concept and could really use some help.  Thanks.
    Matt 
    Matt Dillon

    Hi Matt,
    I generally create an empty array (something like $out = @()) at the top of the script and then use $out += $desiredOutput inside of the foreach loop.
    Outside of the loop, you can then pipe $out to Out-File or Export-Csv, depending on your needs.
    Don't retire TechNet! -
    (Don't give up yet - 12,830+ strong and growing)

  • How do I reduce the time from the detection of a input threshold to changing the output?

    Hi,
    I am using LabWindows 8.1 and a PXI-4461 with Vista (home) on a 2.81 GHz Dual Core Processor.  I wrote code to do the following:
    (1) output a ramp, input a signal concurrently (precise sychronization of these two is not important at this point)
    (2) if the input signal rises above 0.5 V, hold the output constant for 2 seconds, while continuing the input
    (3) finish the ramp
    More info: I do a continuous sampling, with 4 samples per Write, to do the output.  The input is read and analyzed with RegisterEveryNSamples (where N = 4).  The communication between the tasks is through a global variable "trap," which is set to 1 when threshold is reached.  I achieve holding the output constant by stopping the task (maintain existing value = true), and then restarting after the pause.  At 40kHz and 4 samples per Write, the limit imposed by the discrete data blocks would be  0.1 msec, but in fact I am getting delays of about 2.5 msec.  My write buffer is 120x4 samples, just so that there is space for me to write.  I do need to save the input data after the
    acquisition, preferably the whole sweep, but most importantly the data
    while the output is held constant.  
    So my questions are:
    (a) Does it really take 2 ms to stop a task? When I put in "Timer()"  functions as below, I get a difference of 0.002, which is of course limited to the resolution of the Timer() function. Returning from a function (the EveryN callback) should not take that long, right?
    (b) Can you suggest any better ways of doing this?
    /*****begin excerpt *****/
    DAQmxErrChk (DAQmxRegisterEveryNSamplesEvent(inputTaskHandle,DAQmx_Val_Acquired_Into_Buffer,4 ,0,EveryNCallback,NULL));
    DAQmxErrChk (DAQmxWriteAnalogF64(outputTaskHandle,480,0,10.0,DAQmx_Val_GroupByChannel,outData,&written, NULL));
    DAQmxErrChk (DAQmxStartTask(inputTaskHandle));
    DAQmxErrChk (DAQmxStartTask(outputTaskHandle));
        for (count =120;count<10000; count++)
            if (trap==0) {
                DAQmxErrChk (DAQmxWriteAnalogF64(gTaskHandle,4,0,10.0,DAQmx_Val_GroupByChannel,&outData[count*sampsToWrite],&written,NULL));
            } else {
                    DAQmxErrChk (DAQmxStopTask(outputTaskHandle));
                    time2 = Timer();
                    done = 1;
                    ProcessDrawEvents();
                    ProcessSystemEvents();
                    Delay (2.0);
                    trap = 0;
                    count++;
                    DAQmxErrChk (DAQmxWriteAnalogF64(outputTaskHandle,480,0,10.0,DAQmx_Val_GroupByChannel,&outData[count*4],&written,NULL));
                    count = count+119;
                    DAQmxErrChk (DAQmxStartTask(outputTaskHandle));
    /*****end excerpt *****/
    int32 CVICALLBACK EveryNCallback(TaskHandle taskHandle, int32 everyNsamplesEventType, uInt32 nSamples,void *callbackData)
        DAQmxErrChk (DAQmxReadAnalogF64(taskHandle,nSamples,10.0,DAQmx_Val_GroupByScanNumber,&readData[inCount*nSamples],nSamples,&numRead,NULL));
        if (trap == 0 && done == 0) {
            for (i=0; i<nSamples; i++) {
                if (readData[inCount*nSamples+i] > 0.5) {
                    trap = 1;
                    time1 = Timer();
                    break;
        } else done = 1;
        inCount++;
    Error:
        return 0;
    I would appreciate any help or advice! Thanks.  (Sorry about oddities in the code.)

    There are a number of applictations like Carbonite, Aperture, Entourage, VM Fusion, Parellels, etc that treat any change to the application as a complete change to application's database.
    So, if you make one small email change in Entourage for example, the entire database is backed up on the next pass. As you might imagine, this can fill up a Time Capsule very quickly.
    Suggest that you download a utility like BackupLoupe to find out exactly what is being backed up on each pass. Then you can exclude that item from backups if you wish.
    http://soma-zone.com/BackupLoupe/

  • Can we use the output of a report as in input for the other report?

    Dear All,
    I would like to know if we have any option in OBIEE where in we can save the output of a report and use it as a filter for another report?
    My scenario is like:
    1) I have a report on ORDERS which gave me 250 orders.
    2) I want to have a report on SHIPMENT table for these 250 Orders.
    Can we save the result of report 1 as a filter and use it in 2nd report?
    please advise.
    Thanks,
    Suma

    Hi,
    By using advanced tab in filters like filter based on another request we can achieve this
    Regards
    Naresh

  • How can I connect the output of a force transducer unit(BNC cable) to the PCI-6036E DAQ card via the SCB-68 block connector?

    I m using the 404A force transducer unit by Aurora Scientific and i want to connect the (converted to Volt) output, which is a BNC cable, to the PCI-6036E DAQ card via the SCB-68 connector block, facing difficulties in choosing the correct input mode for my signal(couldn t clear this using the manual), setting the switches and which channel shall i use in the block connector in order to configure ot with LABVIEW

    Hi MSc Student,
    Connecting your transducer to the 6036E card via the SCB-68 connector block should be pretty straight forward. You have 2 choices of input mode, Referenced Single Ended (RSE) this is where you will connect the screen of the BNC cable to a ground connection for the DAQ card in the SCB-68 and the other to any analogue input channel . These are listed in the device pinouts in the help section of MAX, under the 68 pin devices section. The terminal block numbers correspond to the DAQ card's pin numbers. Another method, which avoids ground loop problems would be to use the Differential connection and connect the signal and ground connections of the BNC cable to a differential analogue input, these are listed in the 6036E manual and in th
    e MAX help section again. the disadvantage to using this method is 2 analogue input channels are used and you must use the lowest 8 analogue input channels for differential inputs.
    The switch settings that you need can be found in the manual for the SCB-68 in table 2-1, the manual can be found here : http://www.ni.com/pdf/manuals/320745b.pdf
    The switches are for power to extra signal conditioning and the cold junction compensation for thermocouples which in your case you do not need so set the switches to the positions in the first box ie Direct feedthrough, with temperature sensor disabled and accessory power disabled. The channel you use should not matter the only ting to remember will be that if you use differential mode measurement that you will be connecting the signals to AI(n) and AI(n+8) so differential input 0 is across the connectors for AI0 and AI(8). The channel numbers corespond to the analogue input number for the card.
    I hope this information helps,
    Chris M
    App
    lications Engineer, National Instruments

Maybe you are looking for

  • How to set up immediate calculation when using fields

    Hello, forgive me for the apparently dull question (I assume it is so as I was unable to find answer for it on the forum). I am making a fillable PDF form with Acrobat Pro 9 and I have this page with simple invoice that looks like this: item_price_1

  • Call report or transaction from PA20/PA30

    Hello, what is the best way to call a report or a transaction out of PA20 or PA30? Our idea is to enhance the menu but we don't want to do this via a modification. Exit or BADI would be much more elegant. So the scenario is: open PA20 or PA30 and sel

  • Time Capsule "not getting IP Address"

    I am a comcast internet customer and I have the RCA cable modem. My network has been up and running fine on a Linksys54g for a year or two. I disconnected it today, and I plugged in my time capsule (exactly following the instructions. My powerbook pr

  • Can i add new language into my L1520?

    Question is simple, can i add a new language into my L1520 ? I bought it in Russia, and in options menu i just found several languages like spanish,english,french,Azerbaizhanish,even if chanise. But i need Turkish language. Can i download it somehow?

  • Getting error when installing CR XI R2 Service Pack 5

    I am getting an error when installing CR XI R2 SP5 (cabinet file m148.cab missing or corrupt). I am downloading it from the Downloads section of the SAP Community Network. Does anyone know where I can get another copy of this service pack?