Difference between revisions of "GPS Frequency Standard"

From Land Boards Wiki
Jump to navigation Jump to search
 
(44 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[file:GPS_Freq_Std_P18346-cropped-720px.jpg]]
+
[[file:GPS_Freq_Std_P18490-720px.jpg]]
  
 
<video type="youtube">kf08ITtFjvE</video>
 
<video type="youtube">kf08ITtFjvE</video>
Line 7: Line 7:
 
Stand-alone design does not require PC. Generates a 10 MHz output after satellite lock.
 
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
** [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/Seeed_XIAO_RP2040/GPS_004.py CircuitPython code] fits into [[QT Py (SAMD based)]] but a [[QT Py (RP2040 based)]] could be used
+
** [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/lbcards/GPS/GPS_004.py CircuitPython code] fits into [[QT Py (SAMD based)]]
 +
*** [[QT Py (RP2040 based)]] could be used as alternative
 
** 3.3V, 48 MHz
 
** 3.3V, 48 MHz
* Modified [[PulseGen]] card
+
* [[DRIVE50]] - 50 Ohm coax card
** Oscillator circuit removed (not used as pulse generator)
 
 
** Receives input from GPS output and drives 50 Ohm output on BNC
 
** Receives input from GPS output and drives 50 Ohm output on BNC
 
* Status LED
 
* Status LED
Line 20: Line 22:
 
** LED is on solid once output is enabled
 
** 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]
 
* Inspired by [http://www.scullcom.uk/design-build-a-gps-locked-frequency-standard-part-4/ Scullcom design]
  
== Wiring ==
+
== Hardware ==
 +
 
 +
=== QTPy49 Card ===
 +
 
 +
[[File:tindie-mediums.png|link=https://www.tindie.com/products/27066/]]
 +
 
 +
* CPU choices are
 +
** [[QT Py (SAMD based)]]
 +
*** [https://www.adafruit.com/product/4600 Adafruit QT Py SAMD21 Product Page]
 +
*** [https://www.seeedstudio.com/Seeeduino-XIAO-Arduino-Microcontroller-SAMD21-Cortex-M0+-p-4426.html?queryID=3273c05f7923d5ee5cbc677ce4892180&objectID=4426&indexName=bazaar_retailer_products Seeeduino XIAO]
 +
*** 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
 +
 
 +
=== GPS Card ===
 +
 
 +
* GPS Satellite Positioning Module NEO7M UBLOX Module
 +
** [https://www.ebay.com/sch/i.html?_from=R40&_trksid=p2380057.m570.l1313&_nkw=NEO7M&_sacat=0 EBay search for NEO7M]
 +
* 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.
 +
 
 +
[[File:GPS_NEO-7M-03.PNG]]
 +
 
 +
=== 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
 +
 
 +
[[File:PulseGen_Mod_P18338-720px.jpg]]
 +
 
 +
* Schematic
 +
 
 +
[[file:PulseGen_Mods.PNG]]
 +
 
 +
=== Wiring ===
  
 
* Dupont headers
 
* Dupont headers
 
** GPS = 5-pin
 
** GPS = 5-pin
 
** LED = 3-pin
 
** LED = 3-pin
** UART = 4 pin
+
** UART = 4-pin
 +
** DRIVE50 = 3-pin
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 57: Line 144:
 
| GND
 
| GND
 
| QTPy49 J5-1
 
| QTPy49 J5-1
| PulseGen GND
+
| DRIVE50 J1-3 GND
 
| Black
 
| Black
 
|-
 
|-
 
| VCC
 
| VCC
 
| QTPy49 J5-2
 
| QTPy49 J5-2
| PulseGen VCC
+
| DRIVE50 J1-2 VCC
 
| Red
 
| Red
 
|-
 
|-
 
| PPS
 
| PPS
 
| GPU pin 1
 
| GPU pin 1
| PulseGen In
+
| DRIVE50 J1-1 In
 
| Purple
 
| Purple
 
|-
 
|-
Line 81: Line 168:
 
|-
 
|-
 
|}
 
|}
 
== Code ==
 
 
* Code runs on either [[QT Py (SAMD based)]] or [[QT_Py_(RP2040_based)]]
 
* [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/Seeed_XIAO_RP2040/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/Seeed_XIAO_RP2040/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/Seeed_XIAO_RP2040/GPS_002.py GPS_002.py] - Read 32 bytes at a time
 
* [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/Seeed_XIAO_RP2040/GPS_001.py GPS_001.py] - Formatted stings output
 
  
 
== Build V1 ==
 
== Build V1 ==
Line 97: Line 174:
 
* Requires PC running ublox software on PC to set output.
 
* Requires PC running ublox software on PC to set output.
  
== GPS ==
+
== Software ==
  
* GPS Satellite Positioning Module NEO7M UBLOX
+
* Code runs on multiple CPUs on [[QTPy49]]
* Specifications:
+
** [[QT Py (SAMD based)]] or
* Working Voltage: 3.3v-5.0v
+
*** [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
* Color: As Picture Shown
+
*** [https://www.adafruit.com/product/4600 Adafruit QT Py]
* Description:
+
** [[QT_Py_(RP2040_based)]]
* With micro USB interface, you can debug GPS module with ordinary phone data cable, no longer need to use USB-TTL and other tools.
+
*** [https://www.seeedstudio.com/XIAO-RP2040-v1-0-p-5026.html SeeedStudio XIAO]
* TTL interface is reserved to facilitate the use of USB-TTL or external microcontroller to control and receive GPS information.
+
*** [https://www.adafruit.com/product/4900 Adafruit QT Py]
* Ceramic antenna on module board, no GPS external antenna can be used to search for stars.
+
* [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
* Reserved SMA antenna interface, can use external antenna, star search ability is stronger.
+
* [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
  
[[File:GPS_NEO-7M-03.PNG]]
+
== Enclosure ==
  
=== 50 Ohm Driver ===
+
* 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
* Uses modified [[PulseGen]] card to drive 50 Ohms at 3.3V level output
 
** Remove oscillator circuit parts (R/C)
 
** 5 parallel 74AC14 outputs with 249 ohm series resistors on each output
 
** Only 1 BNC high quality (Amphenol) connector
 
** Wire from GPS PPS pin attached as below
 
** Use 1x2 pin header instead of 5MM Terminal Blocks
 
* Able to drive long 50 ohm coax
 
* Square wave output
 
* Very fast edges
 
 
 
[[File:PulseGen_Mod_P18338-720px.jpg]]
 
  
* Schematic
+
[[file:PulseGen_P1080344-720px.jpg]]
 
 
[[file:PulseGen_Mods.PNG]]
 
  
 
== 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