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:

Wideband Transmission #9

Arduino in the Cloud

Selection_108

I saw a recent post on the Make blog about the new cloud ecosystem for Arduino which has been dubbed Arduino Create. Since this will most likely be the future of Arduino, it seemed wise to get an early look at the platform. It includes quite a few features, but the most notable ones in my opinion are the Project Hub, Arduino Cloud (IoT infrastructure), and Web Editor. Arduino Cloud will allow you to connect your network-capable Arduino to the Internet to allow sharing of sensor data, remote control over the net; your typical IoT applications. The Web Editor gives you access to an Arduino IDE over the web. Your code is stored online, and a cloud compiler builds your project, so you don't have to worry about configuring that on your machine. However, you still have to install an OS-specific agent program on your PC in order to get the complied firmware from the Web Editor onto the Arduino's flash memory. The Project Hub is a project-sharing space, similar to hackaday.io, Instructables, etc.

Selection_110

I don't have much to comment on regarding Arduino Cloud, since I don't have any of the supported devices and cannot try it out at this time. The Web Editor gives me mixed feelings for sure. No doubt that this was created to compete with the mbed platform, which sounds awfully convenient from what I have seen. I like the idea of being able to easily save and share code with others, as well as having a standard set of build tools for everyone. However, the environment is obviously still in early stages, as there is no support for libraries to be added through the official Library Manager JSON list, nor for external hardware definition files to be used. I had some difficulties getting the Arudino Create Agent talking to my web browser in Linux Mint, and once I did, uploading seemed a bit flakier than it does on the desktop IDE. Of course, this is all still in beta, so rough edges are to be expected. Once they get the features of the Web Editor up to parity with the desktop IDE, it should be a very useful tool. Finally, the Project Hub looks nice, but I wonder if we aren't starting to see too much fragmentation in this type of service for it to be useful. Still, the one-stop shopping aspect of it all is very spiffy.

Something to Watch

Selection_109

Ham radio seems like a natural fit with the citizen scientist movement, so it pleases me to have discovered that some hams have created a platform to advance citizen science in an area where we are well equipped to do so. The new HamSCI website states its mission as:

HamSCI, the Ham Radio Science Citizen Investigation, is a platform for the publicity and promotion of projects that are consistent with the following objectives:

  • Advance scientific research and understanding through amateur radio activities.
  • Encourage the development of new technologies to support this research.
  • Provide educational opportunities for the amateur community and the general public.

HamSCI serves as a means for fostering collaborations between professional researchers and amateur radio operators. It assists in developing and maintaining standards and agreements between all people and organizations involved. HamSCI is not an operations or funding program, nor is it a supervisory organization. HamSCI does not perform research on its own. Rather, it supports other research programs, such as those funded by organizatons[sic] like the United States National Science Foundation.

They already have three listed projects that they are helping with: the 2017 Total Solar Eclipse, ePOP CASSIOPE Experiment, and Ionospheric Response to Solar Flares. The 2017 eclipse is of special interest to me, as totality will be seen at latitude 45°N here in Oregon, which puts it squarely over Salem; a place I will have easy access from which to observe (which also reminds me that I need to build some kind of solar observation device like the Sun Gun before August 2017).

I wish these folks the best and I hope they are able to make a useful contribution to science.

A Challenger Appears

