❌

Normal view

There are new articles available, click to refresh the page.
Before yesterdayMain stream

v2.2.0 Multi-Face GPS-Clock

10 June 2024 at 21:54

A few new screens:

  • NextEvents() - New screen showing Next Equinox/Solstice, Easter, Lunar/Solar Eclipses in sorted order, i.e. sorted after date as shown to the right
  • SolarEclipse() - New screen showing solar eclipses for this year and coming years (table-based until 2030)
  • Equinoxes() - New screen for time of equinoxes and solstices

Demo mode now has a choice of increase, decrease, or random next screen number (selectable in Secondary menu).

More languages selectable: {"en", "es", "fr", "de", "no", "se", "dk", "is"} Any language with max 4 special letters in alphabet can be implemented.

Better accuracy:

  • More accurate prediction of sun rise/set times
  • More accurate formula for Mercury, Venus, Mars, Jupiter magnitudes in clock_z_planets.h, now follows Meeus [thanks Richard]

Now runs on Adafruit Metro Express (M0). This makes it much faster for the Hebrew calendar in particular.

And some more minor fixes, see details on Github.

Repairing a dead RX-888 (no A/D converter clocking)

By: KA7OEI
15 May 2024 at 18:21

On this blog I have posted three previous entries related to the RX-888 (Mk2) which may be of interest to the reader:

Figure 1 - The (stock) RX-888

The "Thermal Dynamics" page referred to reliability issues experienced - possibly heat-related, but this page discusses vulnerabilities and repairs that may be needed if - when using an external clock - the device has stopped functioning.

Comment:Β  There are many reasons why an RX-888 may not produce signals.Β  One of the better, easier tools to diagnose/test an RX-888 is to use the SDDC "ExtIO" driver along with a problem like "HDSDR" on a Windows machine:Β  A fairly fast computer (at least a quad-core Intel i7 at 3 GHz or better) is recommended and a USB3 port is required.

How did I know that the problem appeared to be due to no clocking of data from the A/D converter?Β  On my Windows 10 machine I could see that the USB PHY enumerated properly, but the results of the waterfall/spectrum plot from HDSDRΒ  - and the fact that there was no difference in the (lack of) signal regardless of the frequency or sample rate - caused me to suspect such.

What finally clinched it was partially disassembling the '888 and probing it with an oscilloscope and finding the clocking to be absent from the A/D converter - and subsequent removal and probing under the shield covering the clock section.

Using the external clock:

Note:Β  If your RX-888 failed after you have used an external clock, the damage described on this page may have happened to your device.Β  If you have disabled the onboard 27 MHz clock (e.g. removed the jumper) you may wish to (temporarily) restore its operation for the purposes of diagnosing the problem and subsequent testing - and doing so is strongly recommended as it allow one to rule out other issues - particularly those that may be related to external clocking.

While the internal 27 MHz oscillator seems to be quite stable, there are instances where you might want to reference it to an external and more stable source such as that derived from a GPS or an atomic standard.Β  Most commonly, this is done using one of the Leo Bodnar GPS-stabilized references allowing sub-milliHertz accuracy and stability across the HF spectrum.

Figure 2:Β  Board
Out of the box, the RX-888 (Mk2) has no external connector mounted to accept external clocking but it was designed with doing so in mind:Β  Figure 2 shows the RX-888's PC board and just above the upper-left corner of the shielded box can be see an U.Fl connector on the board to which the clock may be applied.

Just above this is a jumper (green, in this case) which, when removed, disables the on-board clock so that the externally-applied oscillator does not conflict.

Reverse-engineering the clock circuit:

As schematics for the RX-888 (Mk2) are not publicly available, exactly how it worked was unknown and thus the type of external signal to be used was unknown, found with trial and error.Β  In the process of this repair I had to figure out how the circuit worked, so here is a brief outline:

  • The external clock input goes to a BAT99 dual diodeΒ (there is no blocking capacitor anywhere) - one side grounded and the other side connected to the local 3.3 volt supply:Β  Under this shield, the oscillator, Si5351 and LVDS driver have their very own 3.3 volt LDO regulator.
  • From the BAT99, the external clock goes to the output pin of the oscillator and to the clock input of the Si5351:Β  The "enable/disable" jumper simply disables the internal 27 MHz oscillator, putting its output in a Hi-Z state which is why you get 27 MHz appearing on the "external clock" connection if the onboard oscillator is enabled.
  • The output of the Si5351 that feeds the main ADC goes to the LVDS Driver chip (an SN65LVDS1DBVR) which provides buffering and biphase clocking to the A/D converter.
  • Also under this shield is a 3.3 volt regulator that provides power just for the Si5351 and LVDS driver to help ensure that their power supply (and clock signal) isn't "noised up" by other circuitry on board.

What seems to go wrong:

In the description you may note that the external clock input goes directly to the output of the crystal oscillator and also to the clock input of the Si5351 with no blocking capacitor:Β  There's the BAT99 dual diode that ostensibly offers protection - but this is probably not the appropriate protection device as we'll see:Β  The BAT99 in conjunction with an appropriately-specified TVS diode (e.g. 4-5 volts) would have been better.

Figure 3:Β  The clock section - under the shield.

An RX-888 (Mk2) crossed my workbench that seemed "dead" - but critically, it would enumerate on the USB and would load the firmware, indicating that one of the apparent issues - that of the FX3 interface chip - appeared to be working OK.Β  A quick check with the oscilloscope on the clock pins of the A/D converter showed that it was completely absent even with the internal clock enabled (jumper pins shorted).Β  This indicated that the clock generator had failed in some way.

On the RX-888 (Mk2) all of the clock generation circuitry - the 27 MHz TCXO, the Si5351 synthesizer, the LVDS driver and a "local" 3.3 volt regulator for the aforementioned devices - is located under the metal shield.Β  This was removed carefully using a hot-air rework tool and some large-ish tweezers to expose (and not disturb) the components underneath.

Figure 3 shows what's under the shield:

  • The three terminal device in the upper-left corner is a BAT99 dual diode - one side connected to ground, the other connected to the local 3.3 volt supply.
  • Just to the right of the the BAT99 diode you can see the metal can of the 27 MHz oscillator.
  • Below it oscillator is the Si5351.
  • To the right of the '5351 is the local 3.3 volt regulator.
  • Just above the regulator - in an identical-looking package - is theΒ SN65LVDS1DBVR LVDS driver.

With the shield removed, I could see that the 27 MHz clock (which was enabled by bridging the jumper) was making it to the input pin of the Si5351 synthesizer, but nowhere else.Β  I could also probe the data and clock lines used for programming the Si5351 and when the firmware was loaded, I could see a brief string of pulses on each line indicating that the FX3 was attempting to program it.

