Jump to content

mkj

Members
  • Posts

    27
  • Joined

  • Last visited

Everything posted by mkj

  1. Installed the beta update and updated the firmware - how do I get the extra channels etc? Also math C1-C2 is not working.
  2. Thanks for the answer and I'll try that beta out - looks awesome! I needed a specific frequency so I created a math C1-C2 (modulation delta) and used to to get the zero crossing vs the demod C1 is waveform 1 carrier modulated (Va to AD598) C2 is waveform 2 carrier modulated - 180 out of phase with C1 (Vb to AD598) BLUE is C1-C2 PURPLE is demod from AD598 (Va-Vb)/(Va+Vb) showing the phase lag effect of filters on the response
  3. So I tried this - but what do I set my trigger to? The math wave will always be at "0" time - the waveform channels will be the composite carrier and modulation so I cant trigger to that. How do I trigger to the waveform "modulation" part? I dont want to trigger to the "DEMOD" - if I do it will always be inphase to the math channel. I cant trigger on the initial waveform edge (carrier and mod) since the wave needs to be "on" for a few second for the demodulation to stabiilize.
  4. Thanks - perfect. Didn't know you could do that equation w/o a channel input! Awesome.
  5. Im trying to simulate an LVDT frequency response. So I have two amplitude modulated waveforms (analog discover waveform generator) with a 1000Hz carrier and low frequency modulation (1-30 Hz) to simulate the "movement" of the LVDT. These become my Va and Vb of an LVDT. I can feed the AD598 (LVDT asynchronous demod chip) with the waveforms and will get the demodulated (Va-VB)/(Va+Vb) ratio of the modulation. I need to compare phase lag at the modulated frequencies to evaluate phase shift caused by the AD598 filters. How can I get the modulated part of the Waveforms signal on the scope to be able to compare demod vs input phase? I tried a MATH channel: modulation = C1/(sin(2 pi fc) - Ac (C1 is waveform for Va, where fc and Ac are the carrier freq and amplitude) But this doesnt work... it seems not accurate enough to mix the equation with the actual data - getting spikes etc. Is there a way to just show the low freq modulation on a the scope? I have the AD original, and the AD3450 Ideally this would be a freq response sweep over 1-30 range of modulations, comparing the demod signal to the command modulate. But I can run this point by point if I can used the scope.
  6. perfect - thank you how do you write the "phase" calculation equation?
  7. Is there way to create a math channel or measurement for LVDT demodulation? The equation is based on the RMS voltage ratio: VRATIO = (VA_RMS - VB_RMS) / (VA_RMS + VB_RMS) I see you can create "measurements" with RMS, but can I use that in an equation somewhere for the ratio? Either as a "readout" or in the scope on a math channel? Similar question for resolver but that would get into whether the Va and Vb are in phase or not with the excitation. (Waveforms 3.18 AD3450 and AD Legacy)
  8. I have a resolver I want to use with AD3450 - I can generate the excitation, and measure on the scope the VA and VB vs rotation Can I create a math channel or ? to calculate degRotation = ARCTAN( (Va*sin(theta)) / (Vb*cos(theta))) Were theta is phase shift comparted to excitation? I can do degRotation = ARCTAN(Va/Vb) but or course that doesn't give me quadrature (ie no phase) Are there ways to get phase?
  9. Why is the AD3450 specified for patterns as 16 x 16k? When I try to create a pattern - custom etc its only letting me have 8k samples. Win10pro, x64, Waveforms 3.18
  10. Thanks - have been getting into using the waveforms sdk with python recently. This should help out quite a bit with streamlining my code. Documentation looks excellent as well! ?
  11. Yes I've had this happen on the legacy AD, the demo (waveforms) and APP3450. All win10 x64 os.
  12. to trigger on PC I use: FDwfDeviceTriggerPC(HDWF hdwf) - correct what do I set idxPin to ? in FDwfDeviceTriggerSet(HDWF hdwf, int idxPin, TRIGSRC trigsrc) Also -seems the online SDK trigger values are off? // trigger source typedef unsigned char TRIGSRC; const TRIGSRC trigsrcNone = 0; const TRIGSRC trigsrcPC = 1; const TRIGSRC trigsrcDetectorAnalogIn = 2; const TRIGSRC trigsrcDetectorDigitalIn = 3; const TRIGSRC trigsrcAnalogIn = 4;
  13. I seem to have issues 3.17.1 waveforms crashing when using math channels. Add a few math channels - with simple scaling like -C1*130/5 Run the scope, and click on tabs for some of the tool: FFT, Hist, etc. Seems to crash regularly. Happens on demo, digilent(old), and ADP3450
  14. Seems to be working with a few msec delay. Is the below the best (fastest) way to command a voltage output? FDwfAnalogOutNodeOffsetSet(HDWF hdwf, int idxChannel, AnalogOutNode node, double vOffset) what settings should FDwfDeviceAutoConfigureSet have for fastest response, update? Or doesnt it matter? FDwfDeviceAutoConfigureSet(HDWF hdwf, BOOL fAutoConfigure) Description: Enables or disables the AutoConfig setting for a specific device. When this setting is enabled, the device is automatically configured every time an instrument parameter is set. For example, when AutoConfigure is enabled, FDwfAnalogOutConfigure does not need to be called after FDwfAnalogOutRunSet. This adds latency to every Set function; just as much latency as calling the corresponding Configure function directly afterward. With value 3 the analog-out configuration will be applied dynamically, without stopping the instrument.
  15. Very, very cool (ADP3450) looking forward to it. I need to verify today but I may have worked out a way to get close to 1msec consistency using the standard AD and python waveforms SDK. I created a threaded python class and am using this from stack overflow to allow me to create surprisingly precise delays. ( I know delays are not desired in closed loop, this is for trouble-shooting gain and phase margin) https://stackoverflow.com/questions/38319606/how-can-i-get-millisecond-and-microsecond-resolution-timestamps-in-python
  16. >>A lower latency solution would be using the ADP 3000 series and running the app/script on the device with AXI latency (microsecs) Thanks! - we have an ADP3540 on order. Are you saying it runs at a faster latency using something like ASIO drivers compared to the Analog Discovery "small" units? Or is this "Linux" mode which looks like it runs ON the ADP3450? Would I run a python or ? script then in Linux mode or Waveforms?
  17. I know the likely answer is no - due to limits of and script looping in terms of window timer etc accuracy. But I'm always surprised by the capability in this thing. But any simple way to do a PI loop closure ? Like measure on CH1 and CH2 and command? It can certainly do "seconds" for things like temp control but I'm looking for less than 10 ms delay lag.
  18. Thank you (case sensitive strikes again)! I had tried this (and it didn't work) : Scope.Time.Base.Value = 0.001 (I missed the lower case "value" )! ? And of course this does work: Scope.Time.Base.text = "1ms" And Ctrl + shift is really handy: I thought wasn't working but I see you have to have the "." for the commands to appear BTW - just wanted to say how impressed I am with the overall Analog Discovery products (hardware and software). I've used them on countless engineering/lab projects and they've been flawless. Just getting into the scripting more to control stepper motor drivers with the patterns, very quick to get something running during RD phases. We have about a dozen of the 2 channel and are buying the newer "Pro" 4 channel versions now.
  19. Using the great script editor but cant (dont understand) how to control the scope "TIME" parameters. It seems any script commands like below don't do anything. No error, but the scope doesn't change. Scope.Time.Base.Real = 0.001 Scope.Time.Samples.Value = 32 Scope.Time.Rate.Value = 10000 And Scope..BufferSize.value = 256 gives: TypeError: Result of expression 'Scope.BufferSize' [undefined] is not an object. Do I have to set these in the actual SCOPE window instrument and not scriptable? All Im trying to do is get a short sample of data (2ms or so) to grab the current voltage of a sensor in a loop (not too concerned about timing update accuracy) . If I set the scope to a fast rate, short timebase, and use var average = Scope.Channel1.measure("Average") it works but I can't seem to do that in a script. Otherwise of course the reading is average over a large span. I want the "current" reading (within a few ms) Or is there a better way?
×
×
  • Create New...