A EEVBlog video popped into my YouTube feed yesterday that was of significant interest to me, and will probably be to you as well. Most of us who are into having a home test & measurement lab are well aware that the Rigol DSA-815 has been the king of spectrum analyzers for the last few years, due to the very reasonable cost paired with the decent amount of bandwidth and load of useful features that are included. Rigol seemed to own this market space since the DSA-815 was released, as the big boys of T&M didn't seem to care too much about serving us little guys with our small budgets. However, those days are probably at an end, as a new SA to rival the DSA-815 is on the cusp of release. Dave Jones gives a cursory review of the new Siglent SSA3021X, which looks like it will cost only a few hundred dollars more than the DSA-815 but may be significantly better in the performance category. I'd recommend watching the video below, but here's a summary of the points that interested me:

  • User interface seems to be heavily "inspired" by the Rigol DSA-815
  • The Siglent has significantly better DANL
  • 10 Hz RBW available on the Siglent vs 100 Hz on the Rigol (I've seen hints that the Rigol was supposed to have a 10 Hz RBW option, but they never released it)
  • Reference clock and PLL in the Siglent look better
  • The Siglent has a waterfall display available, which is missing from the Rigol
  • Dave spotted some potential unwanted spurious signals in the Siglent, but they were low level and his machine wasn't a release version either.

Also, don't miss Dave Jones in typical Dave Jones-style refer to a signal with unwanted sidebands as a "dick and balls".

My impression is that if Siglent can tighten up the fit and finish of this spectrum analyzer, it could give the DSA-815 a real run for its money. This is nothing but good news, as more competition in this space will mean even better products for us in the future. I'll be watching this one.

Fun with Marbles & Magnets

Finally as a palate cleanser, enjoy this clever kinetic artwork contraption built to play with marbles and magnets!

 

Wideband Transmission #6

Happy New Year 2015!

2014 was a bit of a mixed bag here. It's been a transition year for Etherkit, as I reorganize and reorient the business for a renewed push to get the CC1 and other new products to market. I believe that good things are beginning to happen there.

On a personal level, my two boys have been doing fantastic. Noah started preschool and is really enjoying it. Eli is at a bit of a difficult age (the Terrible Twos) and is between baby and little kid, but he's got an amazing personality and is growing up so quickly. Jennifer and I celebrated five years of marriage and 11 years since our first date! Things haven't been perfect in the extended parts of our families, but at least in our household we've all been pretty healthy and have been able to enjoy many blessings.

Si5351A Breakout Board Campaign

There have been a fair number of neat projects I've seen using the Si5351A Breakout Board that I posted on OSHPark, along with my Si5351 Arduino library, which is absolutely wonderful. However, I realize that it's a pain to order PCBs and all of the parts separately, and that a kit or a finished board would be ideal.

I've decided to try something new in order to bring the Si5351A Breakout Board kit to market: we're going to try crowdfunding the first batch of kits. I'm going to set a modest goal to trigger the funding, but all orders will be welcome over the goal amount. In fact, I intend to set a stretch goal at some higher funding level to devote a certain number of hours to improving the Si5351 Arduino library, including:

  • Add tuning from 8 kHz to 1 MHz
  • Add tuning from 150 MHz to 160 MHz
  • Fix the bug that does not allow output over 125 MHz
  • Implement access to the phase register
  • Implement sub-Hz tuning for modes like WSPR
  • Other bug fixes

I also intend on lowering the BOM cost by removing the broadband output transformers, and offering multiple variants of the kit, including the option to add SMA connectors and a TCXO. I'm composing the campaign on Indiegogo right now, and I'm shooting for a launch in about 10 days. I'm hoping to gain experience with this campaign with the goal of using it to fund CC1 kitting later in the year.

Why am I telling you this now? Because I would like to let those of you are are interested in purchasing one (or otherwise interested in supporing Etherkit) get advance notice so that you can order on the first day that the campaign goes live. This will help to give the campaign more momentum and perhaps help to spread the word further. I will be sure to make a blog post here when the campaign goes live and tweet about it as well, so keep an eye on those channels if this is something that intrigues you.

Simple WSPR Transceiver using Si5351A

I came across this simple WSPR transceiver from KC3XM driven by one of my Si5351A Breakout Boards via @wm6h and Dangerous Prototypes. The WSPR transmitter is simply a BS170 driven by one of the Si5351 outputs, which is buffered by a logic gate and keyed by a standard PNP keying switch. Control of the Si5351 and keying of the transmitter is performed by a plain vanilla Arduino Uno (the code has been posted to GitHub).

This looked so simple to build that I had to give it a try. I quickly built up the transmitter portion, tacked on a 10 meter LPF (the original version is for 30 meters), modified the code for my callsign and grid, and changed the Si5351 output frequency to the 10 meter band. The transmitter put out nearly exactly 1 watt of RF (with only about 1.2 watts of DC input total) into 50 ohms and ran quite cool. Hooked up to my Moxon, it had no problem generating spots when pointed east and started on an even minute so as to properly synchronize. Fun stuff!

Generating PSK with an Arduino

If you haven't been following the blog of KO7M, you should be. Jeff has been doing a lot of experimentation with with NB6M and other home experimenters in Washington state, especially with stuff like the Minima and using microcontrollers in ham radio projects.

Lately, Jeff has been working on getting an Arduino to output PSK audio. He has a series of recent posts about it, but these two are probably the most important. The character timing is not quite right yet, but the basics of how to generate PSK via PWM audio signals are here. Good stuff!

Si5351 and Raspberry Pi

Another really great homebrewer blog is M0XPD's Shack Nasties (oh you Brits and your silly names) blog. Paul has been doing a lot of work with the Si5351 as well, and his latest post about the Si5351 is details of how he interfaced it with the Raspberry Pi. Excellent information to have, as the RPi is of course much more powerful than your garden variety Arduino.

Si5351A Breakout Board Documentation

I appreciate all of the interest in the Si5351A Breakout Board that I have available on OSHPark. I apologize for not having this available sooner, but here is a GitHub repository which hosts the KiCad design files and a PDF of the Breakout Board schematic, which lists the part numbers for the reference oscillator and the output transformers so that you can order your own. Also the few passives on the board are size 0805.

This, along with either the avr-gcc library or the Arduino library, should get you going in generating all kinds of clocks and local oscillators. While this board seems to work fine in interfacing with the 5V Arduinos that I have, I worry that comms might be iffy, so I'm going to add simple MOSFET-based level conversion to the next iteration of this board. Keep an eye on the blog for further developments in this area.

Si5351 Libraries and Breakout Board

A few exciting developments here on the Si5351 front. First off, I took the C code from my Si5351 library for avr-gcc and converted it to an Arduino/C++ library, which you can find here. It replicates the functionality in the avr-gcc library, but makes it quite a bit easier to rapidly implement designs. I've tested this design on an Arduino Uno and an Arduino Uno clone, but I see no reason why the library shouldn't work on other Arduino variants as well. Please give it a try and leave feedback on the GitHub page if you find bugs or have suggestions for improvements.

The other news is about the Si5351 Breakout Board that I mentioned in the last post. I just got the 3 purple PCBs back from OSHpark and they are most excellent.

20140612_140918

I got one quickly populated with components and paired it with an Arduino in order to test the new library. As you can see in the photo at the top of the post, it's a pretty small little board, but it's pretty powerful for its size. All you do is connect VCC, GND, and the I2C SDA and SCL lines to the Arduino, and you get three independent transformer-isolated outputs on SMA connectors that can generate 1 to 150 MHz (in the future the library will be modified to allow the full 8 kHz to 160 MHz range)

DSCN0671

Will I end up selling these as a kit? I'd like to but I'm uncertain at this point. Oddly enough, I just found out that it's highly likely that Adafruit will also be selling a Si5351 breakout board. If you watch the video below at about the 6:22 mark, you'll see it.

I'm a bit surprised by this, as RF is not something that I was aware that Adafruit was interested in. To be honest, it will be difficult to compete against the relatively much larger fish in the hobbyist pond that is Adafruit. Although, it looks as though my breakout board has something that the Adafruit board does not: isolation output transformers. Most likely, I will do one trial kitting run and see if there will be enough interest for another after that. Keep an eye on the blog for further news about that in the near future.

Si5351A Investigations Part 4

I've got a lot of project ideas rattling around my head. Got even more of them in my notebook. One of the projects floating around in there for years that seemed pretty cool, but not urgent, was an automated thermal chamber for oscillator stability testing, roughly based on the one seen at the end of chapter 7 of Experimental Methods in RF Design.

My interest was renewed a few months ago when Jennifer brought home some free Styrofoam containers from the vet's office from Baxter's annual checkup. They were nice and thick, as well as having straight interior walls, unlike the typical cheap beer cooler you find at the supermarket. Of course, Jennifer was thinking of using them for food, but naturally I had more nefarious purposes in mind for one of them.

The real impetus to build the thermal chamber was the realization that it would be extremely helpful in characterizing the behavior of the Si5351A. Taking mental stock of what I had on hand, I realized that I already had almost everything I would need to do the job. So this last weekend, I decided to build the chamber and put it to use characterizing the Si5351A. In these tests, I used the Si5351A with a cheap garden-variety crystal: the ECS-250-8-30B-CKM.

I don't intend to do full write-up of the thermal chamber here (that will be coming in a separate post), but I will cover the basic design here briefly. The physical chamber is that veterinary Styrofoam cooler with rough dimensions of 25 x 30 x 30 cm. The device under test (DUT) sits in the bottom of the chamber. Over the top of that sits a shield constructed from pressboard and legs made from 2x2s which raises the shield to a height of about 9 cm from the floor of the container, and keeps the DUT from receiving much direct radiant heat. A 12 V PC cooling fan is mounted over a hole in the pressboard. There are also three other large holes on the outside edge of the pressboard, which allows the fan to circulate air between the upper and lower partitions of the chamber. The heating element is a 60 watt incandescent light bulb. A porcelain light socket is secured to the lid with a large cable tie, allowing the light to drop down into the top of the chamber. The weight of the porcelain light socket also helps to weight down the lid securely onto the container.

DSCN0658

On the electronics side, I chose an Arduino Uno clone (the Sparkfun Redboard) as the controller platform. Fortuitously, a little while ago I also happened to win a Seeed Studio Relay Shield, which worked perfectly in this application for switching the lightbulb and the fan. There was also a DS1821 One-Wire temperature sensor in my junkbox, which interfaced with the Redboard with a little bit of code I found online. An old two-conductor power cord and inline ATC fuse was used to provide power to the light bulb. Simple firmware was written for the Redboard that allows it to be commanded via the serial connection. The light and fan can be switched on or off via a single character command sent over the serial connection. Likewise, the temperature can be queried and sent to the PC via the serial connection.

The shack PC ties everything together via a Python script. My Rigol DSA815-TG spectrum analyzer is used as the frequency counter, since I can control it remotely via USB with the Python usbtmc library. My control script reads the temperature and frequency on an interval (I've been using 15 or 30 second intervals) and has logic to control the light and fan based on the readings. I will post the code to GitHub when I write a full post about the chamber.

Now that you know how the system works, let's look at what I found with the Si5351A as the DUT. After doing some initial tweaking of the system to get it working the way I expected, on my first true run, I set up a simple temperature profile. After a 4 minute idle period, the light and fan was commanded to turn on until the temperature reached 60C, then the light was turned off, and I cracked open the lid of the chamber a bit so that it could cool off relatively quickly. The most noticeable thing is the double-humped response in the frequency. You can see the typical frequency reduction as temperature increases, but then around 52C, the trend reverses! I'm not quite sure what to make of it. But I must say that total frequency excursion of about 70 Hz over 35 degrees of temperature change looks pretty nice to me.

5351SecondRun

Next, Thomas LA3PNA suggested in the Etherkit IRC channel that I do a long run with no extra heating so I can get an idea of the warm-up drift and the long term stability of the oscillator in a temperature stable environment. That's a very useful thing to know, so I reconfigured the Python control program to do that. As you can see from the plot below, after a small amount of drift in the first 10 minutes or so, the Si5351A is extremely stable. Those excursions that you see from the main trend line are only 1 Hz, so those may be due to the oscillator or to error in the frequency measurement, but either way I'd say that's rock-solid. You can even notice that the temperature of the chamber was a bit high from the previous run and settled down slowly to ambient, but that had no noticeable effect on the stability.

5351SelfHeating

After that, the Python program was rewritten to ramp up temperature to 40C, then try to hold it there by toggling the light on and off if the temperature deviated more than +/- 1 degree. I wasn't completely happy with the control loop in this one (I used 30 second intervals, but it should have been shorter) but the graph was still instructive. This time, the frequency response looks about how one would expect with this type of temperature profile.

5351-40C

Finally, I again tweaked the control algorithm in order to tighten up the measurement interval to 20 seconds and the maximum temperature excursion to +/- 0.5 degrees. The hold temperature was set for 50C, which is close to where that odd inflection in the drift appears. You can see that the control at 50C is much better here. You will also notice that blip where the positive temperature coefficient appears to go negative. Still, it holds relatively stable at 50C.

5351-50C-2

There is not a lot of data out on the internet to use for a comparison against this data. However, I believe it's fair to say that the Si5351A looks pretty solid from a stability standpoint. It's doubtful one will be operating a radio under such extreme temperature excursions in almost any case, but even so, <100 Hz of drift seems tolerable for almost any application where one is using a conversational operating mode. Of course there is still some more data which could be collected, such as performance at low temperatures, but from this initial investigation, I would say that things look very promising for the Si5351A.

11 January 2015 Update

I finally received a small supply of the TCXO that I have been planning on using with the Si5351A for a while now: the FOX924B-25.000. In the interest of comparing the performance of the TCXO against the standard crystal, I ran the same thermal chamber temperature profile as the last one above, although I removed the lid at the end of the 50C cycle to get a steeper cooldown gradient.

TCXO-Run1

As you can see, the TCXO stability is approximately an order of magnitude better than the crystal. The maximum frequency deviation is 9 Hz, although that occurs at the point where the lamp is turned off, so the frequency response is somewhat like the first derivative of the temperature curve. Once temperature is stabilized near 50C, the TCXO control loop does a great job maintaining frequency only a few Hz higher than the room temperature frequency. This TCXO should be suitable for nearly all but the most demanding applications. Certainly it would be excellent for WSPR/QRSS work and for portable outdoor ops like SOTA.