At the time I had some "wrong" Si5351s available:Β  I'd previously ordered a pre-programmed version (fixed frequency, non reprogrammable) by accident so I dropped one of those on the board (hot-air rework soldering) and was greeted with output signals (at the wrong frequency) but I observed that they stopped at the LVDS driver chip indicating that it, too, was dead:Β  A signal was on its input, but only one output had anything at all and its output was only a few 10s of millivolts - possibly due to leakage from the input rather than the device actually doing anything.

Placing an order with DigiKey, I soon had in hand some proper Si5351s and a handful of the SN65LVDS1DBVR driver chips and dropped them on the board as well, restoring operation of this RX-888 (Mk2).Β Β 

A few notes on chip replacement:

A modest hot-air rework station was used in the repair of this '888.

For removal of the defective parts, the board was set on a heatproof, stable service:Β  My station has a set of aluminum bars with ridges to allow a board to be secured and sit flat.Β  Using a pair of curved, ceramic-tipped (which have lower heat conductivity than metal) tweezers, just enough heat was applied to remove the defective device(s) once they had been appropriated warmed by targeted air from rework station's hot-air wand.

The defective devices remove, a very thin layer of solder past was added to the pads after removing the defective chip(s) and the new device was placed in position, being sure that the pin orientation was correct.Β  Applying heat - but not enough air flow to cause the part to be blown out of position - the device will center itself once the solder melts and surface tension takes over.

Closely examining the part for solder bridges (magnification is helpful for this) and if there are some, apply a small amount of liquid solder flux (a low-residue "flux pen" is good for this) apply some heat from a clean, tinned iron through a small piece of "solder wick" whetted with flux should remove them.

What likely happened:

The key to the mode of failure is noting what had failed and how the components were related.Β  As mentioned earlier, there is a "protection" diode (BAT99) connected between ground and the local 3.3 volt supply - but while this will prevent negative-going excursions, it is less effective in positive-going swings that exceed 3.3 volts as it dumps that energy into the local 3.3 volt supply.Β  As the clock, the Si5351 and the LVDS driver are all on that same supply, it appears that much more than 3.3 volts appeared there, blowing up the '5351 and LVDS driver - and it is only by serendipity that the 27 MHz clock survived - likely due to its ability to handle much higher voltages by design (e.g. it may be 5 volt tolerant, built using a much larger fabrication process, etc.)Β 

Obviously, the local 3.3 volt regulator survived as well - but one should remember that it, too, can take rather higher voltages on its input.Β  Also note that typical regulators like this will only source current - they have no circuitry within to sink or clamp higher-than-expected voltages on their output so when the "high" voltage was applied to the clock input the BAT99 diode - and the protection diodes on the oscillator and Si5351 - shunted it to the 3.3 volt supply which is how the LVDS driver - which has NO direct connection to the external clock input - got destroyed as well from high supply voltage.

What probably happened to damage the '888 likely occurred when the external clock was being connected/disconnected.Β  Typically, an SMA connector is used - mounted on one of the end panels - to feed the external clock into the unit but a problem with this type of connector (and others like the type "F" and "UHF") can make a connection with the center pin BEFORE the ground/shield is firmly connected.

What this means is that if there is a "ground" differential between pieces of equipment of several volts, this voltage can be dumped into the high-impedance and poorly protected input of the RX-888 (Mk2) as the connector is mated and tightened.

This voltage differential between pieces of equipment is actually quite common.Β  Let us consider a possible scenario in which we have the following:

  • An RX-888 connected to an antenna and a computer.
  • An external clock source from a Leo Bodnar GPS reference that is powered by a different computer via the USB port and connected to a GPS antenna.

In the above we have four different "grounds" connected between the pieces of equipment:

  • The receive antenna for the RX-888 may be "grounded" somewhere - possibly distant from the local equipment ground - say, at the entry panel where the antenna cable comes into the building.
  • The "ground" of the GPS antenna which may or may not come in through the same cable entry as the RF antenna:Β  If it comes in elsewhere and is grounded at that point, that "ground" may have a different voltage potential due to differential currents through the local soil and/or building wiring.Β  It is often the case that this antenna isn't grounded at all, but "floating", with no connection anywhere along the GPS signal cable except to the antenna and the receiver.
  • The "ground" of the computer connected to the RX-888.Β  It's unlikely that most users would think of tying their computer chassis to an "earth" ground directly so it is either connected via the safety ground (third prong on the power plug) or left floating - as in the case of a laptop or a computer with an external power supply (e.g. a "wall wart").
  • The "ground" of the computer powering the Bodnar via USB.Β  This may be the same as the computer running the RX-888, but if not, it may have a "different" grounding situation.
    • If the Bodnar is powered not by USB but an external supply, it, too, may have a slightly different "ground".

The problem here is that what is called a "ground" colloquially does not mean that they are at exactly at the same potential:Β  It is very common for a "ground" on an RF coaxial cable grounded some distance away nearer the antenna has a slightly different voltage on it than the wiring "ground" in a building:Β  Ground has finite resistance and currents are always flowing around through the earth - and this is especially true during lightning storms where two "grounds" could be hundreds of volts apart for a brief instant if there is a nearby lightning strike.

The other problem is that many computers may not be "grounded" in the way that you think - particularly laptops small desktops powered by a remote supply (e.g. a "wall wart").Β  Sometimes, these power supplies do not have a DC connection between the "ground" pin of the mains supply and the DC output meaning that they are "floating":Β  Often - usually due to EMI filtering of the switch-mode supply - this causes the DC output to float at some (usually AC) voltage that may be many tens of volts away from the ground - a phenomenon usually caused by the (needed!) capacitors in the filter circuit.Β  As these capacitors are often coupled in some way to the mains, they will conduct a small amount of current - but if it's shorted to ground at the instant that the mains voltage waveform is at a peak, the energy of the capacitor may instantaneously be dump through that connection resulting in a very brief - but surprisingly high - current spike, even if the capacitance is quite low.

While the amount of current of the "floating" supply between its output and the "ground" (third prong on the outlet) is likely to be quite small, it can easily be enough to induce small currents through interconnecting cable.Β  What's worse is that if you have two pieces of equipment - one being firmly grounded through its antenna such as the RX-888 and the source of the external clock which may be powered from a source that is "floating" as well - that when the connection is made between the output of the external clock and the signal source is made that there will be an elevated voltage:Β  As it's common for the center pin of the cable to make contact first, this voltage - and the capacitors in whatever EMI filtering may be present on the "ground" of the device powering/connected to the external clock - will dump into the clock input of the RX-888 - and from there, into the other circuitry of the '888's clock circuit.

How to drive the '888 to prevent this from happening again?

