How to measure quartz crystal motional parameters using a VNA? - Amateur Radio Stack Exchange most recent 30 from ham.stackexchange.com 2023-06-05T20:49:07Z https://ham.stackexchange.com/feeds/question/16960 https://creativecommons.org/licenses/by-sa/4.0/rdf https://ham.stackexchange.com/q/16960 4 How to measure quartz crystal motional parameters using a VNA? S.s. https://ham.stackexchange.com/users/4491 2020-07-07T01:20:53Z 2021-08-10T14:32:01Z <p>I want to measure quartz crystal motional parameters with a VNA. Unfortunately all Google searches I've done have lead me to nothing in concrete. I know how to get an impedance curve and measure the parallel and series resonant frequencies but I don't know how to extract the motional parameters from it. I'm looking for a relatively easy way to do it, rather than a lot of tweaking in computer software. I found this YouTube video <a href="https://www.youtube.com/watch?v=LyAQqqIsBOM" rel="nofollow noreferrer">Crystal Filters &amp; Crystals, Part 1 (Adv. 13)</a> which finds the motional parameters but it is an overly complicated process and you need extra software.</p> <p>I am using a miniVna Pro. Is there a way to do this?</p> https://ham.stackexchange.com/questions/16960/-/17003#17003 7 Answer by Phil Frost - W8II for How to measure quartz crystal motional parameters using a VNA? Phil Frost - W8II https://ham.stackexchange.com/users/218 2020-07-14T15:27:17Z 2020-07-17T00:37:52Z <p>I don't know if this counts as &quot;easy&quot;, but:</p> <ol> <li>Find the series resonant frequency. Multiply this frequency by <span class="math-container">$2\pi$</span> to convert it to an angular frequency, and call that <span class="math-container">$\omega_s$</span>.</li> <li>Note the resistance at this frequency. That's <span class="math-container">$R$</span>.</li> <li>Find the parallel resonant frequency, multiply by <span class="math-container">$2\pi$</span>, and call it <span class="math-container">$\omega_p$</span>.</li> <li>Halfway between these resonant frequencies is <span class="math-container">$\omega_t$</span>. Measure the impedance there and call it <span class="math-container">$Z_t$</span>.</li> <li>Calculate the remaining values:</li> </ol> <p><span class="math-container">$$C_p = \mathrm{Re} \left( i (\omega_s^2 - \omega_t^2) \over \omega_t Z_t (\omega_t^2 - \omega_p^2) \right)$$</span></p> <p><span class="math-container">$$C_s = {C_p (\omega_p^2 -\omega_s^2) \over \omega_s^2}$$</span></p> <p><span class="math-container">$$L = {1 \over C_s \omega_s^2}$$</span></p> <p>These are derived below as equations 13, 7, and 2.</p> <p>If you can <a href="https://ham.stackexchange.com/questions/17019/can-the-parallel-capacitance-of-a-quartz-crystal-be-directly-measured">measure <span class="math-container">$C_p$</span> some other way</a>, then you can skip the measurement at <span class="math-container">$\omega_t$</span> and just use the latter 2 of these equations and the resonant frequencies.</p> <p>Another method is to <a href="https://www.giangrandi.org/electronics/crystalfilters/xtaltest.html" rel="nofollow noreferrer">measure the series resonant frequency with some variable capacitance in series</a>. This might result in some simpler math, and it doesn't require a VNA: only a sweep generator and a power detector.</p> <hr /> <p>Explanation:</p> <p><img src="https://i.stack.imgur.com/C2VUm.png" alt="schematic" /></p> <p><sup><a href="/plugins/schematics?image=http%3a%2f%2fi.stack.imgur.com%2fC2VUm.png">simulate this circuit</a> &ndash; Schematic created using <a href="https://www.circuitlab.com/" rel="nofollow">CircuitLab</a></sup></p> <p>The impedance of this circuit is:</p> <p><span class="math-container">$$Z(\omega) = \left({1 \over -i/(C_s\omega) + i L \omega + R} + i C_p \omega \right)^{-1} \tag 0$$</span></p> <p>When <span class="math-container">$L$</span> and <span class="math-container">$C_s$</span> have reactance equal in magnitude but opposite in sign, we are very close to series resonance. I say close because <span class="math-container">$C_p$</span> has some effect, but it's small because the impedance of the lower components is very much lower. The error is about 0.25 Hz for the 14 MHz crystal in the video. If we neglect that error, the math is simpler.</p> <p>Let's define <span class="math-container">$\omega_s$</span> as the series resonant angular frequency. We can then solve this equation for <span class="math-container">$C_s$</span> or <span class="math-container">$L$</span>.</p> <p><span class="math-container">$$i \omega_s L = -{1 \over i \omega_s C_s} \tag 1$$</span></p> <p><span class="math-container">$$L = {1 \over C_s \omega_s^2} \tag 2$$</span></p> <p><span class="math-container">$$C_s = {1 \over L \omega_s^2} \tag 3$$</span></p> <p>The series resonance can be found by the VNA by looking for a frequency where reactance is zero and resistance is on the order of 10 ohms. At this frequency, <span class="math-container">$R$</span> is the only significant impedance, so:</p> <p><span class="math-container">$$Z(\omega_s) = R \tag 4$$</span></p> <p>Parallel resonance occurs when the <a href="https://en.wikipedia.org/wiki/Admittance" rel="nofollow noreferrer">admittance</a> of the two parallel branches of the circuit are equal. Again we're going to accept a little bit of error to simplify the math by neglecting the influence of <span class="math-container">$R$</span>. Let's call the parallel resonance angular frequency <span class="math-container">$\omega_p$</span>:</p> <p><span class="math-container">$$i\omega_p C_p = - \left( i\omega_p L + {1 \over i\omega_p C_s} \right)^{-1} \tag 5$$</span></p> <p>Substitute equation 2 for <span class="math-container">$L$</span> and simplify:</p> <p><span class="math-container">$$i\omega_p C_p = - \left( {i\omega_p \over C_s \omega_s^2} + {1 \over i\omega_p C_s} \right)^{-1}$$</span></p> <p><span class="math-container">$$i\omega_p C_p = - \left( {i^2 \omega_p^2 \over i\omega_p C_s \omega_s^2} + {\omega_s^2 \over i\omega_p C_s \omega_s^2} \right)^{-1}$$</span></p> <p><span class="math-container">$$i\omega_p C_p = - \left( {i^2 \omega_p^2 + \omega_s^2 \over i\omega_p C_s \omega_s^2} \right)^{-1}$$</span></p> <p><span class="math-container">$$i\omega_p C_p = - \left( {i\omega_p C_s \omega_s^2 \over \omega_s^2 - \omega_p^2 } \right)$$</span></p> <p><span class="math-container">$$i\omega_p C_p = {i\omega_p C_s \omega_s^2 \over \omega_p^2 - \omega_s^2 }$$</span></p> <p><span class="math-container">$$C_p = {C_s \omega_s^2 \over \omega_p^2 -\omega_s^2 } \tag 6$$</span></p> <p><span class="math-container">$$C_s = {C_p (\omega_p^2 -\omega_s^2) \over \omega_s^2} \tag 7$$</span></p> <p>Just one more degree of freedom to solve for. Pick some angular frequency that isn't resonant, call it <span class="math-container">$\omega_t$</span>. The impedance measured at this frequency is <span class="math-container">$Z_t$</span>. From equation 0, we can write:</p> <p><span class="math-container">$$Z_t = \left({1 \over -i/(C_s\omega_t) + i L \omega_t + R} + i C_p \omega_t \right)^{-1}$$</span></p> <p>Substitute equations 2 and 6 for <span class="math-container">$L$</span> and <span class="math-container">$C_p$</span>:</p> <p><span class="math-container">$$Z_t = \left( {1 \over -i/(C_s\omega_t) + i {1 \over C_s \omega_s^2} \omega_t + R} + i {C_s \omega_s^2 \over \omega_p^2 -\omega_s^2 } \omega_t \right)^{-1} \tag 8$$</span></p> <p>Now there is only one variable that can't be measured directly by the VNA: <span class="math-container">$C_s$</span>. If we can solve for <span class="math-container">$C_s$</span> we're golden.</p> <p>Unfortunately the solution is <a href="https://www.wolframalpha.com/input/?i=solve%20z%3D%28%28-i%2F%28C*t%29%20%2B%20i%2F%28C*s%5E2%29*t%2BR%29%5E-1%20%2B%20i%20*%20%28C*s%5E2%29%2F%28p%5E2-s%5E2%29*t%29%5E-1%20for%20C" rel="nofollow noreferrer">very hairy</a>. But it gets <a href="https://www.wolframalpha.com/input/?i=solve%20z%3D%28%28-i%2F%28C*t%29%20%2B%20i%2F%28C*s%5E2%29*t%29%5E-1%20%2B%20i%20*%20%28C*s%5E2%29%2F%28p%5E2-s%5E2%29*t%29%5E-1%20for%20C" rel="nofollow noreferrer">substantially simpler</a> if we ignore <span class="math-container">$R$</span>:</p> <p><span class="math-container">$$C_s = { i(\omega_p^2 - \omega_s^2)(\omega_s^2 - \omega_t^2) \over \omega_s^2 \omega_t Z_t (\omega_t^2-\omega_p^2) } \tag 9$$</span></p> <p>Of course, this is going to give you a complex number, and you can't really have a complex-valued capacitor. But we can gloss over that! Just ignore the complex part. As long as we pick a frequency where <span class="math-container">$R$</span> isn't too significant, the error will be small.</p> <p>Halfway between the series and parallel resonant frequencies seems to work pretty well.</p> <hr /> <p>Addendum: it's also possible to start with equation 5 and substitute equation 3 for <span class="math-container">$C_s$</span> instead. I wonder if that leads to a simpler solution:</p> <p><span class="math-container">$$i\omega_p C_p = - \left( i\omega_p L + {1 \over i\omega_p {1 \over L \omega_s^2}} \right)^{-1}$$</span></p> <p><span class="math-container">$$i\omega_p C_p = - \left( i\omega_p L + {L \omega_s^2 \over i\omega_p} \right)^{-1}$$</span></p> <p><span class="math-container">$$i\omega_p C_p = - \left( {i^2\omega_p^2 L + L \omega_s^2 \over i\omega_p} \right)^{-1}$$</span></p> <p><span class="math-container">$$i\omega_p C_p = - {i\omega_p \over i^2\omega_p^2 L + L \omega_s^2}$$</span></p> <p><span class="math-container">$$i\omega_p C_p = - {i\omega_p \over L (\omega_s^2 - \omega_p^2)}$$</span></p> <p><span class="math-container">$$C_p = {1 \over L (\omega_p^2 - \omega_s^2)} \tag{10}$$</span></p> <p><span class="math-container">$$L = {1 \over C_p (\omega_p^2 - \omega_s^2)} \tag{11}$$</span></p> <p>Now we can express the impedance in terms of <span class="math-container">$L$</span> with substitutions from equations 10 and 3:</p> <p><span class="math-container">$$Z_t = \left( {1 \over -i L \omega_s^2 / \omega_t + i L \omega_t + R} + {i \omega_t \over L (\omega_p^2 - \omega_s^2)} \right)^{-1}$$</span></p> <p>Which is <a href="https://www.wolframalpha.com/input/?i=solve%20Z%20%3D%20%281%2F%28-i*L*s%5E2%2Ft%20%2B%20i*L*t%20%2B%20R%29%20%2B%20%28i*t%29%20%2F%20%28L*%28p%5E2-s%5E2%29%29%29%5E-1%20for%20L" rel="nofollow noreferrer">still pretty bad</a> unless <a href="https://www.wolframalpha.com/input/?i=solve%20Z%20%3D%20%281%2F%28-i*L*s%5E2%2Ft%20%2B%20i*L*t%20%29%20%2B%20%28i*t%29%20%2F%20%28L*%28p%5E2-s%5E2%29%29%29%5E-1%20for%20L" rel="nofollow noreferrer"><span class="math-container">$R$</span> is dropped</a>:</p> <p><span class="math-container">$$L = { i \omega_t Z_t (\omega_p^2 - \omega_t^2) \over (\omega_p^2 - \omega_s^2)(\omega_s^2 - \omega_t^2) } \tag{12}$$</span></p> <p>Or, we can do the same thing for <span class="math-container">$C_p$</span> with equations 11 and 7:</p> <p><span class="math-container">$$Z_t = \left( { 1 \over -i/\left({C_p (\omega_p^2 -\omega_s^2) \over \omega_s^2}\omega_t\right) + {i \omega_t \over C_p (\omega_p^2 - \omega_s^2)} + R } + i C_p \omega_t \right)^{-1}$$</span></p> <p><span class="math-container">$$Z_t = \left( { 1 \over {-i \omega_s^2 \over \omega_t C_p (\omega_p^2 -\omega_s^2)} + {i \omega_t \over C_p (\omega_p^2 - \omega_s^2)} + R } + i C_p \omega_t \right)^{-1}$$</span></p> <p><span class="math-container">$$Z_t = \left( { 1 \over {-i \omega_s^2 + i \omega_t^2 \over \omega_t C_p (\omega_p^2 - \omega_s^2)} + R } + i C_p \omega_t \right)^{-1}$$</span></p> <p><span class="math-container">$$Z_t = \left( { 1 \over {i (\omega_t^2-\omega_s^2) \over \omega_t C_p (\omega_p^2 - \omega_s^2)} + R } + i C_p \omega_t \right)^{-1}$$</span></p> <p><a href="https://www.wolframalpha.com/input/?i=solve%20Z%20%3D%20%281%2F%28%28i*%28t%5E2-s%5E2%29%29%2F%28t*C*%28p**2-s**2%29%29%2BR%29%2Bi*C*t%29%5E-1%20for%20C" rel="nofollow noreferrer">Still hairy</a>, unless again <a href="https://www.wolframalpha.com/input/?i=solve%20Z%20%3D%20%281%2F%28%28i*%28t%5E2-s%5E2%29%29%2F%28t*C*%28p**2-s**2%29%29%29%2Bi*C*t%29%5E-1%20for%20C" rel="nofollow noreferrer">removing <span class="math-container">$R$</span></a>:</p> <p><span class="math-container">$$Z_t = \left( {\omega_t C_p (\omega_p^2 - \omega_s^2) \over i (\omega_t^2-\omega_s^2)} + i C_p \omega_t \right)^{-1}$$</span></p> <p><span class="math-container">$$C_p Z_t = \left( {\omega_t (\omega_p^2 - \omega_s^2) \over i (\omega_t^2-\omega_s^2)} + i \omega_t \right)^{-1}$$</span></p> <p><span class="math-container">$$C_p Z_t = \left( {\omega_t (\omega_p^2 - \omega_s^2) + i^2 \omega_t (\omega_t^2-\omega_s^2) \over i (\omega_t^2-\omega_s^2)} \right)^{-1}$$</span></p> <p><span class="math-container">$$C_p Z_t = { i (\omega_t^2-\omega_s^2) \over \omega_t (\omega_p^2 - \omega_s^2) - \omega_t (\omega_t^2-\omega_s^2) }$$</span></p> <p><span class="math-container">$$C_p Z_t = { i (\omega_t^2-\omega_s^2) \over \omega_t (\omega_p^2 - \omega_s^2 - (\omega_t^2-\omega_s^2)) }$$</span></p> <p><span class="math-container">$$C_p = { i (\omega_s^2 - \omega_t^2) \over \omega_t Z_t (\omega_t^2 - \omega_p^2)} \tag {13}$$</span></p> <p>This is a little better!</p> <p>I threw together an <a href="https://gist.github.com/bitglue/62526fb031dd0f75e423dacc344de5c9" rel="nofollow noreferrer">ugly script</a> to check the math, using the values from W0QE's video, and the numbers seem to add up.</p> https://ham.stackexchange.com/questions/16960/-/18778#18778 2 Answer by Aleksander Alekseev - R2AUK for How to measure quartz crystal motional parameters using a VNA? Aleksander Alekseev - R2AUK https://ham.stackexchange.com/users/13598 2021-08-10T14:23:16Z 2021-08-10T14:32:01Z <p>Alan Wolke, W2AEW, explained this topic very well in one of his videos: <a href="https://www.youtube.com/watch?v=G9zZRNzhsEE" rel="nofollow noreferrer">Measuring Crystals with NanoVNA and other tools</a>. Alan shows several methods. Personally, I measure:</p> <ul> <li><strong>C0</strong>: directly with a suitable RLC-meter. If you don't have one or are in a hurry, assume 2.5 pF, that will be good enough. VNA can be used for the task if it's capable to measure the impedance in pF range. Some VNA / antenna analyzers can't do it.</li> <li>for <strong>Cm</strong> and <strong>Lm</strong> I use the G3UUR method, as the most accurate one. This requires a frequency counter or an SDR receiver. If you have only a VNA, you can use it as a receiver with a suitable attenuator to measure the generator frequency. This method is very well described in the video.</li> <li><strong>Rm</strong>: I use a spectrum analyzer for this. I discovered that by looking on S21 you can quickly discard the crystals with low Q. Also grouping the crystals by the resonant frequency that the spectrum analyzer shows seems to work better for building crystal filters than using the frequency of the G3UUR generator. Rm is calculated from S21 as <code>2*50*(pow(10, -S21/20)-1)</code> where 50 is your system impedance. E.g. if <code>S21 = -0.93</code> then <code>Rm = 11.3</code> Ohm.</li> <li><strong>Q</strong> can be calculated as <code>2*pi*F*Lm/Rm</code>. Crystals with Q less than 100 000 are no good for crystal filters, but are fine for oscillators. Usually, I calculate Q for 3-5 crystals, and estimate it approximately for the rest crystals I have to sort by S21.</li> </ul> <p>You can find a little more details on how I personally do it in <a href="https://eax.me/crystal-measurements/" rel="nofollow noreferrer">this blogpost</a>. It's in Russian, but the schematics and formulas are self-explanatory. As a side note, the Internet is not the best place to look for the answers to the questions like this one. Consider having &quot;The ARRL Handbook&quot; and &quot;Experimental Methods in RF Design&quot; on your (perhaps, digital) bookshelf.</p>