The engineer and the librarian

27.11.2020 23:01

An engineer walks into a library and steps to the reference desk. "Good morning, sir. How may I help you today?" asks the friendly librarian. "I'm an engineer. I'm looking for some references on the types of bridge constructions. Could you find something for me please?" he says. "Of course sir, I know exactly what you are looking for. It will be just a moment."

True to his word, the librarian quickly returns with a stack of books. "Will you be taking these to the study room or checking them out sir?" The engineer picks the top book from the stack in surprise and shows it to the librarian. "This is a children's picture book. Don't you think I'm a bit too old for this?" The librarian isn't thrown off by the question. "It has large letters and is very easy to read. Even many middle-aged readers find large print books more pleasant to read" he answers. "That's very considerate of you, but thankfully my vision is fine so far." says the engineer. "I'm not sure you understand what I'm looking for. How does this even relate to bridges?" The librarian takes the book and opens it. There's a drawing of a family of ducks crossing a bridge over a stream. "See, it's right here on the first page? The topic you were looking for. Is there anything else you need?"

The engineer and the librarian.

The engineer is confused for a moment, but decides to drop the matter. He puts the picture book aside and takes the next one from the stack. It's a pocket dictionary. "I'm not sure how this one will help me either." asks the engineer. The helpful librarian has an answer at hand "Compared to the other books I found this one easily fits in your pocket. You can carry it around and read it on the go. I find many people like to read on the bus for instance." He opens the dictionary and shows it to the engineer. "You will find the definition of bridge under "B" right here."

"Ah, I think I see where the problem is. I'm more interested in books that have more content specifically about bridges. Format isn't that important." says the engineer. "I understand, sir. I'm sure the next book I found for you is the right one." answers the librarian and hands him another book from his stack. The glossy hardback cover promises a suspenseful crime novel. "This looks like fiction". "Indeed it is sir. This is one of our most popular books and from a best selling author. I'm sure you'll enjoy reading it." the ever friendly librarian replies. "Well, yes. But I want to learn about bridges you see, not read murder mysteries." says the engineer. The librarian looks at him in confusion "I'm not seeing the problem here sir. Most of the story revolves around a murder on the Brooklyn bridge. That is the topic you asked me for, isn't it? Most people that check out this book are happy with it".

The engineer rubs his forehead in frustration. "Maybe you're right. I wasn't clear enough that I was looking for non-fiction" he says to the librarian. "Is that a newspaper you are holding now?" "Indeed it is sir. It's from our selection of periodicals. Compared to these other texts that were all published at least several months ago this one is very fresh, just printed and delivered to us this morning. There's a news article on a local bridge renovation project on the third page I'm sure you'll find informative. It's always good to keep up-to-date on the topic of interest, don't you think?"

"Not really what I was looking for." says the engineer. "It's so unfortunate that you removed the dedicated engineering section you had here" he adds and points to the now empty desk down the hall way. The librarian looks at him and explains. "Not at all sir. We find that most people who visit our library find it less confusing if all kinds of literature are available from one desk." The engineer thinks about it for a second. "Did you bring any books from the engineering section in that stack?". The librarian smiles back. "Sorry sir, we are a modern library and no longer shelve books based on classification." He hands him another book. "However I believe this one is indeed on an engineering topic". The engineer sighs after taking one look and hands it back "This is a book on ship building. I'm interested in bridges." The librarian remains undeterred "Ah yes, but I'm sure you'll find this book useful if you take a second look. If you want to cross a body of water, a ship will do it as well as a bridge."

They go through the rest of the stack of books without any success. The engineer stresses that he is only interested in bridges and asks the librarian to fetch him another stack of books. And another. Ever more random books get picked up by the librarian and they get no closer to the topic the engineer was interested in. At last, the engineer gives up. He thanks the librarian for his help, but silently vows not go visit this library again. He tries his luck in the other library in town. The second librarian is a bit less friendly and less forthcoming with his explanations of why he thinks the books he found were something the engineer would like. He also turns out to be no more capable of finding a useful book on the topic than his colleague. Running out of options, the engineer returns home, disappointed that he has not found any literature to help him work on his problem.

Later that week he borrows a book from a friend of a friend. The book has a worn out cover and the paper is yellow at the edges. It has been published 50 years ago. The print is small and sometimes uneven. Back-and-white figures look like they have been drawn by hand. The text is dry and sometimes hard to understand. But on page 218 it has a chapter that helps him solve the problem he has been working on.

Posted by Tomaž | Categories: Ideas | Comments »

About the extra ohm in 50 Ω calibration loads

23.11.2020 19:30

