AG00013_.gif (7874 Byte)This page is still under construction, I am using it as my online notebook.
To Do   It's time to finalize and sort the content on this page, but ...! ;-)
 
   
   

Bauelemente, Baugruppen

"Die Einen kochen und kreieren leckere Gerichte; hier findet man einige Zutaten zur Realisierung elektronischer Schaltungen."
  mkn, 2013, ;-)
 
   
   
   
   

-> Software für den simple-GPSDO


 Die Software von F1CJN wird als Basis-SW verwendet, lediglich die gewünschte Timepulse-Frequenz ist anzupassen.

    -> GPSDO : NE0-7M with Arduino to replace the 10 KHz from GPS Rockwell Jupiter  by F1CJN

  - selbstverständlich sind eigene Kreationen verwendbar, die Hardware-Schnittstellen sind zu beachten
  - Die vorgenommenen Erweiterungen der Basis-Software sind u.a..
    - einige Korrekturen in der Anzeige(wie z.B. Vornullen oder Leerzeichen bei der Zeitanzeige)
    - Beseitigung des sporadischen Springens der Sekunden
    - Messung der Abstimmspannung des OCXO
    - Lock-Zustand der PLL, hier gibt es noch einiges zu tun [15.09.20, mkn]
    - Temperaturmessung, der Sensor ist frei positionierbar, z.B. Gehäuse-Temperatur des OCXO,
       Geräte-Innentemperatur, externer, kabelgebundener Sensor, etc.
    - Auswahl der angezeigten Informationen, Anpassung an das gewählte Display und den Anforderungen des OM's
    - manuelles oder softwaregestütztes Holdover, in Planung für November 2020, leider nur Planung bis heute[27.01.21],
´      manuelles Holdover umgesetzt, PCB rev2.37, Feb. 2021
   -  simple-Holdover umgesetzt, Uc Generierung via DAC, PCB rev 2_37


...[14.02.2021,..., mkn]

Nun ist nahezu ein Jahr, seit Nutzungsbeginn der Software von F1CJN und den mitgelieferten Bibliotheken, vergangen.
Es wird Zeit zu einem Update der Bibliotheken und der nötigen Anpassung der Software.
   
 
 GPSDO : NE0-7M with Arduino to replace the 10 KHz from GPS Rockwell Jupiter  by Alain, F1CJN 

 Das NEO-7M_Arduino_Jupiter_10KHz.zip enthält folgende Files:



Bitte auch das pdf-File beachten NEO-7M_Arduino_Jupiter_10KHz.pdf, 11.11.2016
 - GPSDO : NE0-7M with Arduino to replace the 10 KHz from GPS Rockwell Jupiter par Alain Fort F1CJN
    - Projekt-Idee
    - Blockschaltbild
    - Erläuterung zur Software
    - gelisteter Sketch
    - die mitgelieferten Bibliotheken

   

 

Alain_F1CJN (@f1cjn) / Twitter




Bild: F1CJN
- Software:
   - ino -> NEO-7M_10KHz_V1.0.ino by Alain, F1CJN
   - PCB: V. 1.0 & 2.37
   - GPS-Rx-Breakout Board mit ublox NEO-6M-, NEO-7M-Modul (F1CJN hat die Software für dieses Modul geschrieben)
   - Display: 4*20 Zeichen, LCD, I2C-Interface
   - Funktionen:
     - Setzen der TiP(Timeimpuls)-Frequenz
   - Anzeige:
     - Koordinaten
     - Zeit(UTC)
     - SAT, QTH-Locator
     - Datum könnte aktiviert werden
   - Ausgabe auf seriellen Monitor der IDE



Programmablaufplan, Flow chart


    - Serial Monitor via USB at 115200 bauds  


      ---> Serieller Monitor
   
 - Bitte die von F1CJN  mitgelieferten Bibliotheken TinyGPSPlus, LiquidCrystal und Wire verwenden.   

   Einbinden der Zip-Files über die IDE.

  Anmerkung: zusätzlich habe ich auch die Wire-Bibliothek aufgenommen, da es sonst eine Fehlermeldung gibt.
  Ich habe den Eindruck, dass in der Library LiquidCrystal etwas nicht sauber programmiert ist.
  So bleibt immer etwas für die Zukunft, hi. [mkn]
Achtung, in der mitgelieferten TinyGPSPlus-Version
gibt es einige Abweichung zur üblichen Notation in der Original-Version.

https://github.com/mikalhart/TinyGPSPlus
   
 - Anwendung sGPSDO: in Zeile 128 die gewünschte Timepulse-Frequenz eintragen  
   
  -> Ausdruck des Sketches mit Zeilennummer mit Notepad++   
   
- Issue: Time, Sekundenanzeige

  - die Sekundenanzeige springt von Zeit zu Zeit

  - Lösung, in Zeile 149 Funktion smartdelay(ms), ms reduzieren, neu: smartDelay(600);, 600 ms ,
     Zeit zum Auslesen der durch das GPS-Modul zyklisch gesendeten Datensätze
 
   
=======================================================================================  
   
Die nachfolgenden Sketche sind angepasste, umfangreich erweiterte Sketche auf der Basis der Software von Allain, F1CJN.  
   
Tnx for support, testing and/or comments to F1CJN, DL5MGD, TK5EP, DC5WW,  DL4ZAO, DJ8LC, DM4iM, DK4BX,  DH5SW, DF6NN and ...  
   
   
Die Basis-Software wurde bewusst beibehalten, im Sinne  "Bauen und Lernen" oder auch "Learning by Doing", angepasst und erweitert.
Da war auch etwas mit KISS.

Jedem Einzelnen ist es natürlich vorbehalten die Software in seinem Sinne anzupassen, ist ohnehin das obige Ziel, oder andere Lösungen zu schaffen.
Ein ausgebildeter Programmierer wird die Struktur des Sketches  sicherlich zerlegen und nach den allgemeinen Gepflogenheiten aufbauen.

Im Netz finden sich zahlreiche alternative Bibliotheken zu der hier verwendeten TinyGPSPlus.

Und wer den Sketch genau liest findet auch verschiedene direkte UBX-Kommandos zur Steuerung des ublox NEO-6M/7M Moduls.

Alternative GPS-Bibliotheken sind u.a.:

- UbxGps
- NeoGPS
- GPS-neo-6m  -> https://cristiansteib.github.io/Gps-neo-6m

Unseren Slogan sollten wir in
"Lesen, Bauen und Lernen" abändern.
   
   
=======================================================================================  
   

- Bezug der Software

 
   
    -> dl7ukm @  darc.de  [Leerzeichen löschen]  
   
   - Bei der Anfrage bitte die gewünschte Version der Software angegeben.
   - verwendete Version der Leiterplatte
   - Typ des GPS-Rx-Modules NEO-6M, NEO-7M, NEO-M8M, ...
   - verwendetes Display
   - genutzte Optionen
   - Was soll angezeigt werden?
   - ino- oder hex-File
 
   
- Aktuelle Versionen der Software
 
   
   
- SW für Display: 4*20 Zeichen, LCD, I2C-Interface
 
- SW für Display: 2*16 Zeichen, LCD, I2C-Interface  
- SW für Display: OLED, I2C-Interface  
   
- Bibliotheken(Libraries)  
   
   
   
   
=======================================================================================  
   
- SW für Display: 4*20 Zeichen, LCD, I2C-Interface
 
   
   
- ino -> NEO6_4_Zeilen_xxxx_V0.15.ino ->  Auch in HEX Format verfügbar!

   - PCB: rev1,  rev2_37, rev2_37a, plus Modifikation,  rev2.1 plus Modifikation, ab PCB rev.2.2_xx wird die Modifikation nicht benötigt

   - GPS-Breakout-Board mit GPS-Modul  NEO-6M, NEO-7M, NEO-M8M

   - Achtung Modifikation: R17 von Pin 7(MCP6002) trennen und mit TP3, mittels Drahtbrücke, verbinden. 08.04.2020 mkn
    - Attention modification: R17 separated from pin 7 (MCP6002) and connected to TP3 by a wire.

    - L2: Ferrit Bead -> Baumappe

    - Optional: Taster, push button zur Steuerung der Zeile 4, ForcedHoldover ON/OFF, D7 an K11
                         Schalter an D8, Steckerleiste: Ab- und Zuschaltung des Backlights des LCD-Displays

   - Display: 4*20 Zeichen, LCD, I2C-Interface

   - Funktionen:
     - Setzen der TiP(Timeimpuls)-Frequenz
     - Startbildschirm: Call und gesetzte TiP-Frequenz
     - Anzeige:
      - Koordinaten (alternativ in Zeile 4: Asl, Hdop), Auswahl by default oder mittels Taster
      - QTH-Locator, 8 stellige Anzeige, kann durch Auskommentieren auf 6 stellige Anzeige geändert werden. Tnx to Patrick, TK5EP.
      - SAT used
      - Lock(unLock) der PLL
      - Uc: Steuerspannung des VC-OCXO, dreistellig nach dem Komma, erhöhte Auflösung durch Oversampling (15 bit)
      - Temperatur-Sensor (entfällt für PCB V 1.0)
      - Zeit(UTC)

     - LED: Lock PLL

     - manuelles Holdover, Einstellung  der Uc mittels  R14, entfällt für PCB rev1
     - simple-Holdover (Einstellung  der Uc mittels  MCP4725), entfällt für PCB rev1
 
   - smart-Holdover, die Haltespannung wird adaptiv erfasst, entfällt für PCB rev1
     