As it happens, I have already produced a blog entry on this very subject, so I'll leave it to the reader to peruse that article, found here:

Β 
This page stolen from ka7oei.blogspot.com
Β 
[END]Β 

How to set up a HamClock for your shack

By: g6nhu
12 May 2024 at 08:49

I appreciate that the last post here was about the HamClock and I said I wouldn’t be providing a guide to building one but I’ve been asked by a few people if I can write some instructions, showing what’s needed from start to end so I’ve decided to do it. This is a long guide […]

The post How to set up a HamClock for your shack first appeared on QSO365.

Building HAM Clock on an old RaspberryPi

By: M0AWS
10 April 2024 at 18:05

I’ve got a couple of old RaspberryPi computers on the shelf in the shack and so decided it was time for me to put one of them to good use. The first model on the shelf is the oldest and is one of the very first RaspberryPi 1 computers that was released. (It’s the one with the yellow analog video signal output on the board!). This particular model is extremely slow but, I hang onto it just as a reminder of the first SBC in the line.

The second one is a RaspberryPi 2, a quad core machine that is only slightly faster than the first model but, it’s powerful enough to run HAM Clock.

It didn’t take long to install a vanilla Raspbian Desktop O/S and get it configured on the local LAN. I installed a few packages that I like to have available on all my Linux machines and then started on the HAM Clock install.

The first thing I needed to do was install the X11 development library that is required to compile the HAM Clock binary. To do this, open a terminal and enter the command below to install the package.

sudo apt install libx11-dev

You will need to type in your password to obtain root privileges to complete the installation process and then wait for the package to be installed.

The HAM Clock source code is available from the HAM Clock Website under the Download tab in .zip format. Once downloaded unzip the file and change directory into the ESPHamClock folder ready to compile the code.

cd ~/Downloads/ESPHamClock

Once in the ESPHamClock directory you can run a command to get details on how to compile the source code.

make help

This will check your system to see what screen resolutions are available and then list out the options available to you for compiling the code as shown below.

The following targets are available (as appropriate for your system)

    hamclock-800x480          X11 GUI desktop version, AKA hamclock
    hamclock-1600x960         X11 GUI desktop version, larger, AKA hamclock-big
    hamclock-2400x1440        X11 GUI desktop version, larger yet
    hamclock-3200x1920        X11 GUI desktop version, huge

    hamclock-web-800x480      web server only (no display)
    hamclock-web-1600x960     web server only (no display), larger
    hamclock-web-2400x1440    web server only (no display), larger yet
    hamclock-web-3200x1920    web server only (no display), huge

    hamclock-fb0-800x480      RPi stand-alone /dev/fb0, AKA hamclock-fb0-small
    hamclock-fb0-1600x960     RPi stand-alone /dev/fb0, larger, AKA hamclock-fb0
    hamclock-fb0-2400x1440    RPi stand-alone /dev/fb0, larger yet
    hamclock-fb0-3200x1920    RPi stand-alone /dev/fb0, huge

For my system 1600Γ—960 was the best option and so I compiled the code using the command as follows.

make hamclock-1600x960

It’s no surprise that it takes a while to compile the code on such a low powered device. I can’t tell you how long exactly as I went and made a brew and did a few other things whilst it was running but, it took a while!

Once the compilation was complete you then need to install the application to your desktop environment and move the binary to the correct directory.

make install

Once the install is complete there should be an icon on the GUI desktop to start the app. If like mine it didn’t create the icon then you can start the HAM Clock by using the following command in the terminal.

/usr/local/bin/hamclock &

The first time you start the app you’ll need to enter your station information, callsign, location etc and then select the settings you want to use. There are 4 pages of options for configuring the app all of which are described in the user documentation.

M0AWS - HAM Clock running on RaspberryPi Computer
M0AWS – HAM Clock running on RaspberryPi Computer

Once the configuration is complete the map will populate with the default panels and data. I tailored my panels to show the items of interest to me namely, POTA, SOTA, International Beacon Project and the ISS space station track. I was hoping to be able to display more than one satellite at a time on the map however, the interface only allows for one bird to be tracked at a time.

You can access the HAM Clock from another computer using a web browser pointed at your RaspberryPi on your local LAN using either the IP address or the hostname of the device.

http://<hostname>:8081/live.html

or

http://<ip-address>:8081/live.html

You can also control the HAM Clock remotely via web browser using a set of web commands that are detailed on port 8080 of the device.

http://<hostname or ip-address>:8080/

M0AWS - HAM Clock remote command set
M0AWS – HAM Clock remote command set

This is a great addition to any HAM shack especially if, like me you have an old HDTV on the wall of the shack that is crying out to display something useful.

More soon …

Using an external clock with the RX-888 (Mk2)

By: KA7OEI
31 March 2024 at 21:29

The RX-888 (Mk2) and external clocking

Figure 1:
The RX-888 with external clock input (right)
The enable/disable switch is barely
visible behind the USB connector.
Click on the image for a larger version.
Note: I have posted blog two previous entries related to the RX-888 (Mk2) that you may find relevant:

Adding an external clock connection

While the internal 27 MHz TCXO in the RX-888 (Mk2) is pretty good, there may be instances where one wishes better accuracy and stability.Β  Fortunately, the RX-888 (Mk2) has provisions for doing so in the form of a jumper to disable the internal clock (when the jumper is removed) and a small connector (a tiny U.Fl) on board to accept that clock.

Unfortunately, it is up to the user to add the cable to feed an external clock - but short 4-6" (10-15cm) cables already fitted with a U.Fl male and SMA chassis-mount female connector are easily obtained from the likes of Amazon, EvilBay and others - just be sure that you do NOT get a "Reverse" (RP) SMA by mistake!

This leaves the jumper.Β  While many people simply remove the jumper and mount the external clock connector between the HF and VHF inputs - or sometimes to the right of the USB connector knowing - from then on - their RX-888 will be unusable unless there is an external clock input - I prefer to make use of the ability of the internal clock to be switched - using (ahem) a switch allowing for testing/use of the RX-888 in a "stand alone" configuration - but this is up to you.

If one is careful, it's possible to mount the external clock SMA connector and switch on the same panel as the USB connector, orienting so that its handle is toward the "Clock In" connector to indicate that an external clock is to be used - but labels or markings are always nice, too!

If one takes the route of mounting the external clock input between the HF and UHF inputs, the switch could be placed to the right of the USB connector - or, if as in the case of one of my RX-888s where I put a heat sink on the FX3 chip and there wasn't room there - I found a very small toggle switch that just fit between the case screw and left side of the USB connector and tip of this switch may be spotted just behind the USB connector in Figure 1, above.

