Microcontrollers

Si5351 Library Mbed Port

A quick note to let you know that courtesy of David Mills, G7UVW, the Etherkit Si5351 Arduino library has now been ported to the Mbed platform. He reports that it seems to be behaving the same as the Arduino library, so if you’re an Mbed user, definitely go check it out. I was giving some consideration to making this port, but I’ve got so much other stuff on my plate at the moment that I just hadn’t got around to it yet.

Three cheers to David for this! Huzzah! Huzzah! Huzzah!

Coding

Si5351 Programming Flowchart

I recently received this nice flowchart in email from Joe Marin, CO7RR which documents a method for programming the Si5351. It looks slightly different from the way I do it in the Si5351 Arduino library and I haven’t personally tried it, so I can’t vouch for its accuracy, but I wanted to pass it along in the spirit in which it was offered. I have seen different algorithms used by different projects, so I know that there is definitely more than one way to do it successfully.

This reminds me that I get inundated with requests for help and bug reports/feature requests for the various open source code that I maintain, and it’s kind of difficult for me to stay on top of all of that, plus work on developing new products, as I’m mostly a one-man operation. I do try my best and thank you for your patience, as I know I don’t answer a lot of you as quickly as would be ideal.

Anyway, hopefully this will be helpful to others. Thanks Joe!

Coding, Etherkit, Microcontrollers

Break My New Library

I know that the updates here have been extremely sparse. For that I do apologize. Things are slowly starting to settle into a new normal around here, and I’ve been able to regain the ability to put time back into work. There’s a large to do list on my whiteboard, and many of the things on that list depend on improvements and bug fixes to the Si5351 Arduino library. So that has been my first priority as I dip my toes back in the water.

There were quite a few features of the Si5351 that the older versions of the library did not support, such as all of the 8 outputs of the variants excluding the A3 and the VCXO of the B variant. Also, there is a pretty big bug in how the tuning algorithm handles multiple outputs assigned to the same PLL, which causes tuning errors to crop up.

Therefore, I decided in one fell swoop that I needed to totally rewrite the tuning algorithm and add support for as many of the neglected features as I could before moving on to other projects involving the Si5351. Over the last month, I’ve been hacking away on the code in my spare time, and I’m glad to finally be able to announce that a beta version of the Si5351 Arduino v2.0.0 library is ready for public use.

Because it’s such a drastic change to the underlying code, I’d like to have it in limited beta release before doing a final release via the Arduino Library Manager. So that means that if you would like to try it (and I encourage you to do so), then you’ll need to install it manually, which isn’t terribly difficult.

Go here and click on the green button on the upper right that says “Clone or download”. Select “Download ZIP”. Next, find where on your filesystem your Arduino libraries folder resides and delete the existing “Etherkit Si5351” folder. Inside the ZIP file you just downloaded, there is a folder entitled “Si5351Arduino-libupdate”. Unzip this folder into the Arduino libraries folder, and then restart the Arduino IDE.

Since this is a new major version release, I took the opportunity to tweak the interface a bit, which means that you’ll have to adjust your current code to work with the new library (but fortunately not too much). You’ll find the details on how to do that here.

Please check out the updated documentation on the GitHub page, as it has been greatly expanded and should explain all of the new features in detail. Also, quite a few new example sketches have been added to the library, which you can find in the usual place in the Arduino IDE. I encourage you to try the new library in your existing projects, as it should be a bit more streamlined and stable. Also, there is plenty of opportunity to make new projects with the B and C variant ICs. If you do encounter any problems with the new library version, I would like to strongly encourage you to use the Issues feature of GitHub to let me know so that I can get on to fixing it as soon as possible. When I’m satisfied that there are no big show-stopper bugs in the code, I’ll merge it to the master branch of the repository and tag it for release via the Arduino Library Manager, but I need help in testing it before I can do that.

Once there’s a stable release of this version of the library out in the wild, then I’ll be able to move forward with other projects based on this Si5351. With any luck, some more interesting things will be coming from this shack again in the near future. Thank you for all of your help and support!

Edit: an exclusive look into the development process:

Etherkit, Microcontrollers

200,000 Miles Per Watt

If you wouldn’t mind, I would like to draw your attention to my latest post on the Etherkit App Notes blog. In it, I detail how to create a 10 milliwatt WSPR beacon using nothing more than the Etherkit Si5351A Breakout Board, an Internet-connected PC, and a low-pass filter. A simple project, but one that gives quite a bit of fun testing the ionosphere given the cost and complexity.

Selection_104

I don’t want to take away from the post, so I will advise you to go there to read it, but the bottom line is that with about 10 mW, I was able to get a signal decoded over 2000 miles away. I remember reading the old exploits of the QRPp gang in books like QRP Power, where you had to be really dedicated, organized, and good at decoding CW in the worst conditions. Now, we have the luxury of a mode like WSPR, which lets us do milliwatt propagation experiments without breaking a sweat.