- Forced-Holdover, entfällt für PCB V 1.0

      -  Debug-Mode: serieller Monitor, DEBUG 12 serieller Plotter Anzeige

    - Ausgabe auf seriellen Monitor der Arduino IDE oder Terminal, z.B. PUTTY, via USB-Schnittstelle des NANO
    - Ausgabe auf seriellen Plotter der IDE: u.a. für DEBUG 12, graphische Auswertung der Abstimmspannung Uc TP3 über die Zeit

    - Eingaben durch User im Eingabeblock innerhalb der INO

       - Verwendeter GPS-RX: ublox NEO-6M, NEO-7M, NEO-M8M
       -TiP-Frequenz, Hz, freie Wahl der Frequenz im Rahmen der Funktionalität der PLL, z.B. u.a. 1 kHz, 10 kHz, 100 kHz für 10 MHz-GPSDO
         oder 2,5 kHz, 25 kHz, 250 kHz für 25-MHz-GPSDO
       - Call für Anzeige auf dem Startbildschirm
       - Warm-Up-Periode für das Vorheizen des OCXO
          - Default: 60 Sekunden
       - Wahl der Temperatursensor-Auflösung
         Ein vorhandener Temperatursensor wird automatisch erkannt und ausgewertet.
      - Eingabe der Betriebsspannung des NANO, zwecks erhöhter Genauigkeit der Spannungsanzeige Uc
      - Eingabe EFC@ 10 MHz

      - Debug-Mode selektierbar

     - GPS-RX: Navigationsmodus, dynamisches Model auf Stationär gesetzt, dadurch Erhöhung TiP-Frequenzgenauigkeit, um Faktor ca.2
     - GPS-RX: SBAS Support abgeschaltet
     - Cable Delay: Default 50 ns, auf 25 ns reduziert, Kabellänge 5 m
     - Minimale Elevationswinkel von 5 Grad(Default). Der Wert kann auf Anfrage angepasst werden.

     - Bibliotheken:  TinyGPSPlus Version 1.02.b und New-LiquidCrystal [master.zip]

     - Bibliothek OneButton by Matthias Hertel

    - Startsequenz in void setup() wurde verändert.
      
Nunmehr GPS-Rx Reset, GPS-RX TiP, GPS-Rx konfigurieren, Aufruf smartHoldover entfällt

  
     Verwendete IDE: Arduino IDE 1.8.19 Download

Bezug der Software

-> dl7ukm @  darc.de  [Leerzeichen löschen)
25.05.2021

Maidenhead Locator System

QTH-Locator by wiki.oevsv.at

Foto: Patrick, TK5EP




- ino -> NEO6_4_Zeilen_xxxx_V0.16.1.ino ->  Auch in HEX Format verfügbar! [02.01.2022]


- Änderungen gegenüber Version Version  --> NEO6_4_Zeilen_xxxx_V0.15.ino

Optional:

Taster, push button, zur Steuerung der Zeile 4, ForcedHoldover ON/OFF, 
             Ab- und Zuschaltung des Backlights des LCD-Displays an D7/K11

 -
Die Nutzung eines Schalters zum Abschalten des Backlights an D8 ist in der SW deaktiviert(auskommentiert).


- Veränderung des Ablaufes innerhalb der void setup() - Routine
  - Reset des GPS-NEO-Moduls wurde vorgezogen
  - Warm-up des OCXO mit 60 s default
  - Nachdem der GPS-RX 4 Satelliten erkennt blinkt die 1pps-LED im Sekundentakt
  - Die Konfiguration des GPS-Moduls folgt nach Abschluss der Warm-up-Periode
  - 1pps-LED

AG00013_.gif (7874 Byte)


 
 

Auswertung, Anzeige der Startmeldung des "simple-GPSDO"
 mit dem Terminalprogramm PuTTy
































Sketch-> NEO6_4_Zeilen_xxxx_V0.17.ino ->  Auch in HEX Format verfügbar! [05.02.2022]

- Änderungen gegenüber Version NEO6_4_Zeilen_xxxx_V0.16.1.ino

 - Ausgewählte Anzeigemodus wird gespeichert und bei Neustart der Software wiederverwendet
  - Speicherung via EEPROM des NANO
 - Auswertung und Anzeige OverFlow(Rx-Buffer) der SoftwareSerial-Schnittstelle
 - modifizierte Bibliothek  SoftwareSerial_128.zip
   RX-BUFFER: 128 Byte
 - Reorganisation der DEBUG-Routinen
   - gleichzeitiger Aufruf von mehreren Routinen nun möglich
 - Temperaturauswertung, Bestimmung der Device Address, Ausgabe der gesetzten Resolution
 - Auswahl QTH-Locator 6- oder 8-stellige Ausgabe
 - Config des GPS-Moduls setzbar































































































Version ≥ 0.15.2
   
Warm-up time @ +25°C 3 5 min ∆ffinal/f0 < ±0.1 ppm          AXIOM40    5 min max < ± 1 Hz
- Wie messen? EFC@10MHz müsste bekannt sein
 
   



Warum warm-up Zeit für den OCXO? [3.12.2021, mkn]

 - Zielsetzung: Verhinderung eines unnötigen Wettkampfes zwischen dem Phasendiskriminator, der TiP und der geteilten 10-MHz-Frequenz
   des OCXO, beginnend mit dem kalten OCXO und der beträchtlichen Abweichung von seiner nominellen Frequenz
 - Während der sogenannten warm-up Zeit wartet(delay) der NANO bevor der nächste Schritt abgearbeitet wird
 - ....

 - Vorteile
   - Problemlösung: einige OCXO[CTI] wurden durch die PLL-Schleife nicht gefangen
   - Durch Erhöhung der Grenzfrequenz des PLL-Filters konnte in diesen kritischen Fällen ein Einrasten erzielt werden, erkauft mit
      einer kleineren Regelzeitkonstante
    Beispiel: TiP= 1 kHz,  R9= 330k, C9= 100uF kein Einrasten der PLL,  Reduktion von R9 auf 165k und 100uF OK,
    Bei Nutzung der Warm-up-Periode wurde der OCXO, auch mit der ursprünglichen Filterwahl, stabil gefangen.

 - Die Funktion ist schon längere Zeit in der SW verfügbar, der ursprüngliche Default von 60 s, aber irgendwann aus irgendeinem Grund, beim
   Testen der SW, auf Null gesetzt.
 - Eine noch zu untersuchende Erscheinung ist eine verbesserte Lock-Detection. Manchmal habe ich den Eindruck, dass sich der Lockdetector
   mit der geringen Bandbreite des Filter und die der PLL schwer tut.
AG00013_.gif (7874 Byte)
   
Frequenzgang der gewählten PLL-Filter, TiP: 1 kHz  
   
fc= 4,8 mHz  bzw. 9,6 mHz  
    
   
Android-APP: --> RF & Microwave Toolbox Pro  
   
   
   
=======================================================================================  
   
- SW für Display: 2*16 Zeichen, LCD, I2C-Interface
 
   
- Software:

  -  ino -> NEO6_2_Zeilen_xxxx_V0.10.ino
   - PCB: rev1,  rev2_37, rev2_37a
   - GPS-Rx-Breakout Board mit NEO-6M-, NEO-7M-Modul
   - Display: 2*16 Zeichen, LCD, I2C-Interface
   - Funktionen:
     - Setzen der TiP(Timeimpulse)-Frequenz
    - Startbildschirm: Call und gesetzte TiP-Frequenz
     - Anzeige:
      - Zeit(UTC), QTH-Locator
      - Uc: Steuerspannung des VC-OCXO, SAT
     - Ausgabe auf seriellen Monitor der Arduino IDE
     - Verwendung der von F1CJN mitgelieferten Bibliotheken


Bezug der Software
-> dl7ukm @  darc.de  [Leerzeichen löschen]