IMPORTANT:Β  As the external clock input is simply wired in parallel with the internal 27 MHz clock.Β  What this means is that with the internal clock enabled, it will be present on the external clock input.Β  Similarly, if you supply a 27 MHz external clock without disabling the internal one, the two will "fight" each other and you'll get "garbage" results.


What type of signal to use as an external clock

  • The best external clock source is a 27 MHz sine wave of between 1.25 and 3.3 volts peak-to-peak.
  • A series coupling capacitance of between 100pF and 1000pF (470pF typ.) should be present on the "center pin" between the RX-888 to eliminate a DC path to ground on the signal line.

While a capacitively-coupled 27 MHz sine wave is recommended for reasons that will be mentioned later, a lot of devices offer square wave outputs - and getting these to work reliably requires at least a little bit of attention.

Using the Leo Bodnar Precision GPS Clock to drive an RX-888:

Because the RX-888 natively requires a 27 MHz clock this means that if you already have a 10 MHz standard (GPS, Rubidium, etc.) kicking around, you will not be able to use it directly.Β  While it's not too difficult to synthesize 27 MHz from 10 MHz (a number of Si5351-based devices can do this) it's most common for users of the RX-888 to use a device such as that sold by Leo Bodnar, which can be programmed for almost any frequency (from audio through UHF) with good precision and accuracy.

You can look at these products here:Β  https://www.leobodnar.comΒ  (I have no stake in Bodnar, but I have used them and I and others have had good success.)

The most commonly-used device is the Bodnar "Mini" - which has one output - and this single output is often "daisy-chained" between RX-888s.Β  There is also the functionally similar LB-1420 with a single output and the "Precision GPS Reference Clock" which has two signal outputs - but there is very limited ability to set the "second" output to a specific frequency and it's mostly useful for outputting the same frequency on the two ports - or outputting a 1PPS signals on the "unused" port.

As the RX-888 (Mk2) external clock input is directly coupled to its Si5351 clock synthesizer, we have to act as if we are driving that chip directly.Β  While not directly specified in the Si5351 data sheets (at least the ones that I have found) testing done my myself indicates that a capacitively-coupled sine of about 750 millivolts peak-peak will trigger the '5351 reliably:Β  A bit of looking in online forums reveals the consensus that a 1 volt peak-peak sine wave is suggested so I would be comfortable with the suggestion of this amplitude being used a a guideline.

Testing with a square wave - such as that produced by the Leo Bodnar GPS reference revealed that the drive level was far more finicky - and this has to do with the fact that a "square" wave with a reasonably fast rise time does NOT remain a square wave for very long as it quickly turns into something rather spiky and distorted as depicted in the image below:

Figure 2:
A typical square wave output from a Bodnar GPS reference at the end of about 3 feet
(1 meter) of unterminated cable.Β  Ringing is evident!

This 27 MHz signal shows clear evidence of ringing:Β  This was measured right at the RX-888 with the signal passing through around 3 feet (1 meter) of 50 ohm coaxial cable.Β  As the '888 does not offer resistive termination, it presents a simple capacitance at the end of the cable and this tends to distort harmonic-rich waveforms like a square wave.

With multiple "spikes" that can occur on such waveforms due to distortion, it's possible - even likely - that certain combinations can result in multiple triggering peaks of the waveform.Β  In an extreme case, such distortion can cause the Si5351 to be triggered at twice the actual clock rate - but rather the result may be instability resulting in the RX-888 clocking which can be manifest as anything from no signals being "present" to those that are being off-frequency, varying, or just "noisy" - and this errant behavior may vary with temperature and slight changes in operating voltage.

It's important to realize that like the RX-888, the Bodnar is ALSO DC-coupled which explains why the above waveform in Figure 2 largely rests above the center line (zero volts) with the exception of some "ringing" which extends negative and is likely being clamped somewhat by the '888's internal diodes.

With a 3.3 volt waveform emanating from the Bodnar, we can reasonably expect that - if the signal isn't too "ringy" that a signal exceeding about 1 volt positive just once per cycle is likely to trigger the 888's Si-5351 correctly.

IMPORTANT: Β If you try to directly drive an RX-888 with the output of a Bodnar, it will probably NOT work reliably!Β  I have observed this with my own Bodnar/RX-888s and many others have reported the same issue.

Remembering that the external clock input of the '888 goes directly to very sensitive logic devices, a simple resistive attenuator pad will do double duty:

  • Rather than a very high impedance circuit that has a low resistance path from the outside world to a sensitive logic gate, resistance to ground offers a degree of protection by offering a relatively low resistance to ground and the series resistance provides at least some limit to input currents.
  • While theoretically OK, the output of the Bodnar will not reliably drive the input of the Si5351 in the RX-888 directly, but being reduced to half or third of its original output seems to be pretty reliable and is less likely to cause clipping of diodes on the input circuit which can exacerbate ringing and other types of waveform distortion.

A 6 to 12 dB resistive pad - either 50 or 75 ohms - is a reasonable choice offering a bit of voltage reduction - but staying well above the 1 volt usability threshold - and such a pad, even if it is not connected to a 50 ohm load, will provide a bit of resistive termination, likely reducing the tenacity of reflections.Β  While a resistive pad does not offer DC decoupling between the center pin of the '888's external clock input, it works with the Bodnar as that device sources a square wave referenced to zero volts so the pad simply acts as a voltage divider for that square wave.

Testing has shown that the '888 seems a bit more forgiving of signal drive levels if there is a DC blocking capacitor on its signal input - something that could be provided by placing a "DC block" device (available in SMA, BNC or F-type connectors) between the '888 and the external clock source.

Caveats and warnings - and why the '888 is so finicky about its external clock

The external clock input of the RX-888 - as described in better detail in the next section of this blog post - is connected DIRECTLY to inputs within the '888 and as such, it has a few undesirable properties:

  • There is a DC connection between the external clock, the oscillator output and the input to the 888's internal Si5351 synthesizer.Β  This exposes the clock input directly to extremely static and voltage-sensitive inputs.
    • Because of this, it's very easy to damage the RX-888 when using and external clock, particularly if there are voltage potentials between different pieces of equipment.
  • There is diode clamping between ground and the 3.3 volt input.Β  In the '888, this is primarily a BAT99 dual diode, but it also includes the protection diodes of the other devices in the circuit - namely the output of the onboard 27 MHz oscillator and the input of the Si5351 itself.Β  At first this might seem like a good thing - and it sort of is - but this means that any signal input to the RX-888 should be capacitively coupled - or directly to a 0-3.3 volt signal.Β  This is one aspect of the '888 that was definitely not well considered or implemented.
    • What this means is that if you try to drive the RX-888's clock input with a source that is DC "grounded" - which includes devices that are transformer-coupled (e.g. a splitter to send the clock to multiple units) that the voltage output will be bipolar.
    • For example:Β 
      • If you were try to use a T1-1 isolation transformer to break a ground loop between the external clock input and the Bodnar - as well as other devices - the signal input may be 3.3 volts - but bipolar - that is, it will go above and below "ground" by about 1.65 volts - but since there is diode clamping, the negative-going signal will distort the waveform.
      • The result of this can either be finessing required to find the precise drive level to make it work at all or - sometimes - you will find the signals at the wrong frequencies (sometimes at about half the expected frequencies) if the badly-distorted waveform triggers the input of the Si5351 synthesizer in the '888 twice on every clock cycle.
