Capacitive & Inductive Impedance Plots with SDS2104X Plus Bode Function - Page 1
Forum section: electronics / testgear

author: mawyatt
author_rank: Super Contributor
timestamp: August 02, 2022, 08:01:04 pm
content: Here's a simple technique to utilize the Bode Function to create some nice Impedance Plots of various capacitors.The idea is to have the scope plot Ch2/Ch1, or Vo/Vi as it does with the Bode function. Using an external AWG (SDG2042X) to create the stimulus under LAN control from the SDSX+, place the AWG output signal thru a reference resistor R (1K 2W 1% in our case). The DUT capacitor is placed from the Resistor to Local Ground, and Ch1 senses the AWG side of R and Ch2 senses across the DUT.Here's a little math behind this, Vo is the voltage across the DUT and Vi is the voltage from the AWG source.Impedance of DUT Z = Vo/I, where I is the DUT thru current.I = (Vi-Vo)/R, where R is the sense resistorZ = Vo/[(Vi-Vo)/R] = R/( Vi/Vo -1), if Vi/Vo is >> 1, thenZ ~ R(Vo/Vi) and Vo/Vi is what the Bode function plots.So simply scaling the Bode Function dB scale by R revels the ~ Magnitude of DUT Impedance and the Phase is as indicated.For the magnitude in ohms |Z| ~ R[ 10^(dB/20)], C ~ 1/(|Z|*2pi*F)Here's a few capacitor examples:Edit: Added (Calculated from graphs and Tonghui LCR Meter TH2830 Measured values).#28 680uF Electrolytic (634uf, 641.5uF @ 100Hz)#31 470uF Polymer (459uF, 469uF @ 1KHz)#32 10uF Mylar (9.59uF, 9.72uF @ 1KHz)#33 5uF Polypropylene (4.89uF, 4.84uF @1KHz)#34 0.1uF Polystyrene (poor quality)Added these:#35 1uF Mylar (981.3nF, 994.5nF @ 10KHz)#37 2uF Polypropylene (1.985uF, 1.975uF @ 10KHz)#38 10nF Polystyrene (10.28nF, 10.086nF @ 100KHz)#39 100nF Disc Ceramic (95.9nF, 92.81nF @ 10KHz)The SDSX+ does a respectable job with it's nice low noise front end and good overall dynamic range, and the Bode Function is "Icing on the Cake"Anyway, hope some folks find this interesting.Best,

author: Martin72
author_rank: Super Contributor
timestamp: August 02, 2022, 08:41:06 pm
content: Interesting thing I want to recreate on my scope.

author: mawyatt
author_rank: Super Contributor
timestamp: August 03, 2022, 12:56:21 pm
content: See post #130 here.https://www.eevblog.com/forum/testgear/east-tester-et4410-esr-measure/125/Some Plots added.Note because of the superb noise and DR of the Siglent SDSX+ and even better SDSX HD, a decent Wide-Band Impedance Analyzer is lurking in the backgroundThis has a very good chance of being a "decent" Analyzer because of the low noise front end and high DR due to dynamic input scaling as well as the Frequency Selective (FS) feature utilized within the Bode Function. This FS isn't as good as a quality LCR meter since these employ Synchronous Sampling which is the ultimate in signal processing techniques for recovering synchronous signals from noise, however the FS seems to do a very good job with our experience. You can judge this with the various plots and lower impedance levels achieved with a 1K source impedance.Anyway, lets hope Siglent is listeningBest

author: tautech
author_rank: Super Contributor
timestamp: August 03, 2022, 01:34:34 pm
content: Just stumbled on a vid from Chris doing much the same stuff with a SVA1015X:

author: TopQuark
author_rank: Frequent Contributor
timestamp: August 03, 2022, 02:57:09 pm
content: Very interesting test. Decided to have a go myself.I see myself using this trick in the future, so I wanted to make a dedicated jig for this. I used a nanoVNA test board and soldered a 1k 0.1% resistor and a couple of probe sockets to it. Scrapped away some of the solder mask to expose a bit more copper for bigger parts.Ran the test with a 10uF MLCC and a 100nF PPS film cap. The 100nF film cap is quite tricky to test, as its SRF is around 20-30MHz, so 10x probing is strongly preferable and 20M BW limit can't be used. The SDS2000X HD performed respectably in this test.I'll see if I can jerry rig together some code in Python to produce capacitance and impedance graphs out of the bode plot data.