2*16 Display LCD
   
  -  ino -> NEO6_2_Zeilen_xxxx_V0.11.ino  

     wie NEO6_2_Zeilen_xxxx_V0.10.ino plus manuelles Holdover (entfällt für PCB V 1.0)
Bezug der Software
-> dl7ukm @  darc.de  [Leerzeichen löschen]
   
   
   -  ino -> NEO6_2_Zeilen_xxxx_V0.12.ino 

     wie NEO6_2_Zeilen_xxxx_V0.10.ino plus manuelles Holdover(entfällt für PCB V 1.0) und Lock-Detektion als Anzeige und LED
     - Eingabeblock um U_NANO erweitert, verbesserte Genauigkeit der Spannungsanzeige
Bezug der Software
-> dl7ukm @  darc.de  [Leerzeichen löschen]


L: PLL locked S. Anzahl SAT



 
uL: unlocked, H: Holdover ON
   
 -  ino -> NEO6_2_Zeilen_xxxx_V0.14.ino  

- - Achtung Modifikation: R17 von Pin 7(MCp6002) trennen und mit TP3, mittels Drahtbrücke, verbinden. 08.04.2020 mkn
   - wie NEO6_2_Zeilen_xxxx_V0.12.ino 

   - QRA ist gegen Temperaturanzeige austauschbar -> Eingabeblock bool qra = false; -> ergibt Temperaturanzeige
   - ......
Bilder Anzeige.....
 - NEO6_2_Zeilen_xxxxxx_V0.14a.ino 29.10.21, DEBUG 0 gibt nur noch die Startmeldungen an den seriellen Monitor aus  
   
 - NEO6_2_Zeilen_xxxxxx_V0.14b.ino 01.11.21

  - DEBUG 0 gibt nur noch die Startmeldungen an den seriellen Monitor aus
  - UTC:hh.mm

  - Schalter an D8, Stiftleiste K11: Ab- und Zuschaltung des Backlights des LCD-Displays

  - Die Software und die Anzeige ist reduziert auf das Nötigste 
    - Anzeige --> keine LOCK-Anzeige, Bewertung zum Lock-Zustand der PLL über Beobachtung Uc, Abstimmspannung VC-OCXO,
                       durch den User
    - Simple Holdover
 
   
  - Hardware: IC1: CD74HC7046, CD74HCT7046 --> CD74HC4046, CD4046B, CD74HCT4046, RCA CD4046AE
                          --> keine LOCK-Anzeige/LED(Auswertung)

  - Achtung, Modifikation der Bestückung, beim Einsatz des CD74HC4046 oder CD74HCT4046 ist C6 nicht zu bestücken!
AG00013_.gif (7874 Byte)
  - NEO6_2_Zeilen_xxxxxx_V0.15.ino 29.11.21

     Funktionsumfang wie NEO6_2_Zeilen_xxxxxx_V0.14b.ino(01.11.21), nun mit veränderter void setup(), Warm-up OCXO mit 60 sec(default)
 
   
   
   
=======================================================================================  
   
Verwendete Bibliotheken(Libraries) für zwei oder vierzeilige LCD
 
   
Verwendete IDE: Arduino IDE 1.8.19 Download  
   
- Bibliothek New-LiquidCrystal [master.zip] by fmalpartida  
- Bibliothek TinyGPSPlus Version 1.03  by Mikal Hart  [24. Jan. 2022]
 
   
- Bibliothek Arduino-Temperature-Control-Library by Miles Burton

  Arduino-Temperature-Control-Library/releases/tag/3.9.1

- Dallas_Temperature_Control_Library
 
- Bibliothek One Wire by Paul Stoffregen  
   
- Bibliothek OneButton by Matthias Hertel

              - Source code(zip) 2.0.3
 
   
- modifizierte Bibliothek  SoftwareSerial_128.zip
   RX-BUFFER: 128 Byte
 
   
   
=======================================================================================  
   
SW für Display: OLED, I2C-Interface
 
   
- Software, OLED-Display:

  - ino -> NEO6_OLED_0.01, in Vorbereitung [19.10.2020, mkn], wird zur Zeit nicht bearbeitet [07.01,21]
   - PCB: rev1,  rev2_37, rev2_37a, plus Modifikation
   - GPS-Rx-Breakout Board mit NEO-6M-, NEO-7M-Modul
   - Display: 128*64 Pixel, 1,3 Zoll OLED, SH1106, I2C
   - Funktionen:
     - Setzen der TiP(Timeimpulse)-Frequenz
    - Startbildschirm: Call und gesetzte TiP-Frequenz
   - Anzeige:
     - Zeit(UTC)
     - SAT, QTH-Locator
     - Uc: Steuerspannung des VC-OCXO
   - Ausgabe auf seriellen Monitor der IDE
   
07.05.2021, mkn
 Es geht voran, in Anlehnung an den Sketch NEO6_4_Zeilen_xxxx_V0.14.4.ino. Sollte in den kommenden Tagen lieferbar sein.
Den Umfang der Anzeige wählt der User im  Sketch oder über die Tastersteuerung aus.

05.12.2021
 Kein Fortschritt, lediglich eine Betaversion verfügbar.

17.01.2022, mkn
 NEO6_OLED_xxxxxx_V0.14.8 entsteht

 U8X8_SH1106_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
 // Wechsel zu Display which does not sendACK//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK);

19.01.22, mkn
NEO6_OLED_xxxxxx_V0.14.9
// OLED Display SSD1306 128x64 0,96 inch, I2C-Adresse 0x3c
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/* reset=*/ U8X8_PIN_NONE);
   
- NEO6_OLED_xxxxxx_V0.15.1 28.01.2022, mkn  
   
- Software, OLED-Display:

  - ino -> NEO6_OLED_xxxxxx_V0.15.1, 28.01.2022, mkn

   - PCB: rev1,  rev2_37, rev2_37a, plus Modifikation R17, ...
   - GPS-Rx-Breakout Board mit NEO-6M-, NEO-7M- und NEO-M8M-Modul
   - Display: 128*64 Pixel, 1,3 Zoll OLED, SH1106, I2C, SSD1306 128x64 0,96 Zoll, I2C

   - Funktionen:
     - Setzen der TiP(Timeimpuls)-Frequenz
     - Startbildschirm: Call und gesetzte TiP-Frequenz
     - Auswertung relevanter GPS- und Betriebsdaten

     - Anzeige:
      - User 10mcGPSDO
      - QTH-Locator, 8 stellige Anzeige
      - Datum, dd/mm/yyyy
      - Betriebszeit, nach Start der Software. Anzeigeformat: dd.hh:mm, Tage : Stunden: Minuten
                         [Achtung, nach ca. 49,7 Tagen erneuter Beginn bei Null]
      - Koordinaten (alternativ zu Datum und Betriebszeit), Auswahl mittels Taster D7/K11
      - Temperatur-Sensor (entfällt für PCB V 1.0)
      - 3dFix
      - ssOverFlow des RX-Buffers der SoftwareSerial-Schnittstelle, Anzeige oF
      - SAT used
      - hDoP
      - Lock(unLock) der PLL
      - Uc: Steuerspannung des VC-OCXO, dreistellig nach dem Komma, erhöhte Auflösung durch Oversampling (15 bit)
      - Anzeige L für Lock der PLL
      - Uh: Uc im Holdover-Modus
      - ForcedHoldover, Auswahl mittels Taster D7/K11
      - Zeit(UTC) Anzeige: UTC hh:mm.ss
     
     - LED: Lock PLL

     - manuelles Holdover, Einstellung  der Uc mittels  R14, entfällt für PCB rev1
     - simple-Holdover (Einstellung  der Uc mittels  MCP4725), entfällt für PCB rev1
 
   - smart-Holdover, die Haltespannung wird adaptiv erfasst, entfällt für PCB rev1
     
- Forced-Holdover, entfällt für PCB V 1.0

      -  Debug-Mode: serieller Monitor, DEBUG 12 serieller Plotter Anzeige

    - Ausgabe auf seriellen Monitor der Arduino IDE oder Terminal, z.B. PUTTY, via USB-Schnittstelle des NANO
    - Ausgabe auf seriellen Plotter der IDE: u.a. für DEBUG 12, graphische Auswertung der Abstimmspannung Uc TP3 über die Zeit

  

Bezug der Software

-> dl7ukm @  darc.de  [Leerzeichen löschen)
- Inhalt und Umfang der Display-Anzeige
   
 Dem Anwender bleibt es überlassen die für ihn relevanten Informationen auszuwählen und auf dem Display zu arrangieren. 
 
- Taster D7/K11  
- Tastfolge  
 1. ForcedHoldover ON   
 2. ForcedHoldover OFF    
 3. Umschaltung der 3. und 4. Zeile  
 4. OLED-DISPLAY OFF   
 5. OLED-DISPLAY ON  
   
   