All of these factors often confound users of the RX-888 (Mk2) trying to feed an external clock - and things get more complicated if multiple devices are use.Β  For example:
  • As with any sensitive piece of RF equipment, having multiple, disparate connections between pieces of equipment will usually end up with circulating currents - and since every conductor has resistance, this can cause noises to appear in the RF input.Β  A few examples:
    • The RX-888 - or any SDR - will have multiple connections to it - typically the antenna and power input.Β  In the case of the RX-888 and many other SDRs, this means an antenna and USB connection.
      • Isolating the RF signal lines from longitudinal currents (e.g. common mode) is a useful tool.
        • Often, this can take the form of small coaxial cable (RG-142 or RG-174) wound with 8-12 turns on an FT-140 or FT-240 core of 31 or 43 material (the former being better for lower frequencies).Β  This is useful for HF (160-10 meters) but it loses efficacy below this and is not helpful if your interest extends into the AM broadcast bands and lower frequencies (e.g. longwave - including LF and VLF which includes the 2200 and 630 meter amateur bands.)
        • Another tool can be an "voltage balun" - essentially an isolation transformer with no DC connection at all.Β  Often, these are built around the Mini-Circuits T1-1.Β  These lose their efficacy below a MHz or so so they may have excessive attenuation on LF and VLF frequencies.Β  At higher frequencies (above 10 MHz) their common-mode rejection also starts to drop meaning that in a very noisy environment, signals can "leak in" at high HF from the surrounding equipment - something that needs to be checked if you try it.
    • Power supplies and computers (via a USB cable) are notoriously noisy, so you WILL get circulating currents flowing between the devices.Β  Having a choking USB cable (e.g. 6-12 turns on an FT-140 or FT-240 core of 31 or 43 material) can help significantly, as can doing similar on a DC supply line and also choosing a "known RF-quiet" power supply.
    • Adding a "third" connection to the receiver - such as the external clock, in case of the RX-888 (Mk2) - can further complicate issues as it adds yet anotherΒ  avenue of common-mode currents and noise.
      • This connection, too, should be appropriately isolated - but doing so is complicated by the way the external clock input is implemented.
      • The fact that the external clock device is connected to a potentially-noisy power supply andΒ  a GPS antenna - which may or may not have its own grounding (which can further introduce circulating currents) is yet another thing about which you should be wary!
One issue that also arises is that output of devices like the Bodnar are square wave.Β  This, by itself, isn't a problem - and a direct connection between the Bodnar and '888Β  - since they both have 3.3 volt signal levels - works OK, at least with very short cables when using a 6-12 dB pad.
Β 
Conveying this square wave signal - particularly over greater distances and considering that the clock input to the RX-888 is high-impedance with a bit of capacitance means that long runs (anywhere near 1/4 wave at the clock frequency or longer) can result in reflections due to unterminated cables.Β  What one can do is put a 50-75 ohm termination at the far end of the cable. This, however, does not help with the issue of DC/galvanic isolation between individual receivers.
Β 
Testing the stability of your external clock mechanism:
Β 
As properties of solid-state devices change over temperature - and signal levels may vary depending on what other devices are connected to your clock source - it would be a very good idea to varying the clock signal to determine if you have enough margin to allow it to work if levels change, or if you are on the "ragged edge".

Reducing the signal level is the most obvious test:Β  The use of a step attenuator - or use a variety of fixed attenuator pads (be sure that they pass DC) and reducing the level by between 1 and 15 dB - and then observing when clocking becomes unreliable:Β  This will give you a good idea as to the margin between what you are feeding to the '888 and when it will quite - and it may prompt you to reduce your signal level slightly.

Using HDSDR under Windows

Determining when the clocking signal into the '888 becomes unreliable is a bit trickier in some cases.Β  By far the easiest is to use a program like HDSDR with the "SDDC" ExtIO driver on a fairly fast Windows computer with USB3 ports:Β  A higher-end Intel i5 or medium-high end Intel i7 will suffice.Β  Connecting the '888 to an external antenna and tuning in a reliable signal (like a shortwave broadcaster or a time station like WWV/H or CHU - or tuning it your own signal generator) while watching the waterfall will tell you immediately when the external clocking fails.

If you are using Linux with ka9q-radio, you can use the "Monitor" program to tune a signal with the audio being sent to the default audio device - but doing this is beyond the scope of the document.Β  If you are using a Mac, I don't have a suggestion unless someone speaks up.

Transformer-based signal isolation NOT recommended for the '888's clock input - sort of...

It is important for any receiver to minimize the amount of current circulating through the "ground" connections.Β  Such currents in an analog receiver can induce hum in unbalanced audio lines and if the receiver is actually a transceiver, those same signal paths can induce RF into seemingly unrelated equipment in the ham shack.

Sometimes overlooked is the fact that these same currents can induce RF currents on the cables interconnecting equipment and it is likely that these will find their way into the receiver's front end and degrade performance by raising the noise floor.Β  This is especially true when a computer-connect software-defined radio - like the RX-888 - is involved as we now have a connection (via the USB cable) to a device that is likely to be "noisy" at RF - namely the computer - but this also means that noise can come from other devices to which this computer is connected directly or indirectly, namely its power supply, other peripherals, its power supply - and noisy devices on the AC mains into which this power supply is plugged.

Current "balun"

For receiver RF connections one way to deal with this is to use a common-mode RF choke which is typically a dozen or so turns of coaxial cable wound on a T-140 or T-240 toroid - usually with 31 or 43 type material.Β  This will break up common-mode currents on the cable - at least at HF - and can reduce such issues and this works for both the signal (antenna) and external clocking lines.

At DC and mains frequencies such chokes offer little/no efficacy and at low frequencies (below a MHz or so) these chokes lose their effective series resistance owing to limited inductance.Β  What this means is that if you have strong circulating currents (e.g. current flowing between your antenna "ground" and house mains "ground") they will have little effect.

Voltage "balun"

A possible alternative is to use a transformer to couple between RF sources:Β  A reliable, low-cost, commonly-available device for this is the Mini-Circuits Labs T1-1 which provides complete galvanic isolation between the source and load with a reasonable degree of longitudinal isolation.