author: TopQuark
author_rank: Frequent Contributor
timestamp: August 03, 2022, 03:34:27 pm
content: Tested the 100nF PPS film cap with a libreVNA and SVA1032X Plus using the technique introduced in the video tautech linked to. I haven't ran the math calculating the different parameters of the cap measured in different setups, but at least all measurements agree the SRF to be at 20MHz.

author: mawyatt
author_rank: Super Contributor
timestamp: August 03, 2022, 04:28:53 pm
content: A VNA is certainly a good instrument to use but has some limitations with these type components.First, it's frequency range doesn't extend down to areas where many of the capacitors mentioned are typically measured & used, and secondly it's design is centered around 50 ohms typical of RF usage.@TopQuark,Using the nanoVNA test board is a good idea, certainly better than my kludge setup. Where did the nice scope probe sockets come from?Best,

author: TopQuark
author_rank: Frequent Contributor
timestamp: August 03, 2022, 05:10:32 pm
content: QuoteQuoteHere's a quick and dirty python script that spits out graphs of impedance and capacitance calculated with the formula given in the first post. Output graph of 100nF PPS cap provided as well, I think it looks pretty reasonable.QuoteThey are from Taobao, at 9.5 RMB (~1.4USD) each. Fits standard probes, including the Siglent switchable probes. Super handy and cheap to just throw into circuit boards for consistent hands-free probing.https://item.taobao.com/item.htm?id=530628042453&_u=41pvoq9c6c84edit: include higher res sample output graph in PDF

author: mawyatt
author_rank: Super Contributor
timestamp: August 03, 2022, 05:53:24 pm
content: Those are some very nice plots, and you can see where the equation approximation for capacitance is valid. Note one can solve for the exact value of C regardless of frequency and source resistance, but a little more involved than the simple expression shown.Did you extract the files directly from your SDSX HD for the python script?Thanks for the post on the scope adapter, but no luck with Taobao as it's all in Chinese for a log in.Anyway, this is getting very interesting indeedBest,

author: TopQuark
author_rank: Frequent Contributor
timestamp: August 03, 2022, 10:40:04 pm
content: Spent way way too much time on this idea, though my understanding of capacitors are much better after this little exercise.QuoteI can send a bunch your way if you are interested.QuoteYes, I went into the data menu of the bode plot mode and saved the raw data to a USB stick, which is then copied to the folder containing the Python script on my PC.QuoteEnded up redoing the math completely to do exactly that. While I was at it, I added calculations for loss angle, dissipation factor, quality factor and ESR.You can find the latest version of the code here:https://github.com/TopQuark12/bodeCapFeel free to check my math and provide input to the code. The code at the moment is still not well tested and proven.I have made measurements of:- 100nF 1812 PPS film cap- 10uF 1812 MLCC cap- 100uF junk quality aluminium electrolytic capand the resulting graphs looks reasonable. Obviously the Q, loss tangent and sometimes ESR data looks a bit messy past SRF, but that is to be expected. I will compare the readings with my LCR meters later, it is way way past bedtime for me.

author: mawyatt
author_rank: Super Contributor
timestamp: August 04, 2022, 12:33:35 pm
content: Those are beautiful plots indeed, well doneHaven't looked at the Python code yet, hopefully get too that later.Also, thanks for the offer on the scope adapter and will take you up on the offerWith your nice plots and doing so in python with the raw Bode data, gotta think someone at Siglent is watching and thinking about incorporating this into a future firmware Upgrade, or additional "Option"Best,

