let's do something a bit out of my wheelhouse and design an antenna! 🧵
this is an inverted F design which is pretty common for 2.4GHz antennas used in mobile devices.
let's do something a bit out of my wheelhouse and design an antenna! 🧵 this is an inverted F design which is pretty common for 2.4GHz antennas used in mobile devices. 49 comments
i made up a little drawing and have transferred it to a small piece of copper-clad FR4 circuit board using a very sharp knife. then, with the knife, i pulled up corners on the copper that needs to get removed, and peeled it away. i've removed all the copper underneath the antenna on the back of the board using the same technique. the app note wants me to have a bunch of vias connecting the two copper planes, so i used a very fine PCB drill and a Dremel Stylus (RIP) to make these holes. here's a technique i'm trying for making my own vias. i snip off part of a component lead (like a capacitor or something) that fits through the hole snugly, then cut it off, leaving ~0.5mm protruding from both sides of the board. then i clamp it tightly in a vise to smoosh it down. for the antenna connection, i've soldered some very thin coax to the launch. the other end was pre-terminated to an SMA connector. you can often buy these online as U.FL to SMA adapters; just snip off the U.FL connector. (the ferrite beads limit common-mode currents.) let's see how it performs on my cheap NanoVNA. for the frequency of interest, i want the SWR to be as low as possible. here we are hitting SWR=1 at 2.08GHz. this frequency is below my target of about 2.4GHz. to increase the frequency, i removed some of the tail of the F until the frequency shifted up to around 2.4GHz. it's always easier to remove material than to add it back, so it's a good idea to start longer than what you think you need. now for the sorcery part: to get a rough idea of the polarization of the antenna and to make sure it is radiating, i've switched the VNA to log-mag S11. the metal thing in the foreground is a pair of scissors (really!) which, when i hold it nearby, absorbs energy and causes the S11 to fall. let's try another angle. holding the scissors perpendicular to the "F" shape, the S11 dips strongly (compare to the previous image). i like these because the handle is insulated so my body capacitance doesn't get too involved. from the NXP app note, the radiation pattern looks like this. i'm sure there's a correlation with the scissors pattern but i'm not smart enough to understand it. @tubetime maybe the spiral out reflects the way it bulges as you go up from the bottom along the vertical plot axis @tubetime this is a perfect case for OpenEMS. I think there's even a tutorial you only need to slightly modify. @tubetime in fact the emitting part is the vertical middle part. The long open wire act as a capacitor. @tubetime Nice experiment! From my experience, I would have expected the null to be along the X axis, but the radiation pattern shows it on the Y. Yeah, I'm really bad at RF, it's basically wizardry for me. EDIT: I have checked and yeah, in fact the radiation pattern is correct, so I can confirm I am really bad at RF. continuing on, @hennichodernich suggested i try out OpenEMS. it's a bit hard to use; i can't just sketch out the shape of the antenna and use it. i have to create it with code, but that code means it can be parametric. here's what the resulting antenna looks like. side note, to get openEMS to work, i had to downgrade my numpy version to 1.26.2. (yes, i know i'm supposed to be running Python with venv in a chroot jail in a Docker container under vmware, but i just want software to work...) the sim appears to work, S11 looks reasonable. it's dead on at 2.4GHz. now i'm curious as to why i had to shorten the antenna on the PCB so much. perhaps the dielectric thickness didn't match up, or maybe the trace was too wide (i didn't cut it precisely to 1mm) @tubetime Did you calibrate out the effects of the thin coax cable? @tubetime It could also be caused by the anisotropic material (eps_z neq eps_xy) which FR4 is famous for most likely it is a difference in dielectric constant, slight dimensional differences, and the coaxial cable interacting with the VNA calibration. i calibrated to the end of the blue cable but this doesn't account for the thin coax. the antenna doesn't have a matching network either which will have an impact. figured out the problem! I neglected to include the thin coax in my calibration. it's much better now, I've even restored it nearly to the original length, and the impedance match looks better as well. open and short at the end of the coax was easy but for the 50 ohm load I had to solder this tiny smd resistor. another way is to calibrate to the end of the SMA cable and use the "electrical delay" setting. this didnt work well for me. I'm used to larger, more professional VNAs that let you adjust it with a knob and watch the Smith chart in real time. the NanoVNA makes you play a game of Guess-The-Number... @tubetime you should be able to measure the electrical length with the far end open (or shorted) by measuring the phase and halving it. Would be nice if the tool could do it for you though! I have some QoL ideas like this I keep meaning to try implementing in my nanoVNA after using it at work a bit @Darius yes it might actually be good enough to do it that way. i'll have to experiment some more. @dtelder it's 50 ohms but it is longer, so the calibration plane needs to move. @tubetime @dtelder i'm not 100% sure myself about why it caused a frequency shift, but you may be right about it being part of the antenna. the ferrite beads along the thin coax are supposed to prevent RF currents from flowing along it, but it's not perfect. @tubetime a couple of weeks ago I tried to make a 1.7GHz patch antenna, I got the resonance right after the second try but until today I haven’t figured out why the impedance is wayy off… @tubetime isn't a venv easier to get to work than system python... @whitequark how many versions of python exist on an average desktop ubuntu install. hmm @tubetime probably one? system python is there for system packages and not for you, counterintuitively (which is the cause of much confusion and strife. I wish it wasn't on PATH given that...) @whitequark maybe analogous to using a cross compiler vs the system compiler. @tubetime I'm used to rustc and clang, which make no distinction between the cross and native compilers >.> (to be fair, there is a little bit of magic in native clang that tells it where to find the libs, but also I wish it wasn't needed...) @tubetime @hennichodernich There is gerber2ems which might be helpful (https://github.com/antmicro/gerber2ems) @tubetime You make all of that look deceptively simple, good job! The vna on curve mode instead of smith would have given prettier graphs, but thats a minor detail. @tubetime is .. the orientation of the F actually significant? In my early (2010) PCB days on the yahoo PCB group, DJ Delorie made vias out of actual rivets. Which Google can no longer find, but this is similar https://youtu.be/CvO5JaOkEXI?si=bE7Fc3oXGlHPFFp_ |
i'm starting with a design from an NXP app note. https://www.nxp.com/docs/en/user-guide/UM10992.pdf (see page 15)