=======================================================================================  
   
Verwendete Bibliotheken(Libraries) für OLED-Display
 
   
Verwendete IDE: Arduino IDE 1.8.19 Download  
   
- Bibliothek <U8x8lib.h> // U8g2 Bibliothek für OLED AG00013_.gif (7874 Byte)
   
- Bibliothek TinyGPSPlus Version 1.03  by Mikal Hart  [24. Jan. 2022]
 
   
- Bibliothek Arduino-Temperature-Control-Library by Miles Burton

  Arduino-Temperature-Control-Library/releases/tag/3.9.1

- Dallas_Temperature_Control_Library
 
- Bibliothek One Wire by Paul Stoffregen  
   
- Bibliothek OneButton by Matthias Hertel

              - Source code(zip) 2.0.3
 
   
   
Hardware-Modifikation R17
   
Ab PCB rev.2.2_xx ist die Modifikation im aktuellen Layout der Leiterplatte umgesetzt.  
   
 

alt                                                                                                  neu
 
   
=======================================================================================  
   
Serial-Bridge-NANO-sGPSDO  
   
Der Sketch dient zur Kommunikation zwischen dem PC und jedem anderen Gerät, hier dem GPS-Modul, unter Verwendung des Arduino NANO.
In diesem Fall wird eine Verbindung zwischen dem PC und dem u-blox NEO-6M, NEO-7M, NEO-M8M hergestellt.
 
Auf den s-GPSDO bezogen bedeutet dies, dass der Sketch auf den NANO der Platine geladen wird und dadurch eine serielle Kommunikation zwischen dem PC(Terminal, serieller Monitor der Arduino IDE) und dem GPS-Rx-Modul realisiert.  
   
Sketch, das Programm, transportiert u.a. die vom NEO-gelieferten Daten via der installierten Seriellen-Bridge an den USB-Port des NANO. Die Konfiguration des NEO-6M durch das u-center ist ebenso möglich.  
   
  1.    PC mit NANO verbinden         
  2.    IDE starten und Sketch hochladen     
  3.    Datenausgabe am seriellen Monitor checken     
  4.    IDE schliessen     
  5.    Ublox u-center starten     
  6.    COM auswählen     
  7.    Geschwindigkeit 9600 Baud     
  8.    Viel Erfolg beim Entdecken!

---> Sketch

   

-Quelle: GitHub - loginov-rocks/UbxGps: Arduino library for the fastest and simplest communication with u-blox GPS modules

Adapted for sGPSDO with ublox NEO-6M, NEO-7M , NEO-M8M and Arduino NANO, modified and tested by mkn, DL7UKM, 16.02.2021  

Ausgabe der vom GPS-Modul gesendeten Daten via USB des NANO an den PC und dort Ausgabe durch IDE Arduino Serieller Monitor
oder unter Nutzung eines externen Terminal-Programms oder ublox u-center, etc.

Anzeige Serieller Monitor, 9600 Baud: die vom NEO-6M selektierten und gesendeten NMEA-Datensätze
 
--> u-center,GNSS evaluation software

 https://www.u-blox.com/en/product/u-center


   u-center erlaubt neben dem Monitoring auch die Configuration des NEO-6M.
   

Serial-Bridge-NANO-sGPSDO

Ausgabe des Seriellen Monitors der ARDUINO IDE

GPS-Board: ublox NEO-M8M

Config des NEO-M8M mit  v0.14.15.7
Innerhalb einer Sekunde werden die NMEA-Datensätze $GNRMC, $GNGGA, $GNGSA, $GNGSA ausgegeben.

In der Config des NEO sind die Sat-Systeme GPS und GLONASS aktiviert.
   
   
   
=======================================================================================  
   
Klicken des Relais
 
   
  DEBUG 4
 
  Issue: Klicken des Relais, kurzzeitiges Umschalten in den Hold-Modus.

Nach dem Setzen des NEO-M8M werden im ersten Durchgang die usedSAT mit Null bewertet.
Daher auch anschliessend satUsed HOV gleich Null.

Ende: void setup beendet, danach Sprung zu void loop.


ToDo: ???

Solved with Version 0.16
 Gelöst mit Version V 0.15.8, 19.12.2021 
   
   
   
=======================================================================================  
   
 $GNRMC  
- GPRMC (novatel.com)  
$GNGGA  
- GPGGA (novatel.com)  
$GNGSA  
- GPGSA (novatel.com)  
   
- Bibliothek TinyGPSPlus Version 1.03  by Mikal Hart  
   
   
   
   
=======================================================================================  
   
Fehler: Anzeige 3dFix meldet "error"  
   
09:31:22.135 -> $GPRMC,083122.00,A,4930.66086,N,00836.49611,E,0.018,,241221,,,A*73
09:31:22.182 -> $GPGGA,083122.00,4930.66086,N,00836.49611,E,1,10,0.93,106.3,M,47.5,M,,*59
09:31:22.229 -> $GPGSA,A,3,20,29,16,04,06,07,09,02,05,30,,,1.87,0.93,1.62*05
09:31:23.120 -> $GPRMC,083123.00,A,4930.66086,N,00836.49613,E,0.017,,241221,,,A*7F
09:31:23.166 -> $GPGGA,083123.00,4930.66086,N,00836.49613,E,1,10,0.93,106.3,M,47.5,M,,*5A
09:31:23.260 -> $GPGSA,A,3,20,29,16,04,06,07,09,02,05,30,,,1.87,0.93,1.62*05
SW V.016, 4zeilig LCD, 23.12.2021
- GPSDO mit NEO-6M bestückt.
- Drei Datensätze sind ausgewählt.
- readGPS 700 ms

- Problem
- 3dFix wird erkannt, später "error"
   
10:02:54.115 -> $GPRMC,090254.00,A,4930.66099,N,00836.49775,E,0.015,,241221,,,A*73
10:02:54.162 -> $GPGGA,090254.00,4930.66099,N,00836.49775,E,1,09,0.93,106.7,M,47.5,M,,*58
10:02:54.209 -> $GPGSA,A,3,20,16,04,06,07,09,02,05,30,,,,1.71,0.93,1.44*03
10:02:54.584 -> $GPRMC,090254.50,A,4930.66100,N,00836.49775,E,0.015,,241221,,,A*77
10:02:54.678 -> $GPGGA,090254.50,4930.66100,N,00836.49775,E,1,09,0.93,106.7,M,47.5,M,,*5C
10:02:54.725 -> $GPGSA,A,3,20,16,04,06,07,09,02,05,30,,,,1.71,0.93,1.44*03
10:02:55.100 -> $GPRMC,090255.00,A,4930.66102,N,00836.49776,E,0.015,,241221,,,A*72
10:02:55.146 -> $GPGGA,090255.00,4930.66102,N,00836.49776,E,1,09,0.93,106.7,M,47.5,M,,*59
10:02:55.240 -> $GPGSA,A,3,20,16,04,06,07,09,02,05,30,,,,1.71,0.93,1.44*03
10:02:55.615 -> $GPRMC,090255.50,A,4930.66103,N,00836.49777,E,0.015,,241221,,,A*77
10:02:55.662 -> $GPGGA,090255.50,4930.66103,N,00836.49777,E,1,09,0.93,106.7,M,47.5,M,,*5C
10:02:55.709 -> $GPGSA,A,3,20,16,04,06,07,09,02,05,30,,,,1.71,0.93,1.44*03
- #define gpsrxRate 2
   
   
   
   
   
=======================================================================================  
   
Backlight des LCD-Displays abschalten
01.11.2021 mkn
   
Abschaltbarkeit des Backlights des LCD-Displays durch einen Schalter  
   
- Steckerleiste K11 D8 Schalter gegen GND
  Schalter S2 offen-> Backlight ON
  Schalter S2 geschlossen, Backlight OFF
 
- S1: Taster, push button -> D7
  -Forced Holdover

- S2: Schalter, ON/OFF Backlight -> D8

R1, R2: Schutzwiderstände der optionalen Beschaltung
   
   
   
Backlight  
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE ); // Set the LCD I2C address,


....
#define switchPin 8 // Initialize a switch to GND
...
void setup()
...
pinMode(switchPin, INPUT_PULLUP); // Schalter gegen Grund, switch 01.11.2021
....

void loop()
{

...
if (digitalRead(switchPin) == HIGH)
{
lcd.backlight();
}
else {
lcd.noBacklight();
}
}
 
   
   
   
   
   
   
   
=======================================================================================  
   
FAQ Software
 
   
   
- Die Installation der Software will nicht gelingen, viele Fehlermeldungen, was tun?  
   
Kleine Installationshilfe, [18.10.2020,mkn]

OS: Windows 10