author: TopQuark
author_rank: Frequent Contributor
timestamp: August 04, 2022, 01:48:44 pm
content: What I realised while programming the Python script, which should have been obvious, is you can reconstruct the output of the transfer function H(s) as a function of the sweep frequency.The definition of the Bode plot (from wiki) is as follows,Magnitude plot y0(s) = 20log10(|H(s)|)Phase plot φ(s) = Arg(H(s))Given the following identity: z = |z|ei Arg(z)You can represent H(s) as : |H|ei Arg(H)Substituting y0(s) and φ(s) into the formula above, you yield: H(s) = 10y0(s)/20* eiφ(s)So in essence, you can get the output of the transfer function H(s) of the plant/DUT you are measuring using the data from the bode plot measurements. This is how my improved Python script works. You might even be able to use something likehttps://www.mathworks.com/help/ident/ref/systemidentification-app.htmlfrom Matlab to build a transfer function of whatever black box circuit you are measuring just from the bode data.This should have been plainly obvious when I started using bode plot had I read up on the actual mathematical definitions, but I am just starting to realise the true potential of the bode plot function.

author: mawyatt
author_rank: Super Contributor
timestamp: August 04, 2022, 05:33:57 pm
content: The subtly here is that H(s) for setup and which Vo/Vi that the Bode produces, is not exactly Z of the DUT.DUT Z is Vo/I, where I is computed as (Vi-Vo)/R. So Z(s) = Vo/I or R(Vo/(Vi-Vo)), or R(Vo/Vi)/(1-Vo/Vi)If H(s) is the Bode result, or Vo/Vi (Mag & Phase), thenZ(s) = R*H(s)/(1-H(s))If H(s) <<1 thenZ(s) ~ R*H(s)This basically means that |Z| << R, or Vo << ViAnyway, the plots you've produced with your superb Python Routine are very beneficial and helpful, and show how a capacitor follows the classic -20dB/dec as frequency increases, and become inductive with ~20dB/dec past SRF.One very interesting concept would be to implement a "Transimpedance Amp" input to sense the DUT current and forced the input node to virtual ground. The output of the Transimpedance Amp is scaled as Rt, thus the output is I*Rt, where I is the DUT current. If this becomes Ch2 on the Bode Function while Ch1 is now the Voltage at the DUT (the signal source can still provide a source resistance R, but not necessary as you'll see).The Bode Function Ch2/Ch1 now becomes Vo/Vt where Vt is the Transimpedance output or I*Rt, and Vo is the voltage at the +end of DUT (-end feeds Transimpedance Amp input).So Bode = Vo/Vt = Vo/(I*Rt), or Z/Rt irrespective of the source impedance R.This is exact without any requirements on Z mentioned above. Of course this assumes an ideal Transimpedance Amp, but with "Possible" some of the Transimpedance Amp undesirable characteristics calibrated out, then likely a good result for Z, which yields a good C and the other parameters without as much restrictions. Now we are venturing into the more quality Impedance Meter spaceAnyway, we've been seriously "Thinking" about this (some simulations underway), maybe others might be interestedBTW agree with your request on the SDS2104X HD thread for the Bode Function to be Enabled, have Data available, and Controlled by SCPI remote commands. This would make your Python Routine capable of directly controlling, collecting data, and displaying the Bode Plots along with the other useful plots you've shown.https://www.eevblog.com/forum/testgear/siglent-sds2000x-hd-missing-features-and-bugs/Edit: Trying a differential measurement for Ch1 Bode Plot, will report later. Initial test looks promising!!Best,

author: graybeard
author_rank: Frequent Contributor
timestamp: August 04, 2022, 08:47:32 pm
content: Three years ago I uploaded a video showing how to directly measure impedance using the using the bode plot function. I discuss the limitation of the measurements due to the scope, function generator, and fixture parasitics. You canget the example files and view graphs here.Chris