While the T1-1 works well for the RF input, it will not work so well for the RX-888's external clock input by itself and the reason for this is that the output from a transformer winding is, by definition, bipolar about the zero volt point.Β  In the case of an external clock signal of, say, 1 volt peak-peak, each half would be above and below zero volts and with a direct DC connection to the Si5351's input it is unlikely to properly drive/trigger it.

If the signal is of higher amplitude - such as our 3.3 volt square wave - half of this "ugly" waveform will lie below ground potential and that below the 0.6 volt diode conduction voltage will be clamped, potentially distorting the waveform even more.

If a transformer-based method of isolation is used it is strongly suggested that a capacitor be placed in series with the '888's signal input to allow the waveform and voltage to float above ground and avoid negative clamping.Β  As mentioned earlier, a "DC Block" device could be used if you choose not to build your own device.

Example homebrew devices:

Here are a few (relatively) simple devices that one could build on a piece of scrap PC board - or you could go through the effort of designing and building a board with these features.

Figure 3, below, shows a simple resistive coupler incorporating the features suggested above:
Figure 3:Β 
A simple 10-ish dB resistive pad with DC blocking to keep the external clock input of the RX-888 "happy" and to prevent clipping of negative-going voltage by built-in protection diodes.Β  The "small" capacitor value also minimized the amount of stored charge dumped into the '888 due handling/shorting of the input cable.

This diagram shows a resistive pad that offers about 10 dB of attenuation - the values being determined assuming a 50 ohm system - but since the '888's input impedance is almost exclusively capacitive (a few 10s of pF) it is operating more as a voltage divider presenting a resistive load that just happens to be around 50 ohms.Β  The coupling capacitor between the pad and the '888 offers DC blocking to make it more forgiving to varying signal levels.Β  While the capacitor blocks DC, the signal being input to the Si5351 will find its own level due to the clamping effects of the protection diodes in the '888.

Also shown is the optional inclusion of a 1000pF capacitor that can be inserted at point "X":Β  This will decouple DC and mains AC currents that might flow between the clock source and the RX-888 itself - but it is low enough impedance that it does not necessarily offer RF decoupling between devices.Β  With the circuit shown above, however, you can precede it with decoupling device - such as a common-mode choke (e.g. current balun - the type with a dozen or so turns on a toroid) or even a T1-1 transformer.

Figure 4, below, shows another possible approach:
Figure 4:Β 
This circuit provides both common-mode isolation and a degree of band-pass filtering of the 27 MHz clock signal:Β  Filtering to a sine-like waveform reduces glitching due to cabling issues (reflections, misterminations) as well as offers a degree of protection to the RX-888's input as the filter will limit the amount of energy that could be imparted.Β  It also provides a (small) degree of termination (<150 ohms).Β Β  The "optional" 1000pF capacitor shunts low level leakage of the 27 MHz signal due to transformer imbalance - but it is suggested that one use a common-mode choke to restore isolation at HF frequencies.


This device is slightly more complicated, but it offers several advantages:

  • "L1" is a trifilar-wound toroidal transformer (that is, its turns consist of three wires gently twisted together before winding on the toroid).Β  Its intrinsic inductance is around 0.22uH and with the 150pF capacitor seen on the lower half of the diagram, it resonates broadly at 27 MHz - the external clock frequency for the '888.
  • The resistors shown offer a bit of resistive termination to the signal source (a bit below 150 ohms) which can help to reduce reflections on the cable.
  • These series 150 and 100 ohm resistors "decouple" the resonant circuit from the signal path somewhat and the values were chosen to allow sufficient "Q" to offer reasonable filtering of the input signal into a fairly good sine wave.
  • Figure 5:Β 
    The (nearly) sine wave output from the circuit depicted
    in Figure 4.
    Click on the image for a larger version.
    As this is a transformer-coupled circuit, there is no DC connection at all between the input and output.Β  Because it is resonant at 27 MHz, it will also offer a degree of rejection of other signals that might be present.Β  As the resonant circuit is wired to the "RX-888 side" of the circuit, it offers excellent protection to it.
  • As with the previous circuit, an optional 1000pF capacitor is shown as well:Β  Including this will reduce the common-mode isolation between the input and output but it will suppress a bit of leakage of the 27 MHz clock signal that can occur owing to the fact that the transformer that is L1 is not perfectly balanced.

The disadvantage of this circuit is that it requires the winding of a toroidal transformer and tuning it to 27 MHz - something easily done with a NanoVNA or an oscilloscope and an oscillator. Β 

Figure 5 shows the resulting waveform that has passed through the circuit depicted in Figure 4:Β  It is nearly a sine wave and as such, it is much more resistant to causing false triggering on "ringing" edges as compared to a square wave.

Figure 6:Β 
The prototype transformer/filter circuit depicted in Figure 4
connected at the Bodnar, connected to the '888 with a
short BNC<>SMA jumper.
Click on the image for a larger version.

Figure 6 shows the circuit of Figure 4 in action, connected directly to the Bodnar's output and - via a very short BNC to SMA cable - to the RX-888 sitting atop it.

This prototype unit was built in a piece of copper-clad PC board material.Β  On the top side, the components were wired with flying leads to the connectors and "dead bug" on the copper itself:Β  Between the "Bodnar" and the "RX-888" side the copper was cut to provide the two separate signal "grounds" with only the transformer coupling between the two.

At some point, it may be worth designing a small PC board for this, but for the meantime a small number of these prototypes have been built and put into service very successfully.Β  As suggested earlier, the a step attenuator was inserted between the Bodnar and this circuit and the signal reduced until the '888 no longer reliable locked to the external clock and it was found that there was plenty of margin to assure stable operation under varying conditions.

Lots of other possibilities

Now that you know what the RX-888 "wants", you have a better idea of what you are likely to be able to "safely" use to drive the external clock input of the RX-888.

* * * * *


This page stolen from ka7oei.blogspot.com

[End]


Better accuracy for the Multi Face GPS Clock

11 February 2024 at 21:45

Version 2.1.0 of the clock now implements interrupt-driven setting of the second. It needs the Pulse-per-second PPS output from a GPS for that. The result is that the clock is more accurate as it now changes seconds a few hundred milliseconds earlier and aligns perfectly with other clocks I have.

It is optional whether one wants to use this feature or not. If not, the PPS flag needs to be set to 0 in the Setup menu, otherwise the clock will wait indefinitely for a pulse that never comes. In the image to the right the PPS flag is set to "1".

The rest of the code status screen shown here displays: Line 2: code version and date. Line 3: GPS baudrate and PPS flag. Line 4: Time zone and offset from UTC in minutes, and language used for day names when displaying local time.