Arduino IDE installieren, folge den Wünschen und Vorschlägen der IDE.

F1CJN-Zip-File downloaden und in einem  Verzeichnis entpacken.

NEO-7M_10KHz_V1.0.ino  doppelt anklicken, IDE öffnet sich und die Meldung "ino muss in einem Verzeichnis gespeichert werden" mit ja beantworten.

Die Datei NEO-7M_10KHz_V1.0.ino wird nunmehr in einem Entpackungsverzeichnis(generierten Ordner) gleichen Namens verschoben.

Dies interessiert uns nicht!

Wichtig ist, die geöffnete ino in der IDE-Oberfläche nunmehr ins IDE Sketchbook zu speichern, bitte das Arduino Sketchbook-Verzeichnis wählen.

Danach die gezippten Bibliotheken als zip-File einbinden.

Anschließend die NEO-7M_10KHz_V1.0.ino überprüfen/kompilieren.

Fehlermeldungen abarbeiten, es sollten keine entstehen, hi.

Vor dem Hochladen der NEO-7M_10KHz_V1.0.ino die Timepuls-Frequenz ändern, 100 kHz falls die Standard-Bestückung gewählt wurde. In Zeile 128 frequency=10000 in frequency=100000 ändern.

Anschließend den Sketch hochladen.

Viel Erfolg.




--> Anmerkung: zusätzlich habe ich auch die Wire-Bibliothek aufgenommen, da es sonst eine Fehlermeldung gibt.  
      Ich habe den Eindruck, dass in der mitgelieferten Library LiquidCrystal etwas nicht sauber programmiert ist.
      So bleibt immer etwas für die Zukunft, hi. [mkn]
      Hier die Lösung.










TiP ändern
   
   
Serieller Monitor

 Serial monitor via USB at 115200 bauds, wichtig die richtige Geschwindigkeit auswählen  115200 Bauds!

- Achtung die zu wählende Geschwindigkeit ist von der Definition im Sketch abhängig!
-

- Wozu?

- Was wird angezeigt, wo?
"12:54:33.993 -> Setting Timepulse... configuration TimePulse
 12:54:34.040 -> Success!
 12:54:34.040 -> ACK Received!
"
- Hier wird das erfolgreiche Setzen der Timepulse-Frequenz bestätigt.

- Benötigt im Betrieb? Nein.
  - zusätzliche Information zum Hochladen des kompilierten Sketches
   
Serieller Monitor, wo steckt der eigentlich?  
   
 
   
   
Serieller Plotter  
   
   
Fehlermeldungen  
- Ausgabe auf seriellen Plotter der IDE: u.a. für DEBUG 12, graphische Auswertung der Abstimmspannung Uc TP3 über die Zeit  
   
- ARDUINO NANO V3.x

  -
Geiz ist nicht immer geil. Der NANO 3.0 oder NANO 3.x muß mit einem ATmega328P bestückt sein.

  - Nano V3 mit ATmega168 funktionieren mit der SW nicht.
ATmega328P

- Datenblatt

- Application Notes

   
- Fehlermeldung durch IDE
    PCB: V1.0, rev.2_37, 2_37a
 


Lösung: USB-Port anschliessen, hi
 
   
- Fehlermeldung durch IDE
    PCB: V1.0, rev.2_37, 2_37a
    .....

  - Lösung: richtigen Boot-Loader auswählen


   
Falscher Bootloader gewählt NANO
   
- Fehlermeldung durch IDE
   PCB: V1.0, rev.2_37, 2_37a
 - Upload des Sketches, COM Port nicht gewählt!
 - Fehlermeldung:
 
   
"Arduino: 1.8.13 (Windows 10), Board: "Arduino Nano, ATmega328P"