I've recently stumbled upon this thread in the NanoVNA forums. Glen Jenkins points out that the 50 Ω calibration load that was shipped with the NanoVNA measures about 51 Ω on the multimeter. The thread contains quite a few replies that attack or dismiss this concern. It's sad that some see striving for better measurements as pointless for anyone outside of a metrology lab. Anyway, I think the question of why the load does not measure closer to 50 Ω is a valid one. I've written about cheap 50 Ω terminators before, but this story has more to it than someone simply using a standard E24 resistor.

I've found two interesting comments in that thread. Hugen replies that the loads shipped with NanoVNA-H4 are intentionally using a slightly too large resistor to offset parasitic effects at high frequencies. Supposedly they are designed so that the return loss is better than 40 dB up to 1 GHz and better than 30 dB up to 6 GHz. Later David Eckhardt shares some resistance measurements of precision Hewlett Packard calibration kits using different multimeters. Those kits don't measure perfectly 50 Ω at DC either, although it is unclear to me whether that is an error due to inaccurate multimeter measurements, or an intentional design decision.

The no-name SOLT calibration kit.

Earlier this year I bought this no-name SOLT calibration kit for around 50 €. The load from this kit measures 51.3 Ω at DC on my Keysight U1241C multimeter (with the effect of the leads nulled). For comparison, the load that came with my NanoVNA-H measures 51.0 Ω using the same method. My calibration kit also came with recorded measurements of all the included standards that look like they were made on a professional VNA. I have no means of verifying that these measurements are actually correct and have not, say, just been copied from some other more expensive set. Let's just assume they are genuine for a moment.

The load standard came with a 9-point VSWR measurement that looks like this:

VSWR measurement that came with the load standard.

Unfortunately, it's impossible to calculate the full complex impedance of the load back from the VSWR. However, if I take some liberty in choosing the sign of the reflection coefficient and assume that the load impedance only has the real component I can get the following impedance vs. frequency curve for the load that matches the VSWR measurement:

Load standard impedance derived from the VSWR measurement.

The impedance starts above 50 Ω, then dips below and starts rising again toward the high frequencies. The interesting thing here is that if you extend the impedance curve down to DC it indeed crosses the axis at about 51 Ω, just like my multimeter measurement.

Let's say that the shape of this impedance curve is constant, but we can arbitrary choose the starting point at DC. In other words, assume that the shape is due to some unavoidable parasitic effects inside the resistive material, SMA connector or the casing. However we can shift the curve up and down by choosing the dimensions of the deposited resistive trace.

This is how the worst 0 - 6 GHz return loss of the load looks like depending on the choice of the DC resistance:

Worst case return loss versus DC resistance.

As you can see, the optimum choice is right around 51.3 Ω, just like what I actually measured on the load. With DC resistance chosen like that, the load has -30 dB or better return loss from 0 to 6 GHz. The same load with DC resistance chosen to be perfectly 50 Ω would indeed have a better return loss at DC, but it would also have about 3.5 dB worse return loss overall. Hence it would not meet the same return loss specification.

Perhaps this explanation is a bit handwavy. I make some arbitrary assumptions and I've used data from a different calibration kit and not the one that comes with NanoVNA. However it does in principle support what Hugen said in the forum thread. The fact that a load does not measure 50 Ω at DC can be an intentional decision to meet some specification and not a sign of cost cutting or poor engineering.

Posted by Tomaž | Categories: Analog | Comments »

Measuring Henrik's RF bridge

19.11.2020 17:03

I've recently made a copy of a bridge-based directional coupler that was published by Henrik Forstén on his blog. After some difficulties with soldering the components I now have one fully assembled device. The question is of course whether it also functions correctly. Along with his designs Henrik also published the results of some measurements of his couplers with a professional VNA. Unfortunately I don't have access to an instrument like that. Nonetheless I performed some similar measurements with the equipment I have at hand and tried to compare the performance of my copy with the original.

Henrik's RF bridge connected to a NanoVNA-H.

The first test I did was to measure the S-parameters. I replicated Henrik's measurements with a NanoVNA-H. I measured the coupler as a two port device. For each pair of ports I connected one port to CH0 and the other to CH1 while terminating the third port on the coupler with the calibration load that came with the NanoVNA.

Measured gain S-parameters of Henrik's RF bridge.

Ports are numbered as following: 1 - DUT, 2 - IN and 3 - DET.

S12 is the through path from signal generator to the device-under-test. Ideally it should be 0 dB (I think a more correct value to show here would be S21, but Henrik shows S12 - in any case, the difference is minimal). S13 is the coupled path for the reflected wave to the detector. The design of the bridge sets this at -16 dB. S23 is unwanted coupling of the forward wave to the detector. Ideally it should be at minus infinity dB. My measurements are the thicker lines that go up to 1500 MHz (the limit of my NanoVNA). Henrik's measurements with a commercial VNA are the thinner lines. They extend up to 10 GHz so only a small part is shown.