author: mawyatt
author_rank: Super Contributor
timestamp: August 05, 2022, 01:32:29 pm
content: If Vo is the voltage across the DUT and Vi is the voltage from the AWG source.Impedance of DUT Z = Vo/I, where I is the DUT thru current.I = (Vi-Vo)/R, where R is the sense resistorZ = Vo/[(Vi-Vo)/R] = R[Vo/( Vi-Vo)]The Bode Plot is Scope Ch2/Ch1, so Ch1 is Vi-Vo and Ch2 is Vo.Using a Differential Amplifier Sensing Vi-Vo for Ch1 and Vo on Ch2 provides the Bode Plot of the DUT Z Impedance scaled by sense resistor R.We used a Micsig DP1007 100MHz Differential Probe for Ch1 and Siglent PP215 200MHz Probe for Ch2. Using a sensing R of 1K (999.361) and a 0.22uF (220.060nF) Mylar Film DUT. Here's plot of the Bode result, note C is computed as 218nF at 1KHz. Will add additional DUTs Plots later.Best,

author: TopQuark
author_rank: Frequent Contributor
timestamp: August 05, 2022, 02:02:46 pm
content: Cool stuffDo you mind attaching the Bode plot raw data file so that I can play with the data a bit?

author: mawyatt
author_rank: Super Contributor
timestamp: August 05, 2022, 04:34:03 pm
content: Just measured a 2uF Polypropylene, but data file is too large. Sent a PM note with my email, respond so I can send data file.Here's the 2uF Plot using the Diff Amp Setup with 1K sense R. Cap measures 1.9135uF (-90.00 degrees), and with TH2830 1.9745uF (-89.990 degrees), with IM3536 1.9745uF (-89.999 degrees) at 1KHz.The nice thing about using the Diff Amp approach is most folks will likely have such and no additional probes or equipment necessary. With this Diff Amp approach, we're going to abandon the Transimpedance Amp approach and just work on getting a good setup fixture.We'll add a few more plots hopefully today.Edit: Added a 10nF Polystyrene Type (#47), using 10K (9.96783K) sensing R, and measures 10.857nF (-89.991) with TH2830 & 10.0853nF (-89.996) with IM3536, and computes as 10.074nF (-89.40) at 10KHz from Bode Plot.Best,

author: mawyatt
author_rank: Super Contributor
timestamp: August 05, 2022, 07:12:56 pm
content: Technique works well for inductors also. Here's 470uH Inductor measured with a 100 ohm & 1K sense R.#49 is with 100 Ohms R#51 is with 1K Ohms REdit: Added #52 which is a 100uH Inductor with 100 ohm sense R.Also later added these:#53 1mH with 100 Ohm R, 1.101mH (measured with TH2830 1.0417mH)#55 2.2mH with 1K R, 2.354mH (measured 2.2816mH)Best,

author: trobbins
author_rank: Frequent Contributor
timestamp: August 06, 2022, 12:35:16 am
content: Nice to see those plots and that code is advancing on providing an ideal model representation of the part.With a good soundcard, the REW software in widespread use introduced that impedance plot and part modelling function a year or two ago. The frequency span is obviously limited to the soundcard, so typically circa 2Hz to 96kHz, but can get down to about 0.5Hz. The REW three measurement calibration setup using say a 0.1% resistor was able to better 1% tolerance of reference cap and air-core inductor values that I had back then (I only had circa 0.5% accurate reference parts then and no better calibrated LCR meter). For my audio related projects, the impedance plots contain an extra wealth of insight into DUT operation compared to just the 4 spot frequency measurements from my LCR meter, especially below 100Hz for inductive/transformer parts. Having a component modelling feature, with the ability to automatically use some second order modelling circuits when applicable, and overlaying the modelled response to the measured response is a good goal imho.

author: mawyatt
author_rank: Super Contributor
timestamp: August 06, 2022, 02:02:04 am
content: Agree that graphs of impedance and other parameters vs. frequency are more useful than the usual "spot frequency measurements of typical LCR meters", especially true when DUT resonances are involved.The quality LCR meters that have built-in plotting capability are quite expensive and likely out of reach for most, and why we took on the endeavor to see if the popular SDS2104X + Bode Function could be coached into providing a decent impedance graphing capability over a useful frequency range with reasonable accuracy.Using an inexpensive Differential Probe that many may have (like the Micsig DP10007), with the DSO provides a useful solution without too much effort. Hopefully Siglent is watching and will consider providing some helpful Bode Plot enhancements which will expand the Bode Function capability for this type usage.Best,