One idle thought I had about this is whether it would be feasible to put this transmitter on the 13 MHz HiFER band (check out Dave AA7EE’s excellent treatment on the matter) and whether that would be something that would be fun and useful for schoolkids to experiment with. Of course, it’s technically feasible, but I would want to be sure that 1) it’s legal and 2) there would be interest in doing it. A single PCB could be made with one Si5351A output attenuated to around 4.6 mW and low-pass filtered for transmit, while another output could be used to drive a simple fixed-frequency receiver based on the SA612. Let me know what you think about this in the comments.

Etherkit

Si5351A Breakout Board TCXO Upgrade

I’m pleased to announce an upgrade to the Etherkit Si5351A Breakout Board with TCXO reference oscillator. In boards manufactured previous to today (and the ones kitted in the initial crowdfunded initiative), the TCXO used was a Fox FOX924B-25.000. It worked well and did the job it was supposed to, but has one flaw in certain situations. The compensation loop in this particular TCXO has relatively wide frequency adjustment steps that can become obvious when using the Si5351A Breakout Board in a very narrow band mode such as QRSS. Here is a screen capture from Argo showing the behavior of the Si5351A Breakout Board with the Fox TCXO when outputting a carrier on 28 MHz, from a cold start.

Fox FOX925B-25.000
Fox FOX925B-25.000

As you can see, as the TCXO is stabilizing to operating temperature, the compensation circuit adjusts the frequency in relative course steps of around 3 Hz or so. Once the TCXO is warmed up, it jumps around less often, but still does occasionally have to frequency correct, and does so in a jump of similar size. This TCXO is still fine for most other uses, such as a VFO for a SSB/CW radio, but doesn’t work so great for the MEPT modes, especially on the upper frequency range of the Si5351.

In the course of developing OpenBeacon 2, I determined that I would need to find a more suitable TCXO to use with the Si5351. After trying about five different oscillators, I finally found a fantastic substitute, and it only costs a bit more than the Fox TCXO. The Abracon ASTX-H11-25.000MHZ-T comes in a smaller package than the Fox FOX924B-25.000, but it will still fit on the footprint for X1 on the Si5351A Breakout Board. Here you can see the same test as above run for the Abracon TCXO.

Abracon ASTX-H11-25.000M
Abracon ASTX-H11-25.000M

It seems to find a stable frequency very quickly, and more importantly you can see that the compensation loop seems much tighter, with frequency corrections coming much faster and in smaller increments. You can only barely see a bit of fuzz from the frequency corrections on this low-bandwidth plot. This is much, much better for the MEPT modes.

As of today, all of the Si5351A Breakout Boards with TCXO option sold in the Etherkit store will have the Abracon TCXO, and the price will stay the same at $15.

Etherkit, Meta

Long Time, No See

I know. I was just starting to get some momentum posting to the blog on a semi-regular basis, and then — the drop off.

I am sorry about that. The Si5351A Breakout Board campaign consumed almost all of my work time. Given the limited amount of actual work time that I have, something had to give. So unfortunately it was blogging.

There’s also a bit more unfortunate news, as well as good news. The bad news is that I don’t foresee having the time to post as many posts as I would like, so for now, content will slow a bit. The good news is that is because I will be focusing my blogging efforts into the brand new Etherkit App Notes site at appnotes.etherkit.com. I’m going to be working hard to supply fun DIY projects that you can build using Etherkit products, starting with the Si5351A Breakout Board, and involving other Etherkit products as they come online.

In the meantime, it’s been very heartening to see all of the neat ways in which people have been incorporating the Si5351A Breakout Board into their own projects. For example, here’s a wonderful blog post and video from Mike N2HTT about how he constructed a multi-band VFO using the board and a 128×64 OLED display. I also received this link from Milan about how he use the board to clock his DVB-T dongle for SDR reception. It allowed him much greater frequency accuracy, as well as a way to slightly shift the ref osc frequency in order to see which signals are external and which are internally generated. All very neat stuff!

I won’t let this blog completely fade, but I will be putting most of my effort in to Etherkit-related work, so that’s where you’ll need to look to find most of my new content. Thanks for reading!

Etherkit

The Si5351A Breakout Board Campaign is Here!

I’m pleased to announce that I’ve opened up the Etherkit Si5351A Breakout Board campaign for contributions! Please stop by our Indiegogo page to get much more information on what we are offering, and how you can help to support us even if you don’t plan on purchasing a kit. We did a soft launch yesterday afternoon on Twitter and had a phenomenal response! We hit our initial goal of $500 of funding within about 6 hours of my initial Twitter post indicating that the campaign was open. With any luck, we should be able to hit the stretch goal by the time that the 30 day campaign has elapsed.

I would like to sincerely thank everyone who stepped up early to back our campaign and those who took the time to retweet, blog, and post about our campaign to listservs and other influential media people. I am utterly humbled by the level of support out there.

Update: As of 1600 UTC 12 Jan 2015, we have made the front page of Indiegogo as a trending campaign! Thank you to everyone who has supported us!

Indiegogo: Global Crowdfunding Engine to Fundraise Online - Mozilla Firefox_041