As you can see, the gain measurements match almost perfectly for the small frequency range that I could cover. Directivity (S13 - S23) is better than 25 dB.

Measured reflection S-parameters of Henrik's RF bridge.

The reflection part of S-parameters doesn't match that well. Again, the bold traces that go to 1500 MHz are my measurements while the faded out lines are taken from Henrik's graphs. I'm seeing around 10 to 20 dB worse return loss.

I don't know whether this due to a problem with my measurement or a problem with my bridge construction. On one hand, I suspect that NanoVNA can't compensate for imperfect matching of CH1 in two-port measurements. It implements only one-half of a full two-port VNA and lacks the CH1 reflection measurement it needs to compensate for that. On the other hand, later measurements also show that impedance matching seem to be a persistent problem in my setups.


Next test I did was the same scalar directivity measurement that I did with the "Transverters Store" bridge. I used ERASynth Micro as a signal source connected to IN and a rtl-sdr DVB-T dongle as a power detector connected to DET. I measured the power when the DUT port was terminated with a short and when it was terminated with the calibration load from the NanoVNA set. Estimated directivity was the ratio of these two measurements.

Comparison of the directivity of Henrik's and Transverters store bridges.

Comparing the two bridges it appears that the Transverters bridge has a higher directivity at low frequencies. However above 1 GHz Henrik's bridge works better. Based on the construction of the two devices that kind of makes sense. I'm not sure what's with the directivity spiking up like that at 1500 MHz. Anyway, I don't plan to use this bridge for scalar measurements since I now have a vector setup. I was just curious how it compares to the old bridge.

Assembled rtl-sdr vector measurement setup with Henrik's bridge.

Finally I performed a 1-port short-open-load calibration of my vector measurement setup using the new bridge and the NanoVNA calibration kit. The graph below shows the error network terms that I calculated from the calibration measurements using scikit-rf. Again, Henrik's results are shown as well for comparison.

Error network terms when using Henrik's bridge.

This isn't a comparison of bridge performance but rather of the whole measurement system, since these error terms include the effects of other components as well. Obviously the two systems are completely different in these two cases, but still it gives some idea of how well my setup performs compared to Henrik's home-made VNA.

Note that the directivity in my previous scalar measurement is defined slightly differently than here. It is roughly equivalent to reflection tracking divided by directivity from the error terms graph. Slide 48 in the Agilent Network Analyzer Basics presentation has a good illustration of the meaning of the error terms.

A difference in reflection tracking is expected since my and Henrik's VNA probably have different overall gains in the system. I'm happy that it's reasonably flat, meaning that the losses in the bridge don't increase much towards higher frequencies.

My directivity seems slightly better and this result also shows a peak at around 1500 MHz that I saw in the scalar measurement. Source match is roughly 20 dB worse. This agrees with the NanoVNA measurements that have shown quite a bad reflection loss on all bridge ports and also my previous results showing that overall I have quite bad matching in the whole system. I might experiment a bit with this in the future and try to correct it.

Error network terms when using Transverters bridge.

For another comparison, here are the error terms calculated using the same method, but using the "Transverters Store" bridge. Here the bridge starts attenuating the signal towards higher frequencies, and hence losing the effective directivity. The source match seems to be better at low frequencies though.

In conclusion, my copy of the bridge design seems to work just fine. Its effective directivity is around 25 dB in the range I was able to measure. The multiplex board doesn't seem to affect it much and the only problem seems to be relatively poor 50 Ω matching, but that might be because of my other equipment. For low frequency measurements below 1 GHz using the Transverters Store bridge should yield better results. A true test of the new bridge however would be at higher frequencies, beyond the 2 GHz that my current setup is able to handle. The only limiting factor is the rtl-sdr receiver however. I plan to get a better one though in the future and that should enable me to make measurements up to 6 GHz. Judging by Henrik's results the new bridge should handle that as well.

Posted by Tomaž | Categories: Analog | Comments »

Assembling Henrik's RF bridge

15.11.2020 10:54

Last week I wrote some thoughts on the design of a bridge-based directional coupler that was published by Henrik Forstén. I re-drew his Gerber files with some minor modifications so that I could order a copy of the PCB and make a coupler to use with my measurement setup. The PCBs and the rest of the components arrived as planned and I spent a morning assembling everything together. As I suspected, it was quite a challenging soldering job. Here are some notes on how it went.

Bare printed circuit board for the RF bridge before assembly.

I ordered the PCBs at AISLER. I was surprised to see that they arrived in a little extra breakaway frame you can see above. The width of the PCB is right at the 15 mm limit of what they accept for manufacture, so the frame might be related to that. Or it might be to protect the thin and fragile-looking board from damage during shipping? In any case, all the PCBs arrived in good condition. Unfortunately, the breakaway tabs were again right at the spots where edge-mounted SMA connectors go, so some sanding was necessary after removing the frame.