author: Martin72
author_rank: Super Contributor
timestamp: August 07, 2022, 09:07:04 pm
content: Hi,QuotePic #28 the marker is on -52dB/100hz.Tried your "formulars" in the first posts...Hmmm...won´t come to the calculated 634µF, I must do something wrong.

author: mawyatt
author_rank: Super Contributor
timestamp: August 07, 2022, 09:43:50 pm
content: Quote from: Martin72 on August 07, 2022, 09:07:04 pmHere's the formulas from above.First calculate Z as:|Z| ~ R[ 10^(dB/20)]Which equals 2.5119 ohms at -52dB reading at 100Hz with R = 1000Then calculate C (this assumes the the imaginary part of Z ~ |Z|).C ~ 1/(|Z|*2pi*F)Which equals 633.61uF at 100Hz.Best,

author: Martin72
author_rank: Super Contributor
timestamp: August 07, 2022, 10:15:16 pm
content: Ah, now I got it

author: tautech
author_rank: Super Contributor
timestamp: August 08, 2022, 04:20:59 am
content: Quote from: mawyatt on August 03, 2022, 04:28:53 pmThe weather was conducive to time in the lab today to conjure up a fitment for the VNA similar to the very simple one Chris Grossman used, just some SMA fittings, veroboard and SIL turned pin sockets.The SVA1000X range in VNA mode is restricted to minimum frequencies of 100 KHz which certainly limits its usefulness however the new SNA5000A models can start down at 9 KHz but nowhere near the few Hz the scope Bode plot feature can so it's far superior for the lower cap frequencies.Even the 0.1uF played with weren't very exciting and green cap and MLCC measured similar values.Off now to find some other types for a session of education.

author: mawyatt
author_rank: Super Contributor
timestamp: August 08, 2022, 10:39:55 pm
content: Here's plots of a 2.2mH (#61), 470uH (#62), 1mH (#63), 100uH (#65), 10uH (#66) and another type 100uH (#67) inductor we had in stock. These plots were using a 100 ohm sense R, and a Differential Amp (DP10007) for Ch1.They show the Magnitude and Phase response and SRF of the various inductors.Best

author: mawyatt
author_rank: Super Contributor
timestamp: April 22, 2023, 03:37:52 pm
content: While developing some Python routines for displaying & plotting various LCR Meter functions we decided to investigate how well the SDS2104X+ Bode Function would hold up to a quality Lab Grade LCR meter such as our Hioki IM3536 when plotting Impedance vs frequency over a frequency range much higher than typical LCR meters support. You can follow the LCR software sweeping & plotting development details in this link.https://www.eevblog.com/forum/testgear/lcr-meter-plot-software/Most moderately priced LCR meters don't go beyond 10KHz or 100KHz, the IM3536 supports 8MHz and why we have it, and it was expensive!!For a quick evaluation of the SDS Bode Function compared to the IM3536 with the new Python plotting routine we selected a typical 1uF Mylar Film capacitor as DUT and a frequency sweep range from 100Hz to 8MHz, well beyond a typical LCR meter range. A Micsig DP10007 was used to differentially sense the voltage across the DUT on the SDS2104X+ Channel 2, and a 50 ohm resistor used as the R current sense for Channel 1. The Bode left axis is scaled by 20Log(R), or ~34dB with the 50 ohm shunt.From the Bode plot you can see the impedance magnitude at 1KHz is 10.26dB and with scaling becomes 44.24dB ohms, or ~163 ohms which corresponds to 0.977uF at 1KHz, and series resonance shows ~683KHz. Both agree well with the IM3536 LCR plot as shown.Anyway, the Bode function is not a replacement for a quality LCR meter, nor a VNA, but can be useful in a pinch or just having fun fool'n around.As usual, YMMV.Edit: Ran another quick set of plots with a small ~1mH Inductor. Note at 10KHz the Marker shows 4dB, add the 34dB (20Log(50)) and one arrives at 38dB ohms or 79.4 ohms, which is ~1.27mH.Best