Update: As of 1830 UTC 12 Jan 2015, we hit the stretch goal. Less than 24 hours after launching the campaign. We are doing better than I expected! Time for me to get coding soon. 🙂

Si5351A Breakout Board | Indiegogo - Mozilla Firefox_043

Etherkit, Test and Measurement

Si5351A with TCXO Update

Just a few days ago, I finally received some of the TCXO parts that I’ve been planning on using with the Si5351A Breakout Board. I had no problem using one on the remaining prototype circuit board that I have, and at first glance it appeared quite stable and also very close to the nominal frequency (my correction factor for this one was only 8 Hz at 10 MHz).

Direct comparisons are always the best way to do things, so I ran the Si5351 with TCXO through my thermal chamber at the same profile that I did in the last test in my initial blog post. Rather than write a whole new blog post, I updated the original post to keep that data together, which will be handy for future reference. Go forth and look at the update at the bottom of the original post. Thanks!

Etherkit, Homebrewing, Test and Measurement

Si5351A Investigations Part 8

In looking through the analytics here on the blog, I noticed a search term that has been regularly coming up near the top: Si5351 crosstalk. Realizing that I haven’t yet presented data on this, it seemed like a good time to knock this one out, since it isn’t that difficult of a measurement to make.

It appeared to be a wise idea to choose output frequencies that were non-harmonically related, so I decided on the following outputs:

  • CLK0: 22.444555 MHz
  • CLK1: 10.140123 MHz
  • CLK2: 57.456789 MHz

Each output was set to the maximum 8 mA current and each one was locked to PLLA, which was set at 900 MHz.

The measurement procedure was simple. I connected the spectrum analyzer to each output sequentially. The unused outputs were terminated in 50 Ω. For each measurement, I used a delta marker to measure the difference in amplitude between the desired signal from that output and the frequencies of the other two outputs.

Without further ado, allow me to present the spectrum analyzer plots.

Output port: CLK0 Crosstalk signal: CLK1
Output port: CLK0
Crosstalk signal: CLK1
Output port: CLK0 Crosstalk signal: CLK2
Output port: CLK0
Crosstalk signal: CLK2
Output port: CLK1 Crosstalk signal: CLK0
Output port: CLK1
Crosstalk signal: CLK0
Output port: CLK1 Crosstalk signal: CLK2
Output port: CLK1
Crosstalk signal: CLK2
Output port: CLK2 Crosstalk signal: CLK0
Output port: CLK2
Crosstalk signal: CLK0
Output port: CLK2 Crosstalk signal: CLK1
Output port: CLK2
Crosstalk signal: CLK1

I thought that perhaps these measurements would be a best-case scenario, and that leaving the unused output ports unterminated might produce even worse performance, but it turns out I was wrong. Below are the same measurements, but with an open circuit on the unused ports.

Output port: CLK0 Crosstalk signal: CLK1
Output port: CLK0
Crosstalk signal: CLK1
Output port: CLK0 Crosstalk signal: CLK2
Output port: CLK0
Crosstalk signal: CLK2
Output port: CLK2 Crosstalk signal: CLK0
Output port: CLK2
Crosstalk signal: CLK0
Output port: CLK1 Crosstalk signal: CLK2
Output port: CLK1
Crosstalk signal: CLK2
Output port: CLK2 Crosstalk signal: CLK0
Output port: CLK2
Crosstalk signal: CLK0
Output port: CLK2 Crosstalk signal: CLK1
Output port: CLK2
Crosstalk signal: CLK1

I’m not quite sure what to make of that. In practice, I haven’t seen any problems in my receivers so far that I can trace back to crosstalk from adjacent channels. Of course, this probably won’t do in a higher-performing receiver, but if you wanted to use the Si5351 in such a receiver perhaps you could find a way to put two or more on an I2C bus at the same time, then use only one output from each. My advice would be to turn off any channels you are not currently using, just to keep the other outputs clean.

I have no doubt that this data will be more ammunition for those who are convinced that the Si5351 is a terrible LO. I stand where I always have: this is an excellent IC for the price and you are hard pressed to find such capability and stability for such a low price anywhere else. If, knowing its limitations, the Si5351 meets your needs, then excellent! If not, that’s fine too. Neither I, nor anyone else I have heard, has suggested that the Si5351 is a panacea or a substitute for a better oscillator such as the Si570. It’s another tool to be put into our toolbox in the quest to stay relevant with the march of technology.

Quite a bit of work has been done in quantifying the performance of the Si5351 for amateur radio use, within the limitations of our modest home labs. Something that you don’t see done with a lot of other new components these days. Have I made mistakes or overlooked some things? Almost certainly. I’m still learning how to apply a strict measurement discipline over all of my serious building activities, so this is a learning process for me as well. If you have some constructive criticism of any of my measurements or feel that I have neglected things, I absolutely welcome an email or comment on the blog. Let’s try to hold ourselves to high standards as home experimenters without being unduly negative, as many of us continue in the journey of RF experimentation.