Search the Community

Showing results for tags 'scope'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • News
    • New Users Introduction
    • Announcements
  • Digilent Technical Forums
    • FPGA
    • Digilent Microcontroller Boards
    • Non-Digilent Microcontrollers
    • Add-on Boards
    • Scopes & Instruments
    • LabVIEW
    • FRC
    • Other
  • General Discussion
    • Project Vault
    • Learn
    • Suggestions & Feedback
    • Buy, Sell, Trade
    • Sales Questions
    • Off Topic
    • Educators
    • Technical Based Off-Topic Discussions

Calendars

  • Community Calendar

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Found 23 results

  1. Is it possible to decode scope data using one of the "protocols"? I often need to analyze scope data as inverted UART data (e.g an RS-232 async serial signal).
  2. renesas_an1560_making_noise_measurements_pgs_1-3.pdfI have a noise test setup that is measuring the en noise of jfets and is gaining it by 1000x to the AD2. What tools exist in the AD2 - likely either scope with FFT or the SA where I can get reported the rms voltage value over frequency and the number of samples taken for the RMS. I don't want pk-pk as it requires more work and samples to be meaningful to the analog circuit designer - me. Please provide a best practice method as I am struggling at this time. An alternate can be to move to another piece of test equipment if this isn't an intended feature of the AD2. Thanks, Tim agilent_nz_5989-9087EN.pdf
  3. Hi, I'm working on a WaveForms script which would be able to generate chart with the frequency profile of a liquid. For this, I need to use a Wavegen and a Scope: first I need to set the generator to a certain frequency and then I'd like to check the power of that signal on the scope. Between the probes of the generator and the scope there will be the liquid I would like to test. I created a basic script to step from 1 Hz to 150 Hz, check that signal with the scope, repeat this loop 5 times, and calculate the min, max and average values at each frequency. Although the script works, I have a few questions: * I couldn't find any documentation about the Scope.Channelx.fftmagnitude and fftfrequency arrays. Where should I look for them? Are there any other properties related to the FFT configuration? * Is there a way to set the number of BINs and samples of the scope's FFT? * Can I somehow use the Goertzel algorithm instead of FFT? (The Görtzel algorithm is designed to tell us the power of a signal at one predefined frequency. https://en.wikipedia.org/wiki/Goertzel_algorithm) I would need this to get the power for the exact Hz value I define, and not the closest one I have from the FFT like I do it now. * Is there a way to change the color/style of the charts? Here is the script itself, but bear in mind that it is just the very first version const hzmax = 150; // the maximum frequency to measure const csamples = 5; // the number of samples to measure for each frequency const cdatapoints = 150; // chart X-axis resolution (currently: 1 datapoint / 1 Hz) var datapoints = new Array(4); // datapoint array datapoints[0] = new Array(cdatapoints); // max datapoints[1] = new Array(cdatapoints); // avg datapoints[2] = new Array(cdatapoints); // min datapoints[3] = new Array(cdatapoints * csamples); // raw data // clear the raw data array for(var j = 0; j < cdatapoints * csamples; j++) { datapoints[3][j] = 0; } // generate the freqeuncies to measure var frequencies = new Array(cdatapoints); for(var j = 0; j < cdatapoints; j++) { frequencies[j] = j+1; } { // configure plot plot1.X.Units.text = "Hz"; plot1.X.Offset.value = -hzmax/2 plot1.X.Range.value = hzmax; plot1.Y1.AutoScale.checked = false; plot1.Y2.AutoScale.checked = false; plot1.Y3.AutoScale.checked = false; plot1.Y4.AutoScale.checked = false; const vmax = 1.00; const vmin = 0.98; var offset = -(vmin + (vmax - vmin)/2); var range = (vmax - vmin); plot1.Y1.Offset.value = offset; plot1.Y2.Offset.value = offset; plot1.Y3.Offset.value = offset; plot1.Y4.Offset.value = offset; plot1.Y1.Range.value = range; plot1.Y2.Range.value = range; plot1.Y3.Range.value = range; plot1.Y4.Range.value = range; } { // configure wavegen Wavegen1.Channel1.Mode.text = "Simple"; Wavegen1.Channel1.Simple.Type.text = "Sine"; } { // configure scope Scope1.BufferSize.value = 1; Scope1.Buffer.value = 1; Scope1.Time.Mode.text = "Shift"; Scope1.Channel1.checked = true; Scope1.Channel2.checked = false; } Wavegen1.run(); for (var n=0; n<csamples; n++) { Scope1.Time.Samples.value = 1024; for (var i=0; i<hzmax; i++) { // change the frequency to the next one var frequency = frequencies[i]; Wavegen1.Channel1.Simple.Frequency.text = frequency; Scope1.Time.Rate.value = frequency * 256; print("Frequency: ",frequency," Hz | Running @ ",Scope1.Time.Rate.value," Hz | ", Scope1.Time.Samples.value," samples"); // take a single sample Scope1.single(); Scope1.wait(); // check out the FFT values var rgmag = Scope1.Channel1.fftmagnitude; var rghz = Scope1.Channel1.fftfrequency; var c = rgmag.length; var minHzDistance = frequency; // check all the FFT values, and get the one closest to our inspected frequency for(var j = 0; j < c; j++) { var hz = rghz[j] var hzDistance = frequency - hz; if (hzDistance < 0) { hzDistance = -hzDistance; } if (hzDistance <= minHzDistance) { minHzDistance = hzDistance; datapoints[3][i*csamples + n] = rgmag[j]; } } // calculate the min, max, avg values var rgmin = 1000.0; var rgavg = 0.0; var rgmax = 0.0; var validsamples = 0; for(var j = 0; j < csamples; j++) { currentsample = datapoints[3][i*csamples + j]; if (currentsample != 0) { if (currentsample < rgmin) { rgmin = currentsample; } if (currentsample > rgmax) { rgmax = currentsample; } rgavg += currentsample; validsamples++; } } rgavg /= validsamples; print("Min:",rgmin," V | Avg:",rgavg," V | Max:",rgmax," V | error: +/-",minHzDistance," Hz"); print(); // save the calculated data into their arrays datapoints[0][i] = rgmax; datapoints[1][i] = rgavg; datapoints[2][i] = rgmin; // check if the error if too high if (minHzDistance > 0.5) { Scope1.Time.Samples.value *= 2; i--; } // plot the most recent values on the chart plot1.Y1.data = datapoints[0]; // max plot1.Y2.data = datapoints[1]; // avg plot1.Y3.data = datapoints[2]; // min } }
  4. Hello, My name is Oliver and I am a research assistant at the Technische Universität Ilmenau in Germany. Among other things, I teach fundamentals of power electronics for mechatronics bachelor. Last year I started with a lab course where I use eleven Electronic Explorer Boards. It makes a lot of fun for me and the students. From time to time it comes to an error regarding the scope. After connecting the board, starting the WaveForms application and opening the scope all four channels show -20 V. They stick there regardless what is connected to them. Usually disconnecting the board and restarting the application resolves the problem. Today one of the boards started to become stubborn and the error occurred four out of five times. This behavior occurs both on Windows 7 and Windows 10. WaveForms shows no warnings or errors. Is this a known issue and what can I do about it? This behavior occurs both on Windows 7 and Windows 10. Thank you for your help. Best regards, Oliver
  5. Hi I am using analogIN record for acquisition of the signal. The problem I encountered is the fact that the acquired signal is randomly delayed in with repetition of the measurements. (see fig attached, where a same measurement is performed several time. Starting point always differ). Is there a particular reason for it and is there an elegant solution except the dirty one which compares delays of different measurements and performs the delay shift operation. Many thanks in advance. I used AnalogIn_Record.py from the example library and analog discovery 2. thanks & cheers, m
  6. Hello again! I'm trying to use the AD2 to act as both a signal source (wavegen1) and a measurement (scope1) device for the purpose of tracking conduction delay of the signal. Currently, I simply have the wavegen1 connected directly to scope1 with 3 cycles of a sine wave being put out. I am aware of the measure command to find the maximum on my scope1 but I was wondering if there was a way to find N (3 in my case) maximums AND find the corresponding times with respect to the timing of wavegen1? I plan to assume the timing of the wavegen1 is relatively accurate to my input frequency and can find the theoretical maximum thus having the initial time from which to subtract from my scope1 maximum times. Code thus far function doPing(){ print("Amplitude and Time Delay Recorded"); // User Inputs var Freq = 5e3; var Amp = 1.0; var N = 3; // WaveGen Settinngs Wavegen1.Synchronization.text = "Synchronized"; Wavegen1.States.Trigger.text = "None"; Wavegen1.States.Wait.value = 0; Wavegen1.States.Run.value = N/Freq; Wavegen1.States.Repeat.value = 1; Wavegen1.Channel1.Mode.text = "Simple"; Wavegen1.Channel1.Simple.Offset.value = 0.0; Wavegen1.Channel1.Simple.Amplitude.value = Amp; Wavegen1.Channel1.Simple.Frequency.value = Freq; // Scope Settings Scope1.Trigger.Trigger.text = "Repeated"; Scope1.Trigger.Type.text = "Auto"; Scope1.Trigger.Source.text = "Wavegen 1"; Scope1.Trigger.Condition.Text = "Rising"; Scope1.Trigger.Level.value = Amp/2; // Start instruments Scope1.run(); wait(0.1); Wavegen1.run(); // Measure var maximum = Scope1.Channel1.measure("Maximum"); print(N+" Max: "+maximum+" V"); //Want to do for 1:N and get time and amplitude with relation to time zero being the zero of the wavegen //Close out instruments Scope1.stop(); Wavegen1.stop(); } if(!('Wavegen1' in this) || !('Scope1' in this)) { throw("Please open a Scope and a Wavegen instrument"); } doPing();
  7. Hello, I have found that the Analog Discovery 2 scope has input sensitivity scales between 500uV to 5V/div. What is the specification of the scope included in the Electronics Explorer board? Thanks Paul
  8. Hi, I am trying to capture a periodic negative pulse which duration is less than 10 us. If I set trigger to pulse, condition to negative and Lcondition to more than 5 us, the trigger works as expected and a negative pulse of approx 5.5 us is captured. However, when I set the Lcondition to less than 10 us (5.5 us is obviously less than 10 us) it won't trigger.
  9. I am using the Analog Discovery 2, and the latest version of WaveForms, 3.7.5, on Mac OS 10.13.3. I find that triggering the Scope on Channel 1 or Channel 2 works fine, but trying to trigger on either Wavegen channel does not give me any triggers. The same is true when trying to trigger off a pattern. The interface seems quite intuitive, but I must be missing something because I cannot get the wave form generator and the scope to synchronize, unless I trigger normally on one of the scope channels. Is there some documentation on how to do this? Thanks!
  10. Could someone please tell me whether it is normal for a 4.5Vpp signal to show on the AD2 scope (with daughter board and real probe) as a 4.0Vpp signal when at 2V/div? If not, any advice for troubleshooting? Additional information: The ground clip is grounded properly. It doesn't change the signal when I connect the ground wire to my circuit ground as well. 20Vpp shows as 17.5Vpp at 5V/div.
  11. I'm currently trying to synchronize analog pulses on both AWGs with digital pulses, and simultaneously run both analog scopes and the digital scope. I am trying to trigger all outputs and all scope acquisitions to happen simultaneously with a single PC-Trigger source using the SDK. First question: Why isn't there an AnalogInTriggerSlopeSet function? (You can set the TriggerSlope to rising edge for AnalogOut, DigitalOut, and DigitalIn). Without an AnalogInTriggerSlopeSet function, how do you set the AnalogInTrigger to respond to the same signal as the other three? Second Question: What prompts the change in Analog/DigitalInStatus from 'prefill' to 'armed' or 'done'? In the Acquisition code in the SDK, it looks like the status changes when the buffer fills? In my code below, why isn't it progressing to 2=Done to break out of the loop? It looks like it is getting stuck waiting for the trigger (which already happened). #digital pulse control setup self.dwf.FDwfDigitalOutEnableSet(hdwf, c_int(0), c_int(1)) # enable dIO pin 0 self.dwf.FDwfDigitalOutDividerSet(hdwf, c_int(0), c_int(int(hzSys.value/(100*self.qRate)))) # divider=internal clock/ (100counts*frequency) self.dwf.FDwfDigitalOutCounterSet(hdwf, c_int(0), c_int(100-self.qDuty), c_int(self.qDuty)) # set counts low, counts high from duty cycle print "configured digital output" # analog pulse control setup self.dwf.FDwfAnalogOutNodeEnableSet(hdwf, c_int(0), AnalogOutNodeCarrier, c_int(True)) self.dwf.FDwfAnalogOutNodeEnableSet(hdwf, c_int(1), AnalogOutNodeCarrier, c_int(True)) # for second channel set master the first channel, slave channel is controlled by the master self.dwf.FDwfAnalogOutMasterSet(hdwf, c_int(1), c_int(0)); self.dwf.FDwfAnalogOutNodeFunctionSet(hdwf, c_int(-1), AnalogOutNodeCarrier, funcSquare) self.dwf.FDwfAnalogOutNodeFrequencySet(hdwf, c_int(-1), AnalogOutNodeCarrier, c_double(self.xRate)) self.dwf.FDwfAnalogOutNodeAmplitudeSet(hdwf, c_int(-1), AnalogOutNodeCarrier, c_double(0.5)) self.dwf.FDwfAnalogOutOffsetSet(hdwf, c_int(-1), c_double(0.5)) self.dwf.FDwfAnalogOutNodeSymmetrySet(hdwf, c_int(-1), AnalogOutNodeCarrier, c_double(symm)) #pulse width self.dwf.FDwfAnalogOutNodePhaseSet(hdwf, c_int(1), AnalogOutNodeCarrier, c_double(self.x2Phase)) #phase shift for second channel self.dwf.FDwfAnalogOutRunSet(hdwf, c_int(-1), c_double(self.xDuration)) #set run duration on all channels self.dwf.FDwfAnalogOutIdleSet(hdwf,c_int(-1), c_int(0)) print "configured analog output" #configure digital input scope self.dwf.FDwfDigitalInDividerSet(hdwf, c_int(int(hzSys.value/(100*self.xRate)))) #same sample rate as xray self.dwf.FDwfDigitalInSampleFormatSet(hdwf, c_int(16)) # 16bit per sample format cSamples = 1000 # set number of sample to acquire rgwSamples = (c_uint16*cSamples)() self.dwf.FDwfDigitalInBufferSizeSet(hdwf, c_int(cSamples)) print "configured digital input" #configure analog input scope self.dwf.FDwfAnalogInFrequencySet(hdwf, c_double(int(hzSys.value/(100*self.xRate)))) self.dwf.FDwfAnalogInBufferSizeSet(hdwf, c_int(1000)) self.dwf.FDwfAnalogInChannelEnableSet(hdwf, c_int(0), c_bool(True)) self.dwf.FDwfAnalogInChannelRangeSet(hdwf, c_int(0), c_double(5)) self.dwf.FDwfAnalogInChannelEnableSet(hdwf, c_int(1), c_bool(True)) self.dwf.FDwfAnalogInChannelRangeSet(hdwf, c_int(1), c_double(5)) rg1 = (c_double*1000)() #rg = pointer to allocated buffer to copy the acquisition data rg2 = (c_double*1000)() #rg = pointer to allocated buffer to copy the acquisition data print "configured analog input" #set up PC trigger to start pulse output AND acquisition self.dwf.FDwfAnalogOutTriggerSourceSet(hdwf, c_int(0), trigsrcPC) self.dwf.FDwfDigitalOutTriggerSourceSet(hdwf, trigsrcPC) self.dwf.FDwfAnalogOutTriggerSlopeSet(hdwf, c_int(0), c_int(0)) # set channel 1 to trigger on rising edge self.dwf.FDwfDigitalOutTriggerSlopeSet(hdwf, c_int(0)) self.dwf.FDwfDigitalInTriggerSourceSet(hdwf, trigsrcPC) self.dwf.FDwfDigitalInTriggerSlopeSet(hdwf, c_int(0)) #rising edge self.dwf.FDwfAnalogInTriggerSourceSet(hdwf, trigsrcPC) # self.dwf.FDwfAnalogInTriggerSlopeSet(hdwf,) #this command doesn't exist for analogin! print "set up triggers" #configure everything to wait for trigger self.dwf.FDwfAnalogOutConfigure(hdwf, c_int(0), c_bool(True)) # start master, slave will follow self.dwf.FDwfDigitalOutConfigure(hdwf, c_int(1)) self.dwf.FDwfDigitalInConfigure(hdwf, c_bool(0), c_bool(1)) self.dwf.FDwfAnalogInConfigure(hdwf, c_int(1), c_int(1)) # starts both analog in pins (hdwf, bool-reconfigure, bool-start) print "initialized pins" #send the trigger self.dwf.FDwfDeviceTriggerPC(hdwf) print "PC trigger pulse sent" #plot the things sts = c_int() while True: #data acquisition status should == 5 - filling buffer self.dwf.FDwfDigitalInStatus(hdwf, c_int(1), byref(sts)) sts1 = sts.value self.dwf.FDwfAnalogInStatus(hdwf, c_int(1), byref(sts)) print ("analog status = " + str(sts.value)) print ("digital status = " +str(sts1)) if sts.value == DwfStateDone.value : #status ==2 = done print "acquisition complete" break When I run this, this is my printout:
  12. Hi all, Most likely this question has already been answered, but I cannot find any info. Is it safe to feed the AWG of the Analog Discovery to the scope of the same device? can this somehow cause any damage to the AD2?
  13. Hi all, I've run into an unexpected problem. Issue It seems that when I use both scope channels within the same circuit (at least for this circuit) I get tons of 60Hz noise and its harmonics. Using a single channel does not generate this kind of noise. Setup I am using a 3 channel DC supply plugged into 60hz wall power that feeds my breadboard circuit in two areas. My breadboard circuit is a simple non-inverting op-amp whose input signal comes from a constant current source excited thermistor. The gain is ~ 30 V/V. I'm using the Analog Discovery 2. Details Normally, I've been using the either channel to check my pre or post-amplified signal. This single channel behaves normally. Nice low frequency temperature response from my thermistor. However, upon adding the other channel to look at the opposite end of my op-amp circuit, I get tons of 60Hz, 120Hz, etc. garbage. Advice? Regards, Eric
  14. Hi Everyone, I've been using "Scope1.Channel1.alldata" to collect Channel data from the scope, but is there a function to collect the "Time" data? Best Regards, Nick
  15. Hello all, I am trying the measure a variable frequency signal, is it possible to create a custom scope channel that will display the most prominent frequency? If a scope channel is not possible, is there a way to continuously log the frequency over time? Currently, I am only able to get one frequency reading per acquisition using the logging tool and exporting the 'measurements' source.
  16. I'm running waveforms 2015 3.5.4 and got a bug/request. When changing the timebase, the position should not change. When I use the scroll the wheel or the timebase pop-up the actual position of the trigger point moves around in the scope graph window, this is very frustrating. Once you set the trigger x position, it should never move. Thanks.
  17. After I collect data using the scope, I'm trying to write the script to create an array with such data so that I can further analyze it. However, I noticed that the "Scope1.Channel1.data" (7693 samples) outputs different data from that shown in the table on the Scope tab -> View -> Data (8192 samples). Any recommendations on how to output the data displayed on the oscilloscope? PS: On the "WaveForms 2015 Reference Manual" it is said that Scope1.Channel1.checked obtains the data array, but this is false since ".checked" returns true or false.
  18. Hello, Just a suggestion: Give the users a preference setting to enable warnings when an action is about to delete/reset data in the scope or logger windows. E.G. I want to use the logger to record a DC voltage over a very long time (hours). If I change certain settings like the time/division the plot is reset automatically with no warning and the data I have been recording is lost. I would like to be able to save that data before it is lost. A dialog that warns that data is about to be lost and gives the user the option of exporting it would be very useful. I know it could be annoying in many cases to have that pop up every time a setting is changed, so making it an optional preference would allow users to turn it off if they prefer. Thanks for listening!
  19. Hello All, I am trying to acquire a waveform from one of my terminal of the ESP8266 microcontroller (GPIO0). I should be expecting a signal from the crystal at this terminal which is oscillating at 26 MHz. Can anybody let me know the correct settings to acquire the signal of 26 Mhz? The following are the steps that I performed: 1. Go to settings--> Device Manager --> select 2x 16K scope 2. Then click the settings (gear symbol) on the time settings box on the right side of the window 3. Here, I select Range Mode = Division Mode, Rate = 100 MHz, Samples = Default I have attached the snip shots below. The signal intended to measure should be in 26 MHz. It usually says samples lost- reduce the sample rate. Why does it say that? Please let me know the correct settings to measure this signal. The overall objective of measuring the time response on this terminal and maybe the frequency response at this terminal is to figure out which component in my custom board is behaving differently from the other boards which are tested as okay. Please let me know if there is a way to do it using Analog Discovery.
  20. Hello, I want to find a maximum value during a period with a script on the scope. I have done that but the result is wrong: Scope1.single() Scope1.wait() Scope1.Time.Base.value = (1/freq) var data = Scope1.Channel1.data data.forEach(function(sample){ Vin_Max = Math.max(sample); }) print("Vin_Max: ",Vin_Max,"V") Do you have an idea? Thank in advance.
  21. Is persistence mode available in Waveforms 2015 (3.1.5) for Scope?
  22. Can we use mouse to select (click and drag) a portion of the waveform shown in Scope while it is running?
  23. Hi, I am running Waveforms 3 beta on my macbook and i have encounterd a problem. When trying to capture and voltage impulse from my accelerometer the Scope never reacts to it. I have set Mode to normal, with condition: rising and level:0.2V And it never captures anything. I have checked the single acq. with the waveform generator, and when using that as an input it works flawless. What could be my error here?