Fully assembled RF bridge circuit board.

Soldering the components on the PCB was really tricky - it's a hellish combination of tiny 0402 components, large thermal mass of the SMA connectors and a coax cable with a heat-sensitive insulation. I did it all with my soldering iron and rosin-core Sn-Pn solder. Hot air seemed like a bad choice because it would be hard to avoid heating up the coax too much.

I soldered components in the following order:

  1. Tack each SMA connectors in one spot just to hold it in place. This is because if any solder gets (accidentally) deposited onto their footprints it's hard to fit them on the edge of the board.
  2. Solder all the 0402 resistors.
  3. Solder the coax cable on three spots, leaving only the ground/shield connection at the IN port unsoldered and unconnected. After the shield makes contact to the ground at that point it's impossible to measure with a multimeter if the R3, R4, R5 and R6 are correctly soldered.
  4. Finish up soldering of the SMA connectors.
  5. Verify that all legs of the bridge have their expected resistances, fix anything that's wrong.
  6. Solder the shield of the coax to the ground plane, verify that there is no short between coax core and shield.

Soldering 0402 parts requires a very fine soldering iron tip, however that will not have enough power to heat up the connector and the ground plane. Hence I ended up exchanging tips a few times during assembly. I also adjusted the temperature of the iron as low as I could get it while still melting the solder each time I was doing anything in proximity to the coax cable.

I still messed up the coax once and had to start over. Henrik lists RG-405 coax in his BOM, but I couldn't get this type for a reasonable price and used a type that looked similar. This one has FEP insulation and isn't as heat sensitive as some other cables I've worked with, but it will still soften and melt through if you're not careful.

Positions and values of resistors on the RF bridge board.

The spot that gave me the most trouble is the gap where R3 and R4 are placed. Here you have two tiny chips between two huge blobs of solder - the coax shield on one end and the SMA connector shield on the other. I was constantly getting a short with a solder bridge over the gap and the resistors simply floating away on the melted solder. Any solder bridge at that point is hard to remove since it's hard to melt both ends at the same time and not ruin the coax in the process. It took a lot of tries to get to something that wasn't absolutely terrible.

If I would be redoing the PCB I would leave a bit more space for R3 and R4. I had no such problems with R5 and R6 which only have one end embedded in the blob that's holding the coax shield. Also, there's really not enough space to properly land the coax core onto the PCB trace. On the input side the best I could do was to solder the core directly onto the connector pad. On the other side it landed onto the R1. So it would probably be better to leave out the small stubs altogether.

I also suggest changing the connectors to a gold-plated variant. I'm not sure if mine were dirty, but I had problems getting the solder to properly wet their pins. I had no such problems with similar, gold-plated ones on the multiplex board.

A minor thing that bothers me is that ferrite cores are just rattling around. By the ludicrous amount of packaging Mouser put them in for shipping I suspect they get chipped easily. Replacing them would be a nightmare. I'll probably make a small enclosure that will fit snugly over the cut-out to hold the rings and protect them.

In conclusion, assembling these bridges isn't simple. As promised, I've published my modified designs if you want to make your own. After some initial experiments I'm very happy with my copies. I'll publish some measurement results later, but so far they seem to behave very similarly to what Henrik's measurements show.

Posted by Tomaž | Categories: Analog | Comments »

NanoVNA-H output signal level

11.11.2020 19:13

When searching the web for the stimulus signal level that is present on port CH0 of NanoVNA, most results seem to refer to the RF output figure given in the User Guide: between -13 and -9 dBm. I've seen posts also specifically claim that NanoVNA is suitable for measuring active components because of the low signal level at which it performs measurements:

"Basic performance" section of the NanoVNA User Guide.

However there seem to be a lot of different NanoVNA variants floating around, differing in both hardware and software. It's always good to double check these things. This is how the output signal of a NanoVNA-H I have (firmware version 0.4.5-1-gfbbceca, PCB revision v3.4) looks on an oscilloscope. CH0 on NanoVNA was connected to a 50 Ω terminated input on the scope. NanoVNA was set to CW stimulus at 1 MHz:

Output waveform of NanoVNA-H CH0 at 1 MHz.

The measured RMS voltage is 326 mV, which is around 3.3 dBm at 50 Ω. Much higher than what is stated in the manual. It falls slightly with frequency. At 10 MHz I've measured 2.8 dBm. This is still uncomfortably high. For example, it will likely damage a HackRF if you tried to measure the return loss of its antenna input. The E4000 tuner in an rtl-sdr has a absolute maximum RF input level of 10 dBm, so strictly speaking it will probably survive. Still, any kind of S11 measurement will show much worse results than in real life for low-level signals since it will overdrive the RF front end of the receiver.

