Difference between revisions of "GPS Frequency Standard"
Jump to navigation
Jump to search
Blwikiadmin (talk | contribs) (→Wiring) |
Blwikiadmin (talk | contribs) |
||
(23 intermediate revisions by the same user not shown) | |||
Line 9: | Line 9: | ||
* [https://hackaday.io/project/186090-10-mhz-gps-frequency-standard Hackaday project page] | * [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/lbcards/GPS/GPS_004.py CircuitPython code] fits into [[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)]] |
+ | *** [[QT Py (RP2040 based)]] could be used as alternative | ||
** 3.3V, 48 MHz | ** 3.3V, 48 MHz | ||
* [[DRIVE50]] - 50 Ohm coax card | * [[DRIVE50]] - 50 Ohm coax card | ||
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 82: | Line 169: | ||
|} | |} | ||
− | == | + | == 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]] | * Code runs on multiple CPUs on [[QTPy49]] | ||
Line 97: | Line 189: | ||
* [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_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 | * [https://github.com/land-boards/QT-Py/blob/main/CircuitPython/lbcards/GPS/GPS_001.py GPS_001.py] - Formatted stings output | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Enclosure == | == Enclosure == |
Latest revision as of 11:32, 1 August 2022
Contents
Build V2 Features
Stand-alone design does not require PC. Generates a 10 MHz output after satellite lock.
- Hackaday project page
- NEO-7M GPS
- Right Angle external antenna connector
- QTPy49 card
- CircuitPython code fits into QT Py (SAMD based)
- QT Py (RP2040 based) could be used as alternative
- 3.3V, 48 MHz
- CircuitPython code fits into QT Py (SAMD based)
- 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 - ebay search
- External GPS Antenna with SMA connector
- Inspired by Scullcom design
Hardware
QTPy49 Card
- CPU choices are
- QT Py (SAMD based)
- QT Py (RP2040 based)
- XIAO ESP32C3
- 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
- Wiki
- 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
- Automatic Schottky diode power switching between
- 49x49mm ODAS form factor
- (4) 4-40 mounting holes
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.
50 Ohm Driver Card
- 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
- Schematic
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
- Build Version 1
- Requires PC running ublox software on PC to set output.
Software
- Code runs on multiple CPUs on QTPy49
- FreqStdCap.ino - Tool that runs on Arduino to generate frequency bytestrings to send to GPS
- GPS_004.py - Final working code
- Saved as code.py to auto-run
- GPS_003.py - Capture data from GPS module a line at a time - helpful for debugging
- GPS_002.py - Read 32 bytes at a time
- GPS_001.py - Formatted stings output
Enclosure
- Fits into Aluminum Project Box Enclosure DIY 100*76*35mm - ebay search
- White-on-Black P-Touch labels
Reference Materials
- Design & Build a GPS locked Frequency Standard- Scullcom
- SIMPLE 10 MHZ GPS FREQUENCY STANDARD AND RF GENERATOR
- uses Arduino Nano as FTDI replacement
- An Arduino-based GPS Disciplined Oscillator
- An Arduino Version of Brooks Shera's GPSDO
- Simulating the Brooks Shera (W5OJM) GPSDO Algorithm
Videos