Difference between revisions of "GPS Frequency Standard"

From Land Boards Wiki
Jump to navigation Jump to search
 
(85 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Build V2 ==
+
[[file:GPS_Freq_Std_P18490-720px.jpg]]
  
Stand-alone design does not require PC
+
<video type="youtube">kf08ITtFjvE</video>
  
 +
== Build V2 Features ==
 +
 +
Stand-alone design does not require PC. Generates a 10 MHz output after satellite lock.
 +
 +
* [https://hackaday.io/project/186090-10-mhz-gps-frequency-standard Hackaday project page]
 
* [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1313&_nkw=gps+module+neo-7M&_sacat=0&LH_TitleDesc=0&rt=nc&_odkw=gps+module+neo-7&_osacat=0&LH_PrefLoc=2 NEO-7M GPS]
 
* [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1313&_nkw=gps+module+neo-7M&_sacat=0&LH_TitleDesc=0&rt=nc&_odkw=gps+module+neo-7&_osacat=0&LH_PrefLoc=2 NEO-7M GPS]
 +
** Right Angle external antenna connector
 
* [[QTPy49]] card
 
* [[QTPy49]] card
** [[QT Py (SAMD based)]]
+
** [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/lbcards/GPS/GPS_004.py CircuitPython code] fits into [[QT Py (SAMD based)]]
** Running CircuitPython
+
*** [[QT Py (RP2040 based)]] could be used as alternative
** 3.3V, 40 MHz
+
** 3.3V, 48 MHz
* [[PulseGen]] modified to receive input from GPS output and drive 50 Ohm output on BNC
+
* [[DRIVE50]] - 50 Ohm coax card
 +
** Receives input from GPS output and drives 50 Ohm output on BNC
 +
* Status LED
 +
** Blinks in for 1 second at power up
 +
** Goes off until serial communications are working
 +
** Blinks on-off as data is received from GPS while waiting for Satellite signal lock
 +
** LED is on solid once output is enabled
 
* Fits into Aluminum Project Box Enclosure DIY 100*76*35mm - [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1313&_nkw=100*76*35mm+aluminum&_sacat=0&LH_TitleDesc=0&_odkw=100*76*35mm+Aluminum+PCB+Instrument+Box+Enclosure+Electronic+Project+Case+Set&_id=174408274566 ebay search]
 
* Fits into Aluminum Project Box Enclosure DIY 100*76*35mm - [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1313&_nkw=100*76*35mm+aluminum&_sacat=0&LH_TitleDesc=0&_odkw=100*76*35mm+Aluminum+PCB+Instrument+Box+Enclosure+Electronic+Project+Case+Set&_id=174408274566 ebay search]
 +
* [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1313&_nkw=gps+antenna&_sacat=0&LH_TitleDesc=0&rt=nc&_odkw=gps+module+neo-7M&_osacat=0&LH_PrefLoc=2 External GPS Antenna] with SMA connector
 +
* Inspired by [http://www.scullcom.uk/design-build-a-gps-locked-frequency-standard-part-4/ Scullcom design]
  
=== Wiring ===
+
== Hardware ==
  
<pre>
+
=== QTPy49 Card ===
# Wiring
 
# Signal  Color  From          To
 
# GND      Black  QTPy49 J4-1  GPS pin 4
 
# VCC      Red    QTPy49 J4-2  GPS pin 5
 
# QTPy>GPS Blue  QTPy49 J4-3  GPS pin 2
 
# GPS>QTPy White  QTPy49 J4-4  GPS pin 3
 
# GND      Black  QTPy49 J5-1  PulseGen GND
 
# VCC      Red    QTPy49 J5-2  PulseGen VCC
 
# PPS      Purple GPU pin 1    PulseGen In
 
# LED-VCC  Red    QTPy49 J9-3  D0
 
# LED-GND  Black  QTPy49 J9-1  GND
 
</pre>
 
  
=== Code ===
+
[[File:tindie-mediums.png|link=https://www.tindie.com/products/27066/]]
  
* [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/Seeed_XIAO_RP2040/GPS_004.py GPS_004.py] - Final working code
+
* CPU choices are
** Saved as code.py to auto-run
+
** [[QT Py (SAMD based)]]
* [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/Seeed_XIAO_RP2040/GPS_003.py GPS_003.py] - Capture data from GPS module a line at a time - helpful for debugging
+
*** [https://www.adafruit.com/product/4600 Adafruit QT Py SAMD21 Product Page]
* [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/Seeed_XIAO_RP2040/GPS_002.py GPS_002.py] - Read 32 bytes at a time
+
*** [https://www.seeedstudio.com/Seeeduino-XIAO-Arduino-Microcontroller-SAMD21-Cortex-M0+-p-4426.html?queryID=3273c05f7923d5ee5cbc677ce4892180&objectID=4426&indexName=bazaar_retailer_products Seeeduino XIAO]
* [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/Seeed_XIAO_RP2040/GPS_001.py GPS_001.py] - Formatted stings output
+
*** 48 MHz
 +
** [[QT Py (RP2040 based)]]
 +
*** [https://www.adafruit.com/product/4900 Adafruit QT Py RP2040 Product page]
 +
*** [https://www.seeedstudio.com/XIAO-RP2040-v1-0-p-5026.html Seeed XIAO RP2040 Product page]
 +
*** 133 MHz
 +
** [[XIAO ESP32C3]]
 +
*** [https://www.seeedstudio.com/Seeed-XIAO-ESP32C3-p-5431.html?utm_source=mailchimp&utm_medium=edm&utm_campaign=bazaar_0707&ct=t%28%29&mc_cid=3303ccf0f9&mc_eid=e1825627f2 SeeedStudio XIAO ESP32C3] (New 2022-07)
 +
*** RISC-V Single Core
 +
*** Up to 160 MHz
 +
*** 400 KB SRAM
 +
*** 4 MB Flash
 +
*** 2.4GHz Wi-Fi subsystem
 +
*** [https://wiki.seeedstudio.com/XIAO_ESP32C3_Getting_Started/ Wiki]
 +
*** [https://files.seeedstudio.com/wiki/Seeed-Studio-XIAO-ESP32/esp32-c3_datasheet.pdf?ct=t()&mc_cid=87cf985ac5&mc_eid=1dd4876369 ESP32C3 Datasheet]
 +
* Connectors/Headers
 +
** DC Power
 +
** AD0 GVS
 +
** AD1 GVS
 +
** AD2 GVS
 +
** AD3 GVS
 +
** I2C with ground/VCC
 +
** TX/RX with ground/VCC
 +
** SPI with ground/VCC
 +
* QTPy49 can be powered from with either the USB C or DC jack
 +
** Automatic Schottky diode power switching between
 +
*** 5V from USB C
 +
*** 5V on external DC jack
 +
*** 7-12V on DC jack
 +
* 49x49mm ODAS form factor
 +
* (4) 4-40 mounting holes
  
== Build V1 ==
+
=== GPS Card ===
  
* [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1313&_nkw=gps+module+neo-7M&_sacat=0&LH_TitleDesc=0&rt=nc&_odkw=gps+module+neo-7&_osacat=0&LH_PrefLoc=2 NEO-7M GPS]
+
* GPS Satellite Positioning Module NEO7M UBLOX Module
* [[FTDI-49MM]] card set to 3.3V levels
+
** [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2380057.m570.l1313&_nkw=NEO7M&_sacat=0 EBay search for NEO7M]
* Frequency set using ublox software on PC
 
* [[PulseGen]] modified to receive output from GPS and drive 50 Ohm output out of the box
 
* Fits into Aluminum Project Box Enclosure DIY 100*76*35mm - [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1313&_nkw=100*76*35mm+aluminum&_sacat=0&LH_TitleDesc=0&_odkw=100*76*35mm+Aluminum+PCB+Instrument+Box+Enclosure+Electronic+Project+Case+Set&_id=174408274566 ebay search]
 
 
 
== GPS ==
 
 
 
* GPS Satellite Positioning Module NEO7M UBLOX
 
 
* Specifications:
 
* Specifications:
 
* Working Voltage: 3.3v-5.0v
 
* Working Voltage: 3.3v-5.0v
Line 57: Line 81:
 
[[File:GPS_NEO-7M-03.PNG]]
 
[[File:GPS_NEO-7M-03.PNG]]
  
== OLED Display ==
+
=== 50 Ohm Driver Card ===
 +
 
 +
[[File:tindie-mediums.png|link=https://www.tindie.com/products/land_boards/5075-ohm-ttl-line-driver/]]
 +
 
 +
[[file:DRIVE50_P1080480-720PX.jpg]]
 +
 
 +
* Uses [[DRIVE50]] 50 Ohm Driver
 +
** Able to drive long 50 ohm coax
 +
** 5 parallel 74AC14 outputs with 249 ohm series resistors on each output
 +
** Square wave output
 +
** Very fast edges
 +
** BNC is high quality (Amphenol) connector
 +
 
 +
=== Alternate (Previous) Driver Design ===
 +
 
 +
* Previous design used modified [[PulseGen]] card to drive 50 Ohms at 3.3V level output
 +
** Remove oscillator circuit parts (R/C)
 +
** Only 1 BNC high quality (Amphenol) connector
 +
** Wire from GPS PPS pin attached as below
 +
** Use 1x2 pin header for power instead of 5MM Terminal Blocks
  
=== Description ===
+
[[File:PulseGen_Mod_P18338-720px.jpg]]
  
* OLED display, no need backlight, self-illumination.
+
* Schematic
* The display performance is better than the traditional LCD display, also lower consumption.
 
  
=== Specifications ===
+
[[file:PulseGen_Mods.PNG]]
  
* Driver IC: SSD1306
+
=== Wiring ===
* Size: 0.91 inch OLED
 
* Resolution: 128 x 32
 
* Size: 38 * 12 mm
 
* Number of pins: 4 Pin
 
* Interface Type: IIC interface
 
* Display Color: White
 
* Operating temperature:-40 ~ 85 ℃
 
  
=== I2C Pin Out ===
+
* Dupont headers
 +
** GPS = 5-pin
 +
** LED = 3-pin
 +
** UART = 4-pin
 +
** DRIVE50 = 3-pin
  
# GND: Power Ground
+
{| class="wikitable"
# VCC: Power + (DC 3.3 ~5v)
+
! Signal
# SCL: Clock Line
+
! From
# SDA: Data Line
+
! To
 +
! Color
 +
|-
 +
| GND
 +
| QTPy49 J4-1
 +
| GPS pin 4
 +
| Black
 +
|-
 +
| VCC
 +
| QTPy49 J4-2
 +
| GPS pin 5
 +
| Red
 +
|-
 +
| QTPy>GPS
 +
| QTPy49 J4-3
 +
| GPS pin 2
 +
| Blue
 +
|-
 +
| GPS>QTPy
 +
| QTPy49 J4-4
 +
| GPS pin 3
 +
| White
 +
|-
 +
| GND
 +
| QTPy49 J5-1
 +
| DRIVE50 J1-3 GND
 +
| Black
 +
|-
 +
| VCC
 +
| QTPy49 J5-2
 +
| DRIVE50 J1-2 VCC
 +
| Red
 +
|-
 +
| PPS
 +
| GPU pin 1
 +
| DRIVE50 J1-1 In
 +
| Purple
 +
|-
 +
| LED-VCC
 +
| QTPy49 J9-3
 +
| D0
 +
| Red
 +
|-
 +
| LED-GND
 +
| QTPy49 J9-1
 +
| GND
 +
| Black
 +
|-
 +
|}
 +
 
 +
== Build V1 ==
 +
 
 +
* [[Frequency_Calibration_via_GPS|Build Version 1]]
 +
* Requires PC running ublox software on PC to set output.
 +
 
 +
== Software ==
 +
 
 +
* Code runs on multiple CPUs on [[QTPy49]]
 +
** [[QT Py (SAMD based)]] or
 +
*** [https://www.seeedstudio.com/Seeeduino-XIAO-Arduino-Microcontroller-SAMD21-Cortex-M0+-p-4426.html?queryID=3273c05f7923d5ee5cbc677ce4892180&objectID=4426&indexName=bazaar_retailer_products SeeedStudio XIAO] or
 +
*** [https://www.adafruit.com/product/4600 Adafruit QT Py]
 +
** [[QT_Py_(RP2040_based)]]
 +
*** [https://www.seeedstudio.com/XIAO-RP2040-v1-0-p-5026.html SeeedStudio XIAO]
 +
*** [https://www.adafruit.com/product/4900 Adafruit QT Py]
 +
* [https://github.com/land-boards/lb-Arduino-Code/blob/master/LBCards/GPSFreqStd/FreqStdCap/FreqStdCap.ino FreqStdCap.ino] - Tool that runs on Arduino to generate frequency bytestrings to send to GPS
 +
* [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/lbcards/GPS/GPS_004.py GPS_004.py] - Final working code
 +
** Saved as code.py to auto-run
 +
* [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/lbcards/GPS/GPS_003.py GPS_003.py] - Capture data from GPS module a line at a time - helpful for debugging
 +
* [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/lbcards/GPS/GPS_002.py GPS_002.py] - Read 32 bytes at a time
 +
* [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/lbcards/GPS/GPS_001.py GPS_001.py] - Formatted stings output
 +
 
 +
== Enclosure ==
 +
 
 +
* Fits into Aluminum Project Box Enclosure DIY 100*76*35mm - [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2334524.m570.l1313&_nkw=100*76*35mm+aluminum&_sacat=0&LH_TitleDesc=0&_odkw=100*76*35mm+Aluminum+PCB+Instrument+Box+Enclosure+Electronic+Project+Case+Set&_id=174408274566 ebay search]
 +
* White-on-Black P-Touch labels
  
[[File:OLED-128x32.jpg]]
+
[[file:PulseGen_P1080344-720px.jpg]]
  
 
== Reference Materials ==
 
== Reference Materials ==

Latest revision as of 11:32, 1 August 2022

GPS Freq Std P18490-720px.jpg

Build V2 Features

Stand-alone design does not require PC. Generates a 10 MHz output after satellite lock.

Hardware

QTPy49 Card

Tindie-mediums.png

GPS Card

  • GPS Satellite Positioning Module NEO7M UBLOX Module
  • Specifications:
  • Working Voltage: 3.3v-5.0v
  • Color: As Picture Shown
  • Description:
  • With micro USB interface, you can debug GPS module with ordinary phone data cable, no longer need to use USB-TTL and other tools.
  • TTL interface is reserved to facilitate the use of USB-TTL or external microcontroller to control and receive GPS information.
  • Ceramic antenna on module board, no GPS external antenna can be used to search for stars.
  • Reserved SMA antenna interface, can use external antenna, star search ability is stronger.

GPS NEO-7M-03.PNG

50 Ohm Driver Card

Tindie-mediums.png

DRIVE50 P1080480-720PX.jpg

  • Uses DRIVE50 50 Ohm Driver
    • Able to drive long 50 ohm coax
    • 5 parallel 74AC14 outputs with 249 ohm series resistors on each output
    • Square wave output
    • Very fast edges
    • BNC is high quality (Amphenol) connector

Alternate (Previous) Driver Design

  • Previous design used modified PulseGen card to drive 50 Ohms at 3.3V level output
    • Remove oscillator circuit parts (R/C)
    • Only 1 BNC high quality (Amphenol) connector
    • Wire from GPS PPS pin attached as below
    • Use 1x2 pin header for power instead of 5MM Terminal Blocks

PulseGen Mod P18338-720px.jpg

  • Schematic

PulseGen Mods.PNG

Wiring

  • Dupont headers
    • GPS = 5-pin
    • LED = 3-pin
    • UART = 4-pin
    • DRIVE50 = 3-pin
Signal From To Color
GND QTPy49 J4-1 GPS pin 4 Black
VCC QTPy49 J4-2 GPS pin 5 Red
QTPy>GPS QTPy49 J4-3 GPS pin 2 Blue
GPS>QTPy QTPy49 J4-4 GPS pin 3 White
GND QTPy49 J5-1 DRIVE50 J1-3 GND Black
VCC QTPy49 J5-2 DRIVE50 J1-2 VCC Red
PPS GPU pin 1 DRIVE50 J1-1 In Purple
LED-VCC QTPy49 J9-3 D0 Red
LED-GND QTPy49 J9-1 GND Black

Build V1

Software

Enclosure

  • Fits into Aluminum Project Box Enclosure DIY 100*76*35mm - ebay search
  • White-on-Black P-Touch labels

PulseGen P1080344-720px.jpg

Reference Materials

Videos