According to this post, some versions allow you to set the signal level from the user interface or by using serial commands. As far as I can see my version only supports the serial command method.

These are the output levels I measured at 1 MHz using different power settings. For some reason the power serial command doesn't work if the NanoVNA is in the CW stimulus mode - the command only had an effect if I sent it when full sweep was enabled on the device. However after the command was accepted, the output power in CW mode was also affected:

serial command RMS voltage [mV] power @ 50 Ω [dBm]
power 0 88.7 -8.0
power 1 173 -2.2
power 2 253 1.1
power 3 324 3.2

From this it seems that power 3 setting is the default at power on. As you can see, there's really not much difference between the settings in the logarithmic scale. Even the lowest setting is still higher than what is stated in the manual. I also wouldn't trust these results too much. From what I read the output power is adjusted relative to output frequency and I can only measure it at the very low end. Hence I don't plan on using NanoVNA for measuring any kind of sensitive components.

Posted by Tomaž | Categories: Analog | Comments »

S21 curves for SMD resistors

09.11.2020 20:19

Some time ago I've stumbled upon the following figure that appears in the Building VNA Calibration Loads video by W0QE. The discussion about it starts around the 13:42 mark. It supposedly comes from some work done at CERN. The "Fig 2" in the caption suggests it appears in a paper, but after searching for it I've failed to find a public source.

S21 curves for 1206 SMD resistors.

Image by W0QE

What this measurement shows is how the impedance of surface mount resistors of different values change with frequency. If the resistors would be ideal all values would have perfectly parallel horizontal lines. However at high frequency the plots for high value resistors curve upwards. The line that they approach asymptotically is one of a 50 fF parasitic capacitor that appears across the resistor. On the other hand, the line for a 0 Ω resistor curves downwards due to parasitic inductance. W0QE discusses the resistor model in more detail, so watch the video for the full explanation.

According to this result the 100 Ω resistor is best at maintaining constant S21 towards high frequencies. This is the base of the argument that making a 50 Ω termination with two parallel 100 Ω resistors is best, and more accurate than using a single 50 Ω resistor or four 200 Ω resistors.

Some thoughts on this: the caption says that S21 curves shown are for 1206 size resistors. Very likely they look differently for other sizes since the parasitics will change with physical dimensions. Hence the optimal choice of a termination resistor might be different if using other sizes.

Another thing that W0QE doesn't mention is that the lines also curve towards the low frequency end of the scale. I suspect this is some kind of a measurement error. I see no reason why a resistor would not have the correct value at DC. This feature also does not appear in W0QE's simulation that is also shown in the video alongside this experimental result.

Anyway, the whole video is well worth a watch. I just wanted to give some more visibility to this particular figure and also have it here for my reference. Since it only appears in a video it's kind of hard to search for it. I already forgot where I saw it once and it's frustrating not to be able to find a thing I know I've seen somewhere when I want to refer to it.

Posted by Tomaž | Categories: Analog | Comments »

Notes on Henrik Forstén's RF bridge

06.11.2020 19:03

For my tinkering with vector signal measurements I've needed a directional coupler. So far I've been using the "Transverters Store" RF bridge for this purpose. Unfortunately I found it to be less than ideal above 1 GHz. Its design also requires the use of a separate, reference 50 Ω load on a SMA connector, which over time proved to be unreliable and an unnecessary source of problems. I've been wanting to replace it with something better. Mini-Circuits ZHDC-10-63-S seems to be a popular directional coupler with good performance, but it's either perpetually out of stock or not shipping to my part of the world.

I've recently stumbled upon Henrik Forstén's blog. He made his own home brew VNA and generously shared all the design documents, including those for his directional couplers. The directivity measurements he posted show that his couplers are significantly better at high frequencies than what I currently have. He saw better than 25 dB directivity at up to 5.5 GHz. Compare this to the Transverters bridge where directivity falls below 25 dB at around 1 GHz. Making my own copies of his couplers seemed like a straightforward way of improving my measurement setup.

A render of Henrik's Gerber files.

Henrik's coupler design is based on a 2015 IEEE article by Drobotun Nikolay and Mikheev Philipp (at the moment, the paper is freely accessible here). Similar to the Transverters board, the principle of operation is a based on a Wheatstone bridge with a balun made from a coaxial cable and ferrite beads. However the bridge topology as well as the balun design are quite different. This balun uses only one coaxial cable instead of two, and interestingly uses 3 different types of ferrites. The 50 Ω reference is integrated onto the bridge itself. The PCB design uses 4 layers. The coupling factor is 16 dB.