There are a few new screens also in version 2.1.0, among them one which reads a little database with names and birthdates from EEPROM and displays them in sorted order. See GitHub wiki for details. A program for writing to EEPROM is provided for loading this kind of data. Some big number screens, like the one shown first here, have also been made .

HamClock

By: g6nhu
14 January 2024 at 11:44

For some years I’d been aware of HamClock and around April last year I decided to investigate further and built one using an old Raspberry Pi 3B that I had spare.If you’ve never heard of HamClock, it’s described on the authors page thus: β€œHamClock is a kiosk-style application that provides real time space weather, radio […]

The post HamClock first appeared on QSO365.

10 bargraphs and progressbars for the LCD of the Arduino

26 December 2023 at 17:20

I needed some progressbars and collected all the bars I could find and implemented them on an Arduino with 20x4 or 16x2 LCD.Β 

There is a total of 10 different bars and here are the two which are used in the upcoming version of the Multi face GPS Clock.

The main design principle is that no more than 8 custom characters should be required per bar. That means that the custom character set is uploaded just once for each bar, giving much less probability for wearing out the LCD character memory with its presumed finite limit on the number of write cycles.Β 

This excludes some fancier bars that require more or less continuous updates of character sets during progression of the bar.

The code and images of the other eight bars can be found onΒ Github.

Multi Face GPS Clock ver 2.0 setup

6 August 2023 at 23:57

Clock nerds may appreciate that my multi-face GPS Clock software has come in a major new software version, V2.0.0. The main novelty is that it allows a typical user to setup the clock without having to edit the Arduino software. Youtube video demonstrations are below.

First, the 24 screens of the Favorites subset (make sure to turn on subtitles):Β 

Second, how to change the clock from EU to US setup (language, time zone, date format):

A brief press on the rotary encoder will enter the setup menu with these options:

< 0 Clock subset >, < 1 Backlight >, < 2 Date format >, < 3 Time zone >, < 4 Local language >, <5 Secondary menu>.

Submenus will lead the user to :Β 

  • Menu 0: Clock subset, gives a choice between Favorites (24 screens), All (40 screens), Calendar (13), Fancy clocks (22), Astronomy (16), Radio amateur (13)
  • Menu 2, Date format, gives a choice between EU, US, ISO, French, British, Period format, Dot format
  • Menu 3: 20 different time zones
  • Menu 4: English (en), French (fr), German (de), Norwegian (no), Spanish (es) day names for local time
  • Secondary menus will enable a choice of among others GPS baud rate

Chosen values will be stored in EEPROM so next time the clock is started it will start with the values used in the previous session.

A long press will reset the clock.

The code can be found on Github.


Clock cycles through chemical elements

18 April 2023 at 21:09

The latest addition to the Multi-face GPS Clock is a clock face that for hour, minute, and second cycles through the corresponding chemical element in the periodic table. This is shown in the image to the right.

This is screen number 39 for this clock, all of them selectable by rotating a rotary encoder. The project, with Arduino Mega hardware and software is documented on Github, where the current release is v.1.6.0 (2023-04-14).

The display also showsΒ  the full name for the element corresponding to the second, as shown above for element 3 which is Lithium. It is located in group (column) 1 and period (row) 2.

Planet positions for the Multi Face GPS Clock

3 November 2022 at 20:22

Another update, this time to add:

  • Azimuth and elevation for inner and outer planets relative to your present location. The inner planet screen shows Venus and Mercury and alternates also every 10 seconds between showing the position of the sun and the moon. The % illumination is also shown along with an estimate of apparent magnitude
  • The combined local time and UTC display now has an option to show ISO week number, defined to start on Mondays. (It is my understanding that the week number in the US is different, as Sunday is the first day of the week)
  • A new calendar screen now shows Gregorian (western), Julian (eastern) as well as Islamic and Jewish dates. The calculation of the Jewish calendar is tough for the Arduino Mega and takes some 5-6 seconds
  • A screen showing GPS Info has also been included. This screen shows the number of satellites in view (line 0), the number of satellites in use for position fix and their average signal to noise ratio (line 1), the mode and status indicators (line 2), and the Horizontal Dilution of Precision, Hdop, and its characterization in plain text (line 3).
Sources:










French, Spanish, German, Icelandic, Swedish, ...

7 August 2022 at 10:38

The multi-face Arduino GPS clock is inspired by the Clock Kit from QRPLabs. It is an open source project on GitHub, and it now has support for many more languages in the newly released versjon 1.4.0. As a language nerd myself, I love fiddling with multiple languages and character sets.

The local language option is for display of day name in case local time is shown. The default is English for local time. No matter the choice for local time, English is always used for UTC day name. Here are examples:

French:


Spanish:

German:

Icelandic:

Swedish:

Norwegian/Danish:

English:Β 


As is evident from the examples, the letters ΓΈ and ΓΆ are displayed when needed. The same goes for Γ₯, Γ‘, Γ©, Γ°, and ΓΎ which are all displayed properly according to need in the various languages. The wiki of the project on Github gives instructions for how to select language. It is also easy to add more languages.

The language option comes in addition to date and time formatting options.

Even more functions for the Arduino GPS Clock

5 April 2022 at 20:23

The multi-face Arduino GPS Clock has some new clock faces in software version 1.3.0:

  • Demo mode, where all screens are cycled through, with 10-15 seconds per screen
  • Astronomical clock
  • Wordclock display
  • Roman numbers
  • Morse code clock
This brings the total to 35 different screens. The updated code as well as documentation is on myΒ GithubΒ page.

The astronomical clock shows sidereal time as well as solar time:
  • A sideral year is one day shorter than a solar year, as noon is defined when the earth points in a particular direction relative to the stars rather than to the sun. Further explanation is here: sidereal time
  • Apparent solar time has noon when the sun is exactly to the South. It takes into account the shift due to daylight saving time, the shift due to my longitude relative to the 15 degree zone per hour, as well as irregularities in the Earth's orbit around the sun. See solar time here.









More functions for the Arduino GPS Clock

6 February 2022 at 21:22

My Multi-Face GPS Clock on Github now has a new software version: v. 1.2.0. Documentation is on the Github Wiki.

It has a new screen for predicting lunar eclipses 2-3 years into the future.


It also has a MathClock inspired by theΒ AlbertClockΒ which has its name from Albert Einstein. You have to be somewhat clever to figure it out. But actually it is not so hard. There are four ways to present an arithmetic computation to find hour and minute at regular intervals.
  • Additions only
  • Also subtraction
  • Also multiplication
  • and finally subtraction, multiplication, and divisionΒ 

Β  Β 


There is a new simpler look for a screen showing rise and set times for the sun according to Actual Civil, and Nautical sunrise/set with definitions 0, -6, and -12 degrees below the horizon.Β 


