A Low Cost Thunderbolt GPSDO Monitor
For the current Thunderbolt Monitor kit, click here
Enterpreneurial eBay sellers, usually based in China are offering devices based on this copyrighted design and software, including links to this page offered as “manual” or “for help” or "support", without explicit reference or attribution to this site.
I am not associated with any of these operations. They use my design and my software without permission.
While the software is released here, the source code explicitly indicates the GPL copyright. Any use should be in full observance of the GPL rules.
Please note that the firmware used in these "clones" does not allow you to change the time zone, which is fixed at US Central Time (Chicago) or the default GPS offset, set at 16 seconds (currently 17, as of December 2016)
Since this page was written, a few important developments have taken place:
- The C8051F330 is no longer available in DIP package from Silabs or US distributors, even though it is still available on eBay from Chinese sellers. The origin and history of those parts are uncertain. Some such parts purchased on eBay have been found to be defective, so if you go that route, make sure to get some spares. The Toolstick is probably the only viable option for a prototype and it is my recommendation. Note that Silabs has a number of 8051 processors in SO-14 and SO-16 packages that can be used to build a breadboard. In most cases, the software would require only simple changes to be adapted to one of those chips.
- Silabs has entered into an agreement with Keil such that the superior Keil PK51 development tool suite is freely available when used with Silabs chips. This is a $5,000 package (round number). I very strongly recomment that you take advantage of that offer if you intend to do anything with Silabs' 8051 chips. You have to download it through the Silabs web site though, you won't find the link on the Keil web site.
- Check the Micro Controller section of the Wiki for more information about Silabs processors and tools.
- The Trimble Thunderbolt now reports a date about 18 years in the past, the effect of the "GPS Wekk Rollover". The original kit has no compensation for it but the current kit does. Check the new kit page linked at the top of this page for more information.
The purpose of this project is to build a low cost device that can monitor the serial packets generated by a Trimble Thunderbolt GPS Disciplined Oscillator (GPSDO).
The intention is to be able to decode either standard NMEA or Trimble TSIP packets and present sufficient information on a 2 line LCD display to ensure that the receiver is working and under what conditions.
It is very much work-in-progress, hard hat required before you read the rest of the page :-)
Here is the hardware for my prototype GPS Monitor, based on the following:
- Processor is a Silabs C8051F330 mounted on a Toolstick (Ref 1).
Note: the Toolstick uses an inexpensive programmer, and it already has a pot that can be used to adjust the LCD contrast. I like recycling.
- Development tool is the free SDCC C Compiler (Ref 3). I use version 2.6.0 for Win32, which I have saved here, just in case it would fall out of the Sourceforge repository. The current version (August 2013) is 3.3.0, but when I tried version 2.8.0, it would give me errors when compiling a project I inherited, so for now I recommend that you stick with 2.6.0 or switch to the superior Keil tools.
- Notes on the SDCC compiler and other 8051 development tools are available here (Ref 7).
- Source code is available (GPL 2.0), see the Wiki (Ref 5).
- Display is a common 2 lines x 16 characters device available from many places (Ref 4)
- Additional hardware requirements are limited:
- An unregulated 7-12V @ 50mA power supply (there is a need for both 5V and 3V voltages, obtained via inexpensive 3 terminal regulators, or one 5V regulator and 3 diodes to drop the 5V down to ~3V for the processor).
- One NPN transistor (2N2222 or equiv) for RS-232 level conversion and associated bias resistors.
- Optionaly a switch or push button to select display modes.
- Enclosure (or not) is up to you.
Here is the first prototype. I installed an LED on P0.7 for troubleshooting. As of v0.0.4, the LED only receives very narrow pulses and generates no visible light, but I use it as a test point for the scope probe.
The schematic (I have no shame). The part on the left is the component side of the Toolstick. Please note the very elaborate RS-232/TTL converter...
Component side view of the Toolstick and LCD. I used a 3 terminal voltage regulator for the 5V, and 3 diodes to drop the 5V down to ~3V for the processor. I used one of the LCD interface pad as a holder for the 3V supply to the Toolstick (the LCD is used in 4 bit mode, so data on the other 4 bits is irrelevant.)
The green LED on the Toolstick is connected to P1.3 and is not currently used by the firmware as of v0.0.4. The state of P1.3 is affected by the current LCD driver, so until this driver is rewritten, that pin cannot be used.
Here is a picture of the second prototype, intended for a Vacuum Fluorescent display (Noritake, Ref 6).
And here is a picture with the display, running:
Here is the schematic of Prototype #2:
The processor used, a C8051F330P, is in a 24 pin package, with 4 pins that are not used. That particular device is now obsolete and has been replaced with the C8051F330D (or C8051F330GP), which is the same processor packaged in a 20 pin package. The pinout of the P device is available in Ref 8 and the GP device pinout is available in Ref 9.
Here is the schematic with the D/GP processor:
- The 10k potentiometer is only necessary with the LCD display (contrast adjustment). The VFD does not have (or need) a contrast adjustment. It has a brightness adjustment capability in software. The GPSMon firmware sets the brightness to "high" by default.
- For firmware version 0.3.3 and above, the GPSMonitor will display Local Time using your time zone offset by default. Therefore, two additional switches shall be added, one between pin 17 and ground, and one between pin 18 and ground. Pin 18 is P0.6 and is used to deselect Time Zone Offset (display GPS time) when grounded. Pin 17 is P0.7 and is used to select Daylight Savings Time when grounded. It has no effect if Time Zone Offset is not selected.
- Time Zone Offset and GPS Offset are hard coded at this time (version 0.3.3). I am planning an upgrade to make this easily programmable, but it is not ready at this time.
Therefore, for firmware 0.3.3 and above to display GPS time like the original design, pin 18 shall be grounded.
Finally, here is a picture of both units side by side, in dim light. Which one do you prefer?
(to be honest, the LCD is equipped with LED backlighting, which was not connected)
The current state of the project and firmware download info is available in my Wiki (Ref 5).
And now, just for fun, here is a picture taken by Dan Karg of his GPSMonitor showing the 2008 leap second (the Thunderbolt was configured to output UTC):
Someone pointed to me a source of GPS Monitor hardware on eBay. The seller is fluke.l (note this is the letter "l", not the number "1").
I contacted him and he confirmed that he was using my software, in conjunction with overstock display modules. He was gracious enough to send me one of his monitors for the cost of shipping. The schematic is below:
I believe this is the second version, the first version did not have a voltage regulator.
In the unit I received from fluke.l, and as other people have reported to me, the three diodes D1-D3 have been replaced with 0 ohm resistors, which means the processor is powered directly from +5V. This is not good. The specification for the part has a max "normal" supply voltage of 3.6V, with an absolute max of 4.2V. Many buyers of these devices have reported the processor dying after several hours or days of operation and somehow blamed me for it....
If that is the case in yours, you will need to take your fluke.l monitor apart to replace the jumpers with diodes. That requires desoldering the LCD connector.
To remove the LCD display on the fluke.l kit, it is easier to unsolder the pins on the LCD side than on the processor board, as the holes on the processor board are a little too tight. Alternately, if you do not have the desoldering tool necessary for that job, I recommend to just cut the pins, desolder them one at a time (which can be done with a conventional soldering iron) and replace the pins with bus wire. That will be much easier and will minimize the risk of damage to the PWB.
- Silabs ToolStick page: www.silabs.com/products/mcu/Pages/ToolStick.aspx, please note that you will need the 330 Toolstick and a Base Adapter. As of this writing, the total cost is about $28.00 + S/H ($10 for the Toolstick and $18 for the Base Adapter). The Base Adapter can be reused across various projects of course.
- The C8051F330-GP is no longer available. You may find some at brokers, but I recommend using the Toolstick instead. If you find the DIP device, you will need to buy a standalone programmer, or buy the small adapter that plugs in the Base Toolstick adapter to provide a standard JTAG interface.
- SDCC for Win32, at sourceforge.net/project/showfiles.php?group_id=599 (scroll down to sdcc-win32 and select 2.6.0, then click on "sdcc-2.6.0-setup.exe")
- There are many sources for the ubiquitous 2x16 character LCD displays. All Electronics has several models starting at $6.00 www.allelectronics.com
- GPS Monitor Wiki: /doku2015/doku.php?id=precision_timing:gps_monitor
- Noritake Vacuum Fluorescent Displays: www.noritake-elec.com/uversion.htm. Alternately, Mouser and Digikey sell VFDs made by Newhaven Display that are cheaper (about $40) and do work: Search for M0216SD-162SDAR2-1. Please note that unlike LCDs, VFDs have limited life. Brightness starts dropping after about 2 years of continuous operation, and particularly noticeable is that brightness becomes uneven across the display.
- Notes on SDCC and other 8051 development tools are in the Wiki: /doku2015/doku.php?id=tools_for_the_silabs_and_other_8051_micro_controllers
- Pinout of the C8051F330P: C8051F330P_Pinout.pdf
- Pinout of the C8051F330-GP: C8051F330-GP_Pinout.png