At first I thought getting the PCB made would be as simple as zipping up Henrik's Gerber files and sending them off to AISLER. Unfortunately that didn't work out. As much as I fiddled with the Gerber files I couldn't get the AISLER's on-line ordering system to accept them. I tried deleting the "CUTOUT" letters on the board outline layer and it didn't help. In the end it might have been the fact that the board is slightly narrower than the 15 mm minimum.

I ended up redrawing the whole thing in a PCB design program that-shall-not-be-named and making a fresh new set of Gerbers. In the end I think that turned out for the best, because it made me look a bit deeper into this design and do a few modifications.

Approximate trace impedances on Henrik's coupler design.

Henrik had his PCBs made using OSH Park 4 layer service. This process uses a high-frequency, low permeability substrate FR408. My AISLER boards will be made with the 4-Layer HD stackup which uses just plain old FR-4. So when redrawing the designs it occurred to me to also adjust trace widths so that characteristic impedances would stay the same.

One thing I could not figure out were these narrowed sections of the traces around the bridge section. The wider part of the trace is approximately 50 Ω based on OSH Park's process parameters. The narrower part is closer to 75 Ω. I'm not sure why the narrow part is necessary. I can't see it in the figures in the original IEEE article either, although authors don't provide a good picture of the final design so it's hard to say.

The only reason I can think of is thermal relief, to avoid the SMA connectors from sinking too much heat when soldering the resistors and the balun. Since the whole divider part is only around 4 mm across I doubt trace impedances play much role in signal integrity. 1/10 wavelength rule gives a maximum frequency of around 4 GHz for traces without a controlled impedance.

Annotated Figure 3 "Divider model" from Nikolay 2015.

Image by Drobotun Nikolay and Mikheev Philipp (modified)

Where the traces meet the SMA connectors they need to be widened so that the connector pin lands properly. The IEEE article mentions using microstrip tapers for better matching in this part. Henrik's design doesn't use these, however it keeps the connector center pin footprint at about 50 Ω by dropping the ground plane by one layer beneath the footprint.

Another difference I found between the paper and Henrik's design were the resistor values. The paper mentions that the resistor next to the balun needs to be about 10% larger (10.3 Ω) than the theoretical value (9.3 Ω) due to some unspecified effect of the balun. Henrik lists the uncorrected value in his BOM.

Another thing to note about the resistors is that the pads on the PCB fit tiny 0402 size packages. I suspect these will be quite a challenge to solder manually, especially since they're very close to where the coaxial cable lands. Actually, the whole coupler is just 40 x 15 mm - much smaller than it appears on the photos.

3D render of my copy of Henrik's bridge design.

In my modified design I've re-calculated all the trace widths to 50 Ω at AISLER's process parameters and left out the narrowed sections. I also slightly enlarged to board so that it's now exactly 15 mm wide and made sure that it complies with the 0.3 mm edge clearance design rule. I was tempted to switch to larger 0603 resistors, but I'm guessing these come with worse high-frequency response as well, so I left them at 0402. In the end I also added some helpful labels on the silkscreen print layer.

Now I'm waiting for the PCBs to be delivered. Thankfully I didn't have any problems ordering the exact ferrite types. Again I'm really grateful that Henrik went through the trouble of documenting his instrument and publishing the designs. We'll see how well my copies perform. After I assemble one and check that it works reasonably well I plan to also publish my modified Gerbers and BOM for anyone else that wants to make a copy of these devices using a FR-4 process.

Posted by Tomaž | Categories: Analog | Comments »

Vector measurements with the rtl-sdr, 7

16.10.2020 18:44

Looking back at my last few posts I feel that I was going into increasingly theoretic guesswork about the impedance mismatches in my rtl-sdr measurement setup. Even though I still think it could perform better, I would like to share some actual antenna measurements I made with it. I've also now got my hands on a NanoVNA-H, one of the many variants of the popular low-cost vector network analyzer. It's interesting to compare the measurement results between the two instruments.

The collection of antennas I've measured.

Yesterday I've measured the VSWR of a few compact LTE antennas. These antennas have an adhesive backing and are meant to be mounted into mobile devices that use the cellular network for connectivity. All of these antennas come with a coax cable tail that terminates with a female U.FL connector. This was a bit problematic since both my instruments terminate in a SMA connector. So to make a connection I've used a U.FL-to-U.FL "thru" on a RF demo kit PCB I got with my NanoVNA and another short U.FL-to-SMA patch cable.

I've calibrated both my rtl-sdr setup (vect-meas-mux in the following) and the NanoVNA with the short-open-load one port method. I've used the U.FL calibration standards on the same RF demo kit. This resulted in the calibrated measurement plane on the U.FL end of the U.FL-to-SMA patch cable. Hence the measurements include effects of the "thru" and the coax cable tail that was attached to each antenna.

Calibrating the reflection measurement setup.