Der Sketch verwendet 17378 Bytes (56%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 952 Bytes (46%) des dynamischen Speichers, 1096 Bytes für lokale Variablen verbleiben.
        Das Maximum sind 2048 Bytes.

avrdude: ser_open(): can't open device "\\.\COM7": Das System kann die angegebene Datei nicht finden.

Problem beim Hochladen des Sketches auf das NANO-Board.
        Hilfestellung dazu unter http://www.arduino.cc/en/Guide/Troubleshooting#upload.


Dieser Bericht wäre detaillierter, wenn die Option "Ausführliche Ausgabe während der Kompilierung" in Datei
 -> Voreinstellungen aktiviert wäre."

 - Lösung: den richtigen COM-Port auswählen   
   
- Fehlermeldung durch IDE, COM 3: Zugriffverweigert
   PCB: V1.0, rev.2_37, 2_37a
 - Upload des Sketches
 - Fehlermeldung
 
Arduino: 1.8.13 (Windows 10), Board: "Arduino Nano, ATmega328P"

Der Sketch verwendet 17794 Bytes (57%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 1282 Bytes (62%) des dynamischen Speichers, 766 Bytes für lokale Variablen verbleiben.

Das Maximum sind 2048 Bytes.

avrdude: ser_open(): can't open device "\\.\COM3": Zugriff verweigert

Problem beim Hochladen auf das Board. Hilfestellung dazu unter http://www.arduino.cc/en/Guide/Troubleshooting#upload.

Dieser Bericht wäre detaillierter, wenn die Option "Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
- Ursache:
   
- Fehlermeldung durch Display
   PCB: rev.2_37, 2_37a
   Temperatur-Sensor
   Anzeige: TEMP:-127.0 -> Temperatursensor nicht angeschlossen, oC an Position (0,1)

Diese Fehlermeldung könnte man durch vorherige Abfrage nach des Existenz des Temperatursensors unter-binden. Programmieren macht Freude, also ran...

- 01.11.2020, mkn
  - Issue ist mit ino -> NEO6_4_Zeilen_xxxx_V0.09.ino gelöst
  - ist kein Temperatursensor angeschlossen, so erfolgt keine Text-Ausgabe "TEMP:xx.xoC"

 
   
   
   
   
   
=======================================================================================  
   
- Gestaltung der Anzeige, Anpassung an persönliche Wünsche
 
   
- Die Gestaltung der Anzeige sagt mir nicht zu
 
 - Wünsche
 - Machbarkeit
 - Umsetzung
 - zusätzliche Funktionen
 - ... 
- Der Sketch ist einfach aufgebaut und dient der Anregung zur Schaffung eigener Lösungen.

   In der Regel genügt einen Anpassung der Print-Ausgaben.
 
   
   
 - Entwurf auf einem Blatt Papier 

 
 Wie beginnen? Ein Einwurf auf dem Papier ist angebracht.

   Je nach Display 2*16 Kästchen oder 4*20 Kästchen zeichnen und die gewünschten Anzeigen auswählen und positionieren.
   Bezeichnung der Kästchen beginnend an der  linken oberen Ecke mit [0,0], dann geht es weiter für die oberste Zeile
   mit [1,0] bis [15,0] bzw. [19,0]
   Die zweite Zeile beginnt mit [0,1] usw.- Innerhalb des Sketches sind die entsprechenden Print-Anweisungen anzupassen.

 - Werden bestimmte Anzeigen nicht gewünscht, z.B. Koordinatenausgabe in Breite und Länge,
   dann einfach die Print-Anweisungen auskommentieren(//) oder die Zeilen löschen.


- Typische Anweisungen sind z. B. das Setzen der Cursor-Position und anschließend die Ausgabe des Inhaltes.

     lcd.setCursor(14, 1);
     lcd.print(F(" Lock"));
Template LCD Display pdf


 
Wer die Wahl hat, hat die Qual der Selektion.

Und es gibt noch genügend andere Parameter zur Auswahl. So z.B.:
   
- QTH-Kenner: achtstellige Anzeige
- Rufzeichen
- Text: 10 MHz GPSDO, 25 MHz GPSDO
- Koordinaten: La, Lo
- Phasendifferenz zwischen Fcomp_in und Fsig_in
- 2.Temperaturanzeige
- Reminder für EFC@10MHz
- etc.
- Erweiterung des Anzeigeumfanges durch Auswahl innerhalb der 4. Zeile
 
   
  UTC   Datum mm:dd:yyyy  mm-dd-yyyy  dd-mm-yyyy

  QRA      Asl [m]  Temperatur

  SAT      Fix         Hdop

  Uc          Lock    HOLD, ForceHold[Forced Holdover]
Datumsangabe

Uhrzeitangaben
   
Was hatten wir schon?
 
   
 
 
 
   
   
   
=======================================================================================  
   
- Überprüfung der verwendeten I2C-Adressen  
   
- Einsatz einfacher I2C-Scanner  
--> 0x27 I2C-LCD-Interface  
      0x60 MCP4725
-> Anpassung im Sketch
   
   
   
   
   
   
=======================================================================================  
   
To Do
 
   
- Holdover-Modus AG00013_.gif (7874 Byte)
   
- FURUNO GPS/Multi-GNSS Disciplined Oscillator (GPSDO/GNSSDO) | Technology | GPS Receiver Chips & Modules | FURUNO
 
- GPSDO
- Holdover Mode  
   
- User Reference Guide, SecureSync 1200 Time and Frequency Synchronization System | Orolia  
- GNSS Disciplining and Holdover Introduction (veexinc.com)  
   
   
  - Funktion siehe Holdover-Modus in der Baumappe auf S.5-6. [Stand 01.03.2021]   
   
 - Bedingungen zur Umschaltung in den Holdover-Modus

   - OCXO Warm-up Phase, welche Dauer
   - fehlende Satelliten < 4
    - Einschaltphase des GPS-Rx, kann bis 20-30 Minuten dauern
   - Verlust der SV während des laufenden Betriebes
Achtung, MCP4725 gibt während des Startes kurzzeitig 2,5 V aus.
   
 - Erstmalige Inbetriebnahme. Input der Uc @10 MHz des verwendeten VC-OCXO   
   
   
- Manueller oder softwaregestützter Holdover-Modus Wer, wie, was?
   
  Die Umschaltung zwischen beiden Betriebszuständen erfolgt gemäß der gesetzten Bedingungen immer softwaregestützt.  
   
 Manueller Holdover bedeutet die Holdover-Uc-Spannung wird manuell eingestellt und der VC-OCXO läuft im nicht disziplinierten Zustand
  oder einfach ausgedrückt, er schwingt frei.
 
   
 
 
   
   
 
 
   
-  Manuelles Holdover  
   
 - Laut Baumappe  wird für das manuelle Holdover der R14  verwendet.  
 - für SAT<4 wird auf eine Holdover-Spannung geschaltet
 - Einstellung der Uc @ 10 MHz mittels R14

 - Holdover, R14
    Einstellung der Frequenz bei gezogener GPS-Antenne, Abgleich mit einem Frequenzzähler oder Uc@10 MHz bei eingeschwungener PLL messen und
    anschließend  die Spannung mit R14 einstellen.

  




Frequenzzähler mit externer Referenzfrequenz
   
Hardware-Modifikation für manuelles Holdover mit R14
07.05.21, mkn
   
   
Modifikation manuelles Holdover via R14 by Heinz, DC5WW xx. April 2021, mkn
   
- Störhub des 25 MHz-VC-TCXO
- Messung mit ICOM IC-9700
- Auswertung der 125. Harmonischen auf 1250 MHz
- CW Empfang, 600 Hz
- Spektrumsauswertung im NF-Bereich mit der SW audioTester V3.0
 
   
sGPSDO 25 MHz mit VC-TCXO

C5 entfernt, nicht mehr bestückt, Störhub reduziert

R14, Plus-Anschluß getrennt und mit Vcc 5V verbunden. Zufriedenstellende Reduktion des Störhubes.

Test mit QO100, erfolgreich absolviert.
 
   
   
DJ8LC
sGPSDO 10 MHz, TiP: 100 kHz
OCXO: CTI EFC, Uc: 1,69 V @10MHz
PLL-Filter
- R9 56 kOhm
- C9: 100 uF
- C11. 1 uF
R10, C10 nicht bestückt

Modifikation manuelles Holdover via R14 by Wolfgang, DJ8LC

R6: 0 Ohm
C5: nicht bestückt
Spreizung der Abstimmung für die spezifische EFC@10MHz des VC-OCXO
Zusätzliche Siebung der Abstimmspannung, Tiefpass R14_1 und Cextra
Test mit QO100, erfolgreich absolviert.
07.05.21, mkn

 
   
   
   
   
   
   
   
- simple Holdover Mal was Neues, hi.
 
 Mittels  IC MCP4725 12-Bit DAC, Digital-Analog-Converter
 Die Uc(EFC) Generierung erfolgt durch den MCP4725, der R14 wird nicht benötigt.
 Somit ist man ready für einen softwaregestützten Holdover-Modus.

Im Eingabeblock folgende Parameter eintragen:

1. U_NANO
2. EFC @ 10 MHz
3. Delta

 


  
 
   
Im Eingabeblock ist der gewünschte Modus zu deklarieren. ---> ToDo

 - Holdover, R14
    Einstellung der Frequenz bei gezogener GPS-Antenne, Abgleich mit einem Frequenzzähler oder Uc@10 MHz bei eingeschwungener PLL messen und
    anschließend  die Spannung mit R14 einstellen.

 - Holdover, MCP4725 --> simple-Holdover

 - Sketch, PCB V1.0, abwärts kompatibel
  
AG00013_.gif (7874 Byte)
   
- smart-Holdover, die Haltespannung wird adaptiv erfasst, entfällt für PCB V 1.0

- während der warm-up Periode des OCXO wird EFC @ 10 MHz zur Steuerung des OCXO verwendet,
   anschliessend die zuletzt gemessene Uc vor dem Fall SAT<4
AG00013_.gif (7874 Byte)
   
   
- Forced Holdover  
   
   selection via push button on K11, Pin D7, push button: switch to ground   
   
   
- Softwaregestütztes Holdover  
   
- Bedingungen
  - SAT<4
  - die aktuelle Uc wird gespeichert und  über das Holdover Relais dem OCXO zugeführt
AG00013_.gif (7874 Byte)
   
   
Der ADC des NANO hat 10-Bit-Auflösung und der MCP4725 verwendet 12-Bit Auflösung  
 - Anfangswert der Uc(EFC) @ 10MHz 

  - Bestimmung der Uc @ 10MHz
    z.B CTI 1,95 V
 
   
   
- Holdover während der Aufheizzeit des VC-OCXO  
 - Start mit  Uc @ 10MHz und Übernahme ins DAC und EEPROM  
   
    MCP4725 startet mit dem EEPROM  MCP4725
- Holdover nach Einlaufzeit, Zeitpunkt???, min ab Start  
   
- auslösendes Ereignis: SAT<4
  - Uc in DAC/EEPROM
  - Umschaltung
 
   
Anzeige Hold, Ho, abhängig vom Display  
   
Lock Detection  
  Uc @ 10MHz  +/- 10%  
   
   
Aufbereitung der Eingabewerte für den Eingabeblock  
   
- --> Uc(EFC) @ 10MHz   
   
   
   
=======================================================================================  
   
   
   
   
   
   
   
Serial - Arduino-Referenz  
  Serial.begin()    
   
- Libraries - Arduino Reference  
   
- Arduino - SoftwareSerial  
   
   
   
   
- Wo bin ich? | heise Developer
 
- Christoph Niessen GPS-Modul mit u-blox 6M  
   
   
   
- OptimalSystem.DE : u-blox Empfängerkonfiguration mit u-center

  - lesenswertes und interessantes Dokument zur prktischen Konfiguration eines ublox GPS-Modules
 
   
- B5 62 06 24 00 00 2A 84  
   
- https://www.google.de/search?restrict=Deutsch&q=arduino+neo+ubx+message+lesen+read
 
- https://ukhas.org.uk/guides:falcom_fsa03
 
- uBlox NEO-6Q / uBlox MAX-6Q [UKHAS Wiki]  
   
   
- GitHub - fmalpartida/New-LiquidCrystal: Clone of the new liquid crystal library    
   
 -  Issues · fmalpartida/New-LiquidCrystal · GitHub  
- https://github.com/fmalpartida/New-LiquidCrystal/archive/master.zip  
   
   
=======================================================================================  
   
Fehler beim Kompilieren für das Board Arduino Nano, LiquidCrystal I2CIO.cpp  
   
Arduino: 1.8.13 (Windows 10), Board: "Arduino Nano, ATmega328P"

C:\Users\admin\Documents\Arduino\libraries\LiquidCrystal\I2CIO.cpp:35:10: fatal error: ../Wire/Wire.h:

No such file or directory
#include <../Wire/Wire.h>

^~~~~~~~~~~~~~~~
compilation terminated.
Mehrere Bibliotheken wurden für "LiquidCrystal_I2C.h" gefunden
Benutzt: C:\Users\admin\Documents\Arduino\libraries\LiquidCrystal
Nicht benutzt: C:\Users\admin\Documents\Arduino\libraries\New-LiquidCrystal-master
Mehrere Bibliotheken wurden für "DallasTemperature.h" gefunden
Benutzt: C:\Users\admin\Documents\Arduino\libraries\DallasTemperature
Nicht benutzt: C:\Users\admin\Documents\Arduino\libraries\Temp
exit status 1
Fehler beim Kompilieren für das Board Arduino Nano.


Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
Hier #include <../Wire/Wire.h> in #include <Wire.h> ändern!
   
 Wer ist die Konstante "ARDUINO" ?  
 
   
   
ARDUINO liefert die Versionsnummer der verwendeten ARDUINO IDE Version

- Serial.println(ARDUINO); -> Ausgabe im seriellen Monitor 10813, interpretiert als 1.08.13 oder 1.8.13
 
- Arduino Software Release Notes
   
- Serial.println(arduino) liefert Fehlermeldung beim Kompilieren, da "arduino" nicht definiert  
 
   
   
   
=======================================================================================  
   
- Zeitgesteuerte Messungen
 
  arduino zeitgesteuerte messungen - Google Suche
- Zeitgesteuerte Messung  
   
- Arduino: Ein Sketch ohne delay(ms) schreiben - Technik Blog  
   
- Zeitgesteuerte Ausführung - Mitmachprojekt: Temperatur messen und senden mit dem Arduino - Golem.de  
   
Period= 30 Minuten

 static unsigned long sensortime = 0;

 if(millis() > sensortime) { sensortime = millis() + PERIOD * 60l * 1000l;
 sensors.requestTemperatures();
 sendTemperature(thermometer);
-> Der große Temperatur-Check
-> github
    OfficeTemperature  Arduino_Ethernet.ino

   
U- & L-Formatierer z. B. 'ul' oder 'UL': Ändert den Datentyp der Konstante auf unsigned long. Beispiel: 32767ul --> unsigned long
   
   
   
=======================================================================================  
   
- Enabling/disabling NMEA sentences on u-Blox gps receiver? - Geographic Information Systems Stack Exchange  
   
   
=======================================================================================  
   
Weitere Software für den sGPSO
 
   
- Andreas, DL5MGD, Start-Modul für GPS-NEO-7M von DL5MGD für den GPSDO von DL2kHP
   Dort findet man auch die Dateien und das Schaltbild für die Ergänzungen.
 
  - NANO , ATTiny85

 DL2KHP, sk 2022

---> https://dl6gl.de/

GPS-diszipliniertes 10MHz-Normal (dl6gl.de)
   
   
- Rainer Wieland / GPSDO.de  -> Rainer Wieland / GPSDO · GitLab (chirpstack.de)  
- Vorstellung alternative Software für GPSDO von DL7UKM und DL4ZAO |  (dl0wh.de)
 
- alternative Software für GPSDO - Vortrag im virtuellen Wasserhaus am 17.3.2021 - Rainer Wieland - YouTube  
   
   
=======================================================================================  
   
- https://www.sparkfun.com
 
- https://github.com/sparkfun/SparkFun_Ublox_Arduino_Library
 
   
- C++ Core Guidelines: Regeln zu Konstanten und zur Unveränderlichkeit by Rainer Grimm  
   
   
   
=======================================================================================  
   
NEO-M8M 22.05.2021
- GPS
- GLONASS
 
   
Serial Bridge  
   
   
Ursache für die Fehlermeldung?


13:09:49 $GNTXT,01,01,01,More than 100 frame errors, UART RX was disabled*70  
13:35:15 $GNTXT,01,01,01,More than 100 frame errors, UART RX was disabled*70  
- NEO-8Q / NEO-M8 - NEO-8Q-NEO-M8-FW3_HIM_UBX-15029985.pdf (u-blox.com)  
- https://www.u-blox.com/sites/default/files/products/documents/u-blox8-M8_ReceiverDescrProtSpec_UBX-13003221.pdf
 
   
   
   
 
   
- u-blox GNSS Konfiguration by Ingenieurbüro Piotraschke
Globale Navigations Satelliten Systeme.
u-blox 8 / u-blox M8  Receiver description, Including protocol specification rev. date: 23 February 2021
 
sGPSDO SW 3dFix wird nicht ausgewertet, evtl. nicht gesetzt NMEA GSA wird nicht gesendet by u-blox  
   
 
   
   
   
=======================================================================================  
   
22.05.2021
   
   
   
=======================================================================================  
   
https://github.com/MrBanannaMan/NEO-M8U-Configuration-Files
 
   
   
GNSS  
   
GPGGA - System fix data
GPGLL - Geographic Latitude and Longitude
GPGSA - DOP and active satellites
GPGST - Pseudo Range Error Statistics
GPGSV - Satellites in View
GPRMC - Recommended Minimum specific GPS/Transit data
GPVTG - Course over ground and Ground speed
GPZDA - UTC Time and Date
 
   
 NMEA 0183

08:17:38 R -> NMEA GNRMC, Size 68, 'Recommended Minimum Specific GNSS Data'
08:17:38 R -> NMEA GNVTG, Size 35, 'Course Over Ground and Ground Speed'
08:17:38 R -> NMEA GNGGA, Size 75, 'Global Positioning System Fix Data'
08:17:38 R -> NMEA GNGSA, Size 58, 'GNSS DOP and Active Satellites'
08:17:38 R -> NMEA GNGSA, Size 54, 'GNSS DOP and Active Satellites'
08:17:38 R -> NMEA GPGSV, Size 70, 'GNSS Satellites in View'
08:17:38 R -> NMEA GPGSV, Size 70, 'GNSS Satellites in View'
08:17:38 R -> NMEA GPGSV, Size 31, 'GNSS Satellites in View'
08:17:38 R -> NMEA GLGSV, Size 70, 'GNSS Satellites in View'
08:17:38 R -> NMEA GLGSV, Size 70, 'GNSS Satellites in View'
08:17:38 R -> NMEA GNGLL, Size 52, 'Geographic Position - Latitude/Longitude'
 
 
   
The "GP" prefix usually indicates an original GPS source. NeoGPS parses all Talker IDs, including "GL" (GLONASS), "BD" or "GB" (BeiDou), "GA" (Galileo), and "GN" (mixed)  
   
   
=======================================================================================  
   
TinyGPS++ 1.03 und GNSS

- Arduiniana - TinyGPS++
  "See Arduiniana - TinyGPS++ for more detailed information on how to use TinyGPSPlus"
- CustomFields sample does not work with NEO-M8N #49      mikalhart closed this on 13 Oct 2019  
- Adding support for Glonass sentences by nseidle · Pull Request #28 · mikalhart/TinyGPSPlus · GitHub  on 14 Apr 2017  
   
- The TinyGPS++ library parses GNGGA and GNRMC sentences. GN sentences are put out when the GPS is receiving data from more than one constellation, i.e GPS + GLONASS. [_https://forum.arduino.cc/t/library-for-parsing-glonass-nmea-sentences/668644_]  
- Improved TinyGPSPlus for new generation of satellites [Nov 2017]

  -"TinyGPS++ does already work with a Ublox 8, you just send a command to the GPS to turn off GLONASS mode, its easy enough."

- GitHub - SlashDevin/NeoGPS: NMEA and ublox GPS parser for Arduino, configurable to use as few as 10 bytes of RAM
 
When the NMEA standard was created many years ago no one was expecting anyone could use more than 12 satellites for resolving location because the number of satellites visible at once was less than that, thus the GAA message was limited to 12 SVs. Now with our fancy multi-constellation receivers it’s very common to have a lot more than 12 SVs but those receivers have to be backwards compatible with older NMEA versions (currently 4.11) thus they limit the GAA SVs field to 12 but in the newer GNS field it can go up to 99.  
   
Als der NMEA-Standard vor vielen Jahren geschaffen wurde, hatte niemand erwartet, dass jemand mehr als 12 Satelliten zum Auflösen von Standort verwenden könnte, weil die Anzahl der Satelliten, die auf einmal sichtbar waren, geringer war, so dass die GAA-Nachricht auf 12 SVs beschränkt war. Jetzt mit unseren ausgefallenen Multi-Konstellation-Empfängern ist es sehr üblich, viel mehr als 12 SVs zu haben, aber diese Empfänger müssen rückwärts kompatibel mit älteren NMEA-Versionen (derzeit 4.11) sein, also begrenzen sie das GAA-SVs-Feld auf 12, aber im neueren GNS-Feld kann es bis zu 99 gehen.  
   
   
=======================================================================================  
   
Global Navigation Satellite System (GNNS)

- Globales Navigationssatellitensystem
   
Galileo (Satellitennavigation)  
Quasi-Zenit-Satelliten-System (QZSS)  
   
Aus dem GPSDO wird ein GNSSDO
 
   
- American Standard Code for Information Interchange – Wikipedia Kleinbuchstaben= Großbuchstabe +32

QTH-Kenner JN39hm22
- ASCII-, DOS-Latin-1-, Windows-1252- und HTML-Zeichencodes sowie deutsche Tastatur-Scancodes + Andere TechDocs + Encoding/Codepage/Charset  
- Der ASCII-Code - CCM  
   
   
   
=======================================================================================  
   
Einbindung von SoftwareSerial mit RX-Buffer: 256 Byte
   
 C:\Users\admin\Documents\Arduino\libraries\  
   
Mehrere Bibliotheken wurden für "SoftwareSerial.h" gefunden
Benutzt: C:\Users\admin\Documents\Arduino\libraries\SoftwareSerial
Nicht benutzt: C:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\SoftwareSerial



Bibliothek TinyGPSPlus-1.0.2b in Version 1.0.2 im Ordner: C:\Users\admin\Documents\Arduino\libraries\TinyGPSPlus-1.0.2b wird verwendet
Bibliothek SoftwareSerial in Version 1.0 im Ordner: C:\Users\admin\Documents\Arduino\libraries\SoftwareSerial wird verwendet
Bibliothek Wire in Version 1.0 im Ordner: C:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\Wire wird verwendet
Bibliothek New-LiquidCrystal-master im Ordner: C:\Users\admin\Documents\Arduino\libraries\New-LiquidCrystal-master (legacy) wird verwendet
Bibliothek OneWire im Ordner: C:\Users\admin\Documents\Arduino\libraries\OneWire (legacy) wird verwendet
Bibliothek DallasTemperature in Version 3.9.0 im Ordner: C:\Users\admin\Documents\Arduino\libraries\DallasTemperature wird verwendet
Bibliothek OneButton-2.0.1 in Version 2.0.1 im Ordner: C:\Users\admin\Documents\Arduino\libraries\OneButton-2.0.1 wird verwendet
 
   
   
   
=======================================================================================  
   
Falscher Bootloader
   
 
 
   
 
     
Bugs  
15:32:01.653 -> Temperature for the device 1 (index 0) is: 23.75
15:32:01.700 -> Device 0 Resolution: 0
15:32:01.841 -> Temp :23.7⸮C
27.10.2021, 4Z-14.2.j
Debug 3
Resolution: 0 ???
   
   
   
=======================================================================================  
   
Backlight des LCD-Displays abschalten 01.11.2021 mkn
   
Abschaltbarkeit des Backlights des LCD-Displays durch einen Schalter  
   
- Steckerleiste K11 D8 Schalter gegen GND
  Schalter S2 offen-> Backlight ON
  Schalter S2 geschlossen, Backlight OFF
 
- S1: Taster, push button -> D7
  -Forced Holdover

- S2: Schalter, ON/OFF Backlight -> D8

R1, R2: Schutzwiderstände
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
// addr, en,rw,rs,d4,d5,d6,d7,bl,blpol

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE ); // Set the LCD I2C address,


....
#define switchPin 8 // Initialize a switch to GND
...
void setup()
...
pinMode(switchPin, INPUT_PULLUP); // Schalter gegen Grund, switch 01.11.2021
....

void loop()
{

...
if (digitalRead(switchPin) == HIGH)
{
lcd.backlight();
}
else {
lcd.noBacklight();
}
}
 
   
   
   
=======================================================================================  
   
- LED für Anzeige der Betriebsbereitschaft 01.11.2021 mkn
   
- "Lock" LED an K3 mit anderer Information belegen 01.11.2021 mkn
   
z.B.:  
- Anzeige des 3dFix des Sat-Empfanges  
   
   
=======================================================================================  
   
- Bewertung der Veränderung der Abstimmspannung als "Lock" Kriterium 01.11.2021 mkn
   
- Achtung, Falle: Uc ca 2,475.. 2,48 V  Frequenz: 10.000.004,7 Hz, OCXO: CTI

  - 100 kHz Teiler-Ausgang
  - 1 kHz GPS-Rx
  - Temperaturanzeige: Raumtemperatur
  - OCXO: CTI
  - GPS-Rx: NEO-M8M
 
Uc@10 MHz; OCXO CTI,
- Alternative Möglichkeiten der "Lock" Info der PLL 04.11.2021 mkn
   
  - Zielsetzung
    - Lock gleich Synchronität?
    - Eingeschwungener Zustand der PLL
    - Phasendiskriminator und eingeschwungener Zustand der PLL 
 
   
   
=======================================================================================  
   
Der Vorhang wird hoch gezogen
[27.01.2022, mkn]
   
Mehrere Bibliotheken wurden für "SoftwareSerial.h" gefunden
Benutzt: C:\Users\admin\Documents\Arduino\libraries\SoftwareSerial
Nicht benutzt: C:\Users\admin\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\libraries\SoftwareSerial
Bibliothek SoftwareSerial in Version 1.0 im Ordner: C:\Users\admin\Documents\Arduino\libraries\SoftwareSerial wird verwendet
- Ja, so soll es auch sein.
Möglichkeit der Anpassung
   
   
   
=======================================================================================  
   
10Hz U-blox binary GPS data in 66 lines of code (arduino) - YouTube  
   
UBX binary protocol, extra tips (arduino) - YouTube
 
   
   
   
=======================================================================================  
   
http://www.iforce2d.net/sketches
 
Source code: http://www.iforce2d.net/sketches/UBX_...
Helpful page: http://wiki.paparazziuav.org/wiki/Sen...
Follow-up video: https://www.youtube.com/watch?v=ylxwO...
 
   
   
=======================================================================================  
   
- Patrick, TK5EP sGPSDO
  -> GPSDO software
      - NMEAGPS.h
      - avdweb_Switch.h
 
   
   
=======================================================================================  
   
   
   
=======================================================================================  
   
   
=======================================================================================  
- Optional: UART-Ausgang
 
  - Auswertung der NMEA-Meldungen durch externe Programme im normalen Betriebsmodus des sGPSDO
    - die von der GPS-UART-Schnittstelle K1 via Tx gesendeten Daten werden parallel zu NANO-D4 einem UART-USB-Interface-Modul
       zugeführt


  - Ist eine Erweiterung möglich: kompletter Zugang zum GPS-Modul?

    - nach Ablauf void Setup erflogt kein weiterer Zugriff der SoftwareSerial-Schnittstelle auf die PGPS-UART-Rx
       es werden keine Steuerbefehle gesendet
06.03.2022, mkn

-> GPSDO 2*UART
   
- How using 1 UART for 2 externals applications  
   

PCB 2.2_43
 
   
   
   
===========================================================================  
   
- Auflösungen, Quantisierungen  
   
Der AD-Wandler des Nano hat 10 bit Auflösung. NANO 5V: 1024=4,882... mV  
DAC: MCP4725: 12 Bit 5 V: 4096= 1,22 mV  
Die SW verwendet Oversampling(15 bit Auflösung) bei der Messung der Uc und die Anzeige nutzt eine 1 mV-Auflösung.  
   
- OCXO-Steilheit Delta-f/V, z.B. 3 mHz/V  
   
===========================================================================  
   
Holdover, Systemstart  
   
START-> No Fix, Holdover, Relais muss anziehen, Anzeige Holdover Ho

 - VC-OCXO wird mit EFC@10MHz angesteuert, OCXO wird aufgeheizt, Frequenz läuft ein, in dieser Phase starke Frequenzabweichung,
sinnvoll?
 - Erst sinnvoll wenn OCXO genügend lang geheizt, thermisches Gleichgewicht muss erreicht sein
AG00013_.gif (7874 Byte)
   
   
===========================================================================  
   
VC-OCXO Bliley SN 048-15 EFC@10 MHz= 2,3 V  
   
   
   
===========================================================================  
   
Temperatursensor  
   
- Ofentemperatur, Oberflächenmessung  
   
- Zweiter Sensor Geräte- oder Aussentemperatur  
   
   
   
===========================================================================  
   
Hardware-Software-Schnittstellen  
   
-  
   
   
   
   
===========================================================================  
   
- I2C-Adressbus-Belegung und mögliche Adressbuskonflikte
AG00013_.gif (7874 Byte)
   
   
- verwendete I2C-Adressbus-Belegung  
   
 - LCD-HD  0x27   
 - MCP 4725A0T-E/CH, genutzt A0 auf Low -> 0x60   
   
- Geplante Erweiterung  
   
 - Si5351-Breakout Board mit 3 Ausgängen. 0x60, die Adresse lässt sich bei verwendeten IC mit 10 Anschlüssen nicht ändern.  
   
   
-> Hinweis zur Bestückung des IC MCP4725  
   
   
Arduino UNO, NANO: SDA Pin A4 und SCL Pin A5  
   
- I2C, PHILIPS 1982  
- TWI Two Wired Interface  
- SDA Daten  
- SCK Clock  
- Master-Slave  
   
- I2C-Schalter und -Multiplexer  
   
   
===========================================================================  
   
   
   
   
   
   
   
   
   
   
   
   

 

 

Zurück  Oben

Edited on 12.06.23