Finally, a screen with Actual rise time, solar elevation at local noon, and present elevation and azimuth for the sun has been added.

Β 

Updated Arduino Multi Face GPS Clock

26 October 2021 at 20:36

The GPSClock from last month has now been updated and software version 1.10 1.1.0 is available on Github. The main upgrade is the possibility to use a rotary encoder for selecting display screen or clock face.

In addition a new screen showing Easter for the next three years, according to both the Gregorian (Western) and Julian (Eastern) calendars, has been added as number 22. The dates are shown in the Gregorian calendar:


A new screen showing the clock in binary, octal, decimal, and hex format is screen 21:

Screens 19 and 20 show the clock in octal and hexadecimal formats and are not shown here.

Screen 15 showing UTC time, locator, position, altitude, and number of satellites has been reorganized in order to work correctly for Western and Southern positions also:


Screen 7 showing binary format has been corrected:


The schematic when a rotary encoder is substituted for the push buttons is:


A wiki has been started on Github where all hardware and software options are described in detail.

Multi Face GPS Clock published

28 September 2021 at 22:07

Version 1 of my Multi Face GPS Clock is here, as open source software for the Arduino Mega. It has some 22Β 19 different display screens showing time, location, solar and lunar positions and rise/set times. It shows UTC time as received from the GPS satellites and local time where it automatically adjust for summer time. The initial screen, no. 0, is this:

The display changes by pushing the right-hand pushbutton on the top, increasing the screen number by one. Similarly the number can be decreased by pushing the left-hand push-button. The potentiometer on the right side adjust the backlight. The clock is built on the same hardware as used for the K3NG Arduino CW keyer.

The date and time formats may be changed, and with US settings it looks like this:


This format is closer to the ISO standard:

When local time is shown, day names may be in another language than English. Here is my Norwegian day name display. The local short name for Tuesday (Tir) will be shown in some of the following displays also, because the native option is set:

The circuit diagram is rather simple and is based on an Arduino Mega and I2C or parallel connection to a 20x4 LCD display. It was drawn online on www.circuit-diagram.orgΒ and is a public circuit.

The GPS input is for serial data on a TTL-like interface. I use aΒ QRPLabs QLG1Β GPS. It is now discontinued and replaced by the QLG2.

The Menu+ and Menu- buttons will increase and decrease respectively the screen number in the following sequence of numbered screens.

The code is public on github.com/LA3ZA/Multi-Face-GPS-Clock. ItΒ uses 57714 bytes (22%) of program storage space of an Arduino Mega. This is too much to fit an Arduino Uno. Global variables use 2446 bytes (29%) of dynamic memory, leaving 5746 bytes for local variables.

Here are the other screens. Screen 1 shows UTC time and date, Maidenhead locator and number of satellites:

Screen 2 shows local time, and actual, civil, and nautical rise and set times for the sun, i.e. when the sun touches the horizon, and is 6 and 12 degrees below the horizon. To the right is shown solar elevation (-22 degrees), local time at solar noon (13.09), and solar elevation at local noon (27 degrees).

Screen 3 is similar to screen 2 except for the last line which shows the next lunar event, set, at 17:29, the lunar phase and illumination of, in this case, the decreasing moon, and lunar elevation.

Screen 4 is a lunar display showing actual elevation and azimuth, next set/rise time and azimuth. The last line shows lunar distance as a percentage of its maximum value (88-100%) and distance in km, as well as lunar phase (51% illumination).Β 

Screen 5 shows lunar rise/set times for the present 24 hours and the next and the corresponding azimuth angles:

Screen 6 is a display of time in various user configurable time zones, here showing central Europan Summer Time, Indian time, Eastern Daylight Time, and Pacific Daylight Time:

The following screens show several fancy, barely useable screens of various alternative displays. Screen 7 is binary while screen 8 is binary coded decimal:

Screen 9 is also binary coded decimal, but to be read vertically, like in the Wikipedia article on binary clock:Β 

Screen 10 is based on groups of three bars which are each 1/4 of a round clock:

Screen 11 emulates theΒ set theory clock in Berlin:Β 

Screen 12 emulates theΒ linear clock of Kassel:

Screens 13 and 14 are diagnostic displays which are not shown here. Screen 15 shows UTC time, position, altitude and number of satellites:

Screen 16 shows the NCDXF beacons in the 15, 12, and 10 m bands at the present time. It changes every 10 seconds as transmitters change frequency.

Screen 17 shows the NCDXF beacons in the 20, 17, and 15 m bands:

The NCDXF displays were inspired by the single-lineΒ display of OE3GOD.

Screen 18 shows the WSPR frequency used at the indicated time according toΒ coordinated band hopping. All 10 bands between 160 m and 10 m are covered in a 20 minute cycle:

After the last screen, the screen counter goes to 0 and the sequence is repeated as the right-hand button is pressed. Pressing the left-hand button will take you directly from the initial display to the WSPR screen.

The startup screen shows GPS baud rate (user settable) as it is waiting for a GPS signal:


The code is on github and has several options. The way to choose and set options has been inspired by the way it is done in the The K3NG Arduino CW Keyer.Β 

An important feature is that it is possible to customize which screens to show and in which order. Thus only screens 0-5 with time, solar and lunar positions and screens 16-18 with the NCDXF and WSPR sequences may be made available for instance.

Other options and features are:
  • FEATURE_LCD_I2CΒ  - I2C interface to LCD
  • FEATURE_LCD_4BIT - parallel interface to 20x4 LCDΒ 
  • FEATURE_DAY_NAME_NATIVE - to use local language day names for local time
  • SECONDS_CLOCK_HELP - to set the number of seconds per minute when time is shown in a normal format in the Binary, BCD, etc displays. Values from 0 (never) to 60 (always)
Date and time formats allow most of the formats found on the Date format page of Wikipedia:
  • DATEORDER = 'L': Little-endian:Β  22.04.2016 or 22.04 - EU
  • DATEORDER = 'M': Middle-endian:Β  04/22/2016 or 04/22 - US
  • DATEORDER = 'B': Big-endian:Β  Β  Β 2016-04-22 or 04-22 - ISO
  • DATE_SEP = '.'; // Alternatives: '.', '/', '–', ' ', ...
  • HOUR_SEP = ':'; // Alternatives: ':', '.', 'h', ...
  • MIN_SEPΒ  = ':'; // Alternatives: ':', '.', 'm', ...Β 

The GPS clock uses these libraries:
The lunar phase calculation is based on ideas discussed here. It is accurate to 5% or so compared to timedate.com.Β 

Details on how to set up the options and adaptations for the code published on github.com/LA3ZA/GPSClock is in the Wiki there.Β 


This blog post first appeared on the LA3ZA Radio & Electronics blog.

❌
❌