The vect-meas-mux setup consisted of the ERASynth Micro, rtl-sdr, my custom multiplex board and the Transverters RF bridge as the directional element. It allows measurements up to 2000 MHz, with a gap around 1200 MHz, defined by the rtl-sdr's tuning range. It's the same setup as I described in the past blog posts in this series. The NanoVNA-H was bought from Nooelec and the particular version I have is no longer listed on their website. It shows firmware version 0.4.5-1 and allows measurements up to 1500 MHz. I transferred the S11 measurements from the NanoVNA to the computer using code based on this example notebook and then calculated VSWR from S11.

In the graphs below, the VSWR measured with vect-meas-mux (orange) and NanoVNA (blue) is compared to the VSWR given in the datasheet (black) of the respective antenna. I was mostly interested in how both instruments agree with each other and how well the results were repeatable. The datasheet curve is there as a reference. I wasn't expecting to get a good match. I took care to have a reasonably clean measurement environment: as much open space in all directions around the antenna as possible, antennas mounted on a non-conductive plastic holder, etc. However obviously that can't compare with a measurement in an anechoic chamber and random objects in the vicinity were affecting the results. I also didn't use a choke on the coax tail to prevent it from radiating.

VSWR measurement results for 2JF0624P antenna.

VSWR measurement results for 2JF0924P antenna.

VSWR measurement results for 2JP0424P antenna.

VSWR measurement results for SRFC015 antenna.

I'm pretty happy with how these measurements turned out. The results from my own instrument match those from the NanoVNA quite well. The agreement with the datasheet is often reasonably good as well although, as I said before, that's probably due to my poorly improvised environment around the antenna.

After doing many measurements the main problem with the rtl-sdr method turned out to be its slowness. NanoVNA displays the result nearly instantaneously. On the other hand a 200-point sweep from 55 to 2000 MHz with vect-meas-mux takes around 7 minutes and 30 seconds. Most of this is due to hugely inefficient way I collect signal samples from the rtl-sdr: I run the rtl_sdr binary once for each of the 200 frequency points. This results in the setup and tear down time of the rtl_sdr binary dominating the total run time. I only need to dwell on each point for about 100 ms, which would mean a sweep time of about 20 seconds. I'll probably rewrite my code to use the rtl_tcp server to fetch the I/Q samples, which should reduce the overhead significantly.

In the future I would also like to be able to estimate the error intervals of the measurement, like I did with my scalar experiments. Because this was a vector measurement and I used calibration, the relatively poor directivity of my RF bridge affected the results much less than with scalar measurements. A bigger factor was probably the limited dynamic range of the rtl-sdr. scikit-rf has some support for estimating error intervals, but I still need to figure out how to integrate that with my code.

I'm also looking for extending the frequency range of my measurements, but that will require switching to a more expensive SDR. Perhaps something like the HackRF or an USRP.

Posted by Tomaž | Categories: Analog | Comments »

Vector measurements with the rtl-sdr, 6

06.10.2020 19:58

This is another update on my project where I'm developing a system for vector signal measurements with the rtl-sdr. Back in August I was testing the performance of the time multiplex board I made. One of the more puzzling things I discovered then was that apparently the signal losses in the multiplexer varied a lot with frequency. I measured a dip in signal level of almost 10 dB at 1700 MHz. I expected a mostly frequency-flat characteristic due to attenuation on the PCB and in the MMIC switches.

The unusual variation in measured signal power from my previous experiment.

My first suspicion was that I messed up the design of the grounded co-planar waveguides (GCPW) on the board. After some research however I found conflicting information on that. Some sources say that my design is correct and others say it's not. I also got the impression that even if the trace dimensions I used were slightly wrong, they shouldn't result in the signal losses I was seeing due to relatively short trace lengths.

I currently don't have any professional RF equipment at hand. My gain (i.e. S12) measurements were done by using ERASynth Micro as a signal source and rtl-sdr as the detector. I measured the losses in the circuit board by routing the signal through the board, sweeping the signal in frequency at a constant output power, and recording the received power at rtl-sdr using rtl-power-fftw. I used a measurement of a male-to-male SMA through as a reference in an attempt to subtract any variability of ERASynth's output power and rtl-sdr's sensitivity.

Since I suspected that the variability in the gain I measured might also be due to impedance mismatches I did some further measurements with ERASynth and rtl-sdr to better understand what is going on. These measurements were performed in the same way as my previous one. ERASynth Micro was set to -40 dBm output level and was swept in steps from 55 MHz to 2 GHz. On each step, the rtl-sdr was tuned to the same frequency and the baseband signal power was measured with rlt-power-fftw (RF gain was set to 15 dB).

The picture below shows the six signal paths I measured:

Explanation of measured signal paths.

"thru" measurement was a single rigid male-to-male SMA adapter. "thru3" was a combination of 3 adapters (male-to-male, female-to-female, male-to-male). "gcpw" was a measurement of a single leg of the PCB trace on a spare board where I soldered a SMA connector in place of the switch IC.

During the measurements involving the assembled multiplex board the switches were powered up and configured to allow the signal to pass in the measured direction. Also worth mentioning is that for measurements involving both PCBs, two male-to-male adapters were also in the signal path (one on the ERASynth side, the other on the rtl-sdr side).

Following graph shows the results. In contrast to the graph above from August, this graph is not normalized in any way and shows raw values returned by rtl-power-fftw. The gap between 1100 MHz and 1250 MHz is the band to which rtl-sdr can't tune to. The results for the "ref in - det out" path had +10 dB added on this graph to make it comparable with other traces since this path goes through a 10 dB attenuator on the board.

Measured received power versus frequency for various signal paths.

These results show several interesting things. The first good news is that the two identical paths through both switches show nearly identical results ("ref in - dut out" and "dut in - det out" traces). This is reassuring. It's unlikely that my board isn't soldered well or that I damaged one of the switches.

The other interesting part is that all other traces differ a lot from each other. Even just adding two adapters changes things significantly ("thru" and "thru3" traces). This suggests that the variability I was seeing is due to some mismatch between the ERASynth and rtl-sdr and not the fault in my board.

It's also telling that the only path that involves an attenuator ("ref in - det out") shows the least variability and also seems to be lower or equal to all other traces. The attenuator provides isolation between the source and the load and reduces the impact of their impedance mismatches. It changes the situation from the mismatched load and source (where gain varies with frequency) to a mismatched load and mismatched source separately (where gain does not vary with frequency). Also, in contrast to the GCPW traces, I'm pretty sure I got the 50 Ω impedance of the attenuator correct.

k = \frac{u_{max}}{u_{min}} = 2.5 \qquad [8 \mathrm{dB}]
|\Gamma_g\Gamma_l| = \frac{k-1}{k+1} = 0.43 \qquad [-7.3 \mathrm{dB}]

The measured power in the un-attenuated paths at frequencies above 1 GHz varies for about 8 dB. This translates to a product of reflection coefficients of ERASynth and rtl-sdr of about 0.4 (-7 dB). I don't have any data for ERASynth. The datasheet for E4000 tuner in the rtl-sdr states a typical return loss of 15 dB for a 50 Ω system, but my rtl-sdr has some components in front of the tuner which might make it worse. I measured the return loss of my rtl-sdr at about 11 dB at 70 MHz, so 7.3 dB at 1 GHz combined with ERASynth doesn't sound too much off.

In summary, this all points to the rtl-sdr's poor 50 Ω matching to be the culprit. There are some ways I could make the frequency response flatter. The simplest solution would be adding another attenuator to the board in front of the DET OUT connector. I'm using the lowest RF gain setting on the rtl-sdr so there should be enough reserve in terms of signal level. I don't want to do anything more elaborate like a rtl-sdr specific matching network since I want this board to be usable with other small SDRs as well.

Anyway, I think I'll leave the multiplex hardware as it is for now. I still have some planned improvements on the clock recovery code. I've also found Henrik's blog and his wonderful posts about the homemade VNA. His project is orders of magnitude more advanced than mine, but some of the details he writes about are still very useful for me. Thanks to him I found out about the scikit-rf Python library which I will gladly use instead of my home brew calibration code. I also found his directional coupler design very interesting and I might eventually make a copy of it to replace the RF bridge I'm currently using.

Posted by Tomaž | Categories: Analog | Comments »

Weirdly clogged inkjet nozzle

30.09.2020 16:01

Recently I noticed some unusual red dots and lines on the printouts from my Epson L310. It was interesting because it seemed like extra dots were getting added to the paper. This is just the opposite of the usual problem of clogged nozzles. In that case, dots (or whole lines) are missing on the paper. The extra dots also looked well-defined and didn't look like ink was just getting smudged onto the paper by a dirty print head.

I've ran the nozzle check using escputil -n and this is how the test area looks like:

Epson L310 nozzle check printout with one magenta nozzle misaligned.

It looks like one magenta nozzle is spewing ink at an angle. At first I thought it was an electrical problem and somehow one nozzle got shorted to another. But this looks more like the ink from that nozzle gets deposited onto the paper a bit to the top and left from where it should be. The line from that nozzle looks a bit more blurry than the other ones, which also suggests that something is interfering with the ink flow.

I don't remember seeing something like that before. Anyway, I just thought that was interesting. So far it didn't bother me too much and maybe it will go away during printer's regular self-cleaning cycles. If it doesn't fix itself I'll probably try to clean it up manually.

Posted by Tomaž | Categories: Life | Comments »