Numérique

Radio

Electronique

Bibliothèque

Software

Politique de confidentialité

Politique de cookies (UE)

MCU ST

Radio

Electronique

Bibliothèque

Software

Politique de confidentialité

Politique de cookies (UE)

Afficheur GPS V2

Description

Comme dans la version précédente, ce montage permet d’afficher certains paramètres contenus dans des trames issues d’un GPS sur un afficheur LCD graphique de taille 122×32 pixels. Comme sur la version 1, les paramètres qui y sont affichés sont les suivants :

  • Reconnaissance des trames RMC, GGA et GSA issues des GPS à la norme NMEA0183.
  • Reconnaissance des trames 0x8F-AB et 0x8F-AC issues des GPS Trimble utilisant le protocole TSIP (Thunderbolt, etc.)
  • Date et heure UTC.
  • Longitude, latitude, altitude.
  • Nombre de satellites reçus, PDOP.

Cette 2e version permet maintenant de visualiser les informations suivantes :

  • VDOP, HDOP.
  • QRA Locator étendu.
  • Site et Azimuth du Soleil.
  • Site et Azimuth de la Lune.

Voici les nouvelles fonctionnalités qui ont aussi été ajoutées en plus de celles concernant l’affichage en lui-même :

  • Affichage du GPS FIX sur une LED qui est allumée si celui-ci est égal à 3 (correspond à un FIX 3D).
  • Un bouton de sélection de l’affichage : une pression de quelques dixièmes de seconde permet de passer d’un affichage à l’autre : Coordonnées GPS -> QRA Locator + Altitude ->Site et Azimuth du Soleil -> Site et Azimuth de la Lune.
  • Choix de la vitesse de communication du GPS entre 4800 (RC0 = 0, RC1 = 0), 9600 (RC0 = 1, RC1 = 0), 19200 (RC0 = 0, RC1 = 1) et 38400bauds (RC0 = 1, RC1 = 1).
  • Emission des informations de pointage d’antenne (site et azimuth) du Soleil et de la Lune en RS232 au format EASYCOMM2. L’émission des trames a lieu pour chaque astre quand on visualise à l’écran les informations correspondantes et seulement si l’élévation est supérieure à 0°.

Le montage est basé sur un PIC18F2620 qui reçoit les trames du GPS sur un port UART et affiche leur contenu sur un écran LCD graphique de 122×32 pixels piloté par un protocole compatible avec les contrôleurs graphiques SED1520.

Le code source est écrit pour le compilateur C18 de Microchip. Je ne fournis pas les projets MPLAB mais les fichiers peuvent très facilement être réintégrés dans un nouveau projet car il n’y a pas de configuration particulière du compilateur.

Pour information, la méthode de calcul de l’orientation du Soleil et de la Lune est issue du site suivant : http://www.stjarnhimlen.se/comp/tutorial.html.

Le schéma et le routage ont été réalisé avec Cadsoft Eagle 6.2.

Anomalies et corrections

  • 29 Août 2014

La version 2.2 initialement mise en ligne comportait deux bugs qui apparaissaient lors de l’utilisation de l’afficheur avec une GPS Thunderbolt (Merci Christophe ON4IY) :

  • Une fois le FIX GPS acquis la LED s’allume mais ne s’éteignait jamais en cas de perte de celui-ci.
  • Problème d’interprétation des champs horaires issus du Thunderbolt provoquant un décalage de l’heure (écart entre heure UTC et heure GPS) ou l’apparition des caractères « OF » dans le champ des minutes.

Ces bugs sont totalement résolus par la version 2.21. Il est donc fortement recommandé aux utilisateurs de cet afficheur avec un Thunderbolt d’effectuer la mise à jour. Ces bugs n’affectant pas l’utilisation de l’afficheur avec un GPS NMEA, la mise à jour n’a pas d’intérêt particulier.

  • 24 Janvier 2016

F1RMB, Daniel, m’a remonté un bug concernant l’affichage des coordonnées négatives et je l’en remercie. La nouvelle version disponible incluant son patch est la 2.22.

  • 14 Mai 2016

Suite à plusieurs demandes d’un forum transmis par Daniel F1RMB, j’ai intégré un patch qu’il m’a transmis pour gérer les GPS ne transmettant pas le checksum dans leurs trames NMEA (certain FURUNO sont dans ce cas). La nouvelle version disponible incluant ce patch ainsi que la gestion transparente des trames d’entrée est la 2.23.

Vidéo

Fichiers Cadsoft EAGLE

Afficheur GPS PCB Eagle
Titre: Afficheur GPS PCB Eagle (1234 clics)
Légende:
Nom du fichier: afficheur_gps_pcb_eagle.rar
Taille: 69 Ko

Nomenclature

Part Value Package Description FARNELL Radiospare
C1,C5 10nF 0603 Condensateurs céramiques 1759022
C2,C6 22uF 1206 Condensateurs céramiques 2113076
C3,C4 100nF 0603 Condensateurs céramiques 1759122
D1 0805 LED Rouge 1581239
J1 NC Souder directement des fils
J2 NC ICSP, brochage compatible PicKit3
R1,R3,R5,R6,R9 10k 0603 Résistances 2073349
R4 10k Trimmer 1689863
R2 4.7k 0603 Résistances 2059619
R7 820 0603 Résistances 2059598
R8 27 2012 Résistances 1670394
S1 DIP Switch Series 219 CMS (optionnel : peut être remplacé par des résistances 0ohm) 1524005
S2 B3F-10XX Bouton poussoir 176432
T1 MMBT2222 SOT23-BEC Transistror NPN 1653622
U1 PIC18F2620-I/SO SO-28W Microchip Microcontrolleur FLASH 1212697
U3 32122A-BC-BC Afficheur LCD 122×32 pixels  532-6975
U3Connecteur 1-84981-8 Connecteur FFC/FPC 1mm 18 points 1816423

Schéma

Afficheur GPS Schema
Titre: Afficheur GPS Schema (1988 clics)
Légende:
Nom du fichier: afficheur_gps_schema.pdf
Taille: 20 Ko

Routage

Afficheur GPS imp BOTTOM
Titre: Afficheur GPS imp BOTTOM (1235 clics)
Légende:
Nom du fichier: afficheur_gps_imp_bottom.pdf
Taille: 7 Ko
Afficheur GPS imp TOP
Titre: Afficheur GPS imp TOP (1290 clics)
Légende:
Nom du fichier: afficheur_gps_imp_top.pdf
Taille: 9 Ko
Afficheur GPS PCB
Titre: Afficheur GPS PCB (1409 clics)
Légende:
Nom du fichier: afficheur_gps_pcb.pdf
Taille: 32 Ko

Code source et HEX

Afficheur-GPS-V2.23-HEX
Titre: Afficheur-GPS-V2.23-HEX (1243 clics)
Légende:
Nom du fichier: afficheur-gps-v2-23-hex.rar
Taille: 30 Ko
Afficheur-GPS-V2.23-Source
Titre: Afficheur-GPS-V2.23-Source (1389 clics)
Légende:
Nom du fichier: afficheur-gps-v2-23-source.rar
Taille: 24 Ko

Afficheur GPS NMEA

Radio

Electronique

Bibliothèque

Software

Politique de confidentialité

Politique de cookies (UE)

Afficheur GPS NMEA V1

Description

Ce montage permet d’afficher certains paramètres contenues dans des trames NMEA issues d’un GPS sur un afficheur LCD graphique de taille 122×32 pixels. Les paramètres qui y sont affichés sont les suivants :

  • Date et heure UTC.
  • Longitude, latitude, altitude.
  • Nombre de satellites reçus, DOP.
  • Déclinaison magnétique.

Le montage est basé sur un PIC18F2620 qui reçoit les trames NMEA sur un port UART et affiche leur contenu sur un écran LCD graphique de 122×32 pixels piloté par un protocole compatible avec les contrôleurs graphiques SED1520. Les trames NMEA doivent être au débit de 4800 bauds.

Il n’y a pas de dessin de circuit imprimé fourni pour ce montage car je l’avais réalisé sur une plaquette à trous. Le code source est écrit pour le compilateur C18 de Microchip.

Photos

Schémas et routages Cadsoft EAGLE

afficheur_NMEA_GPS - SCH
Titre: afficheur_NMEA_GPS - SCH (2198 clics)
Légende:
Nom du fichier: afficheur_nmea_gps-sch.rar
Taille: 63 Ko

Schéma

afficheur_NMEA_GPS - SCH
Titre: afficheur_NMEA_GPS - SCH (2198 clics)
Légende:
Nom du fichier: afficheur_nmea_gps-sch.rar
Taille: 63 Ko

Code source et HEX

10mhz_gps_HEX
Titre: 10mhz_gps_HEX (1682 clics)
Légende:
Nom du fichier: 10mhz_gps_hex.rar
Taille: 16 Ko
Afficheur_NMEA_GPS - source
Titre: Afficheur_NMEA_GPS - source (1688 clics)
Légende:
Nom du fichier: afficheur_nmea_gps-source.rar
Taille: 17 Ko

F4CTZTracker

Radio

Electronique

Bibliothèque

Software

Politique de confidentialité

Politique de cookies (UE)

Microchip DsPIC30F4012

Ceci est un exemple de code source montrant le paramètrage minimal d’un DsPIC30F4012 pour sortir sur RE0 des états hauts d’une longueur d’un temps cycle à 20MIPS à partir d’un quartz externe de 5MHz. Cela permet ainsi de valider un circuit avec ce composant en vérifiant que :

  • Le composant est correctement alimenté.
  • L’oscillateur fonctionne et la PLL est correctement configurée.

Pour cela, un fichier à ajouter à un projet vierge dans MPLAB avec les compilateurs C30 ou XC16 :

#include <p30fxxxx.h>;

_FOSC(CSW_FSCM_OFF && XT_PLL16);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF && MCLR_EN);
_FGS(CODE_PROT_OFF);
_FICD( ICS_PGD );

int main(void) {
    OSCCONbits.POST = 0b01; // Datasheet page 7-14
    TRISE = 0; // Port E en sortie
    LATE = 0; // Initialisation du port E à 0

    while(1) {
        LATEbits.LATE0 = 1;
        LATEbits.LATE0 = 0;
    }

    return 0;
}

Microchip PIC32MX795F512L

Ceci est un exemple de code source montrant le paramètrage minimal d’un PIC32MX795F512L pour sortir sur RA1 des états hauts d’une longueur d’un temps cycle à 80MIPS. Cela permet ainsi de valider un circuit avec ce composant en vérifiant que :

  • Le composant est correctement alimenté.
  • L’oscillateur fonctionne et la PLL est correctement configurée.

Pour cela, deux fichiers à ajouter à un projet vierge dans MPLAB avec les compilateurs C32 ou XC32 :

  • main.c
#include "HardwareProfile.h"

void CPUInit(void) {
    SYSTEMConfigPerformance(SYS_FREQ);

    DDPCONbits.JTAGEN = 0;      // Disable JTAG
    DDPCONbits.TROEN = 0;       // Disable trace

    PORTSetPinsDigitalOut(IOPORT_A,BIT_1);
}  

int main(void) {

    CPUInit();

    while(1) {
        mPORTASetBits(BIT_1);
        mPORTAClearBits(BIT_1);
    }  

    return 0;
}
  • HardwareProfile.h
#include <p32xxxx.h>
#include <plib.h>

//////////////////////////////////////////////////////////////////////////////////////////
// Configuration processeur                             //
//                                          //
// Informations disponibles dans le fichier d'aide :                    //
// - hlpPIC32MXConfigSet.chm                                //
// - http://ww1.microchip.com/downloads/en/DeviceDoc/61156G.pdf             //
//     page 165 Section 28.1 - Configuration bits                   //
//////////////////////////////////////////////////////////////////////////////////////////
#pragma config FSRSSEL = PRIORITY_0 // Toutes les interruptions utilisent le shadow register

#pragma config FMIIEN = OFF             // Interface Ethernet en mode RMII pour DP83848
#pragma config FETHIO = OFF             // Configuration alternative des signaux du module Ethernet

#pragma config FCANIO = ON, FUSBIDIO = OFF, FVBUSONIO = OFF     //Autres modules inutilises

#pragma config WDTPS = PS1, FWDTEN = OFF

#pragma config ICESEL = ICS_PGx1, DEBUG = OFF

#pragma config PWP = OFF, BWP = OFF, CP = OFF

////////// Configuration de l'oscillateur pour un quartz de 8MHz externe /////////////////
#pragma config FNOSC = PRIPLL           // Choix de l'oscillateur primaire avec utilisation de la PLL
#pragma config POSCMOD = XT             // Quartz < 10Mhz donc XT
#pragma config OSCIOFNC = ON
#pragma config FPLLIDIV = DIV_2, FPLLMUL = MUL_20, FPLLODIV = DIV_1 // 80Mips
#pragma config UPLLEN = ON, UPLLIDIV = DIV_2                        // PLL USB
#pragma config FSOSCEN = OFF, IESO = OFF, FCKSM = CSDCMD            // Autres parametres de l'oscillateur
#pragma config FPBDIV = DIV_1                                       // Horloge peripherique

//////////////////////////////////////////////////////////////////////////////////////////
// Definitions generiques                               //
//                                          //
//////////////////////////////////////////////////////////////////////////////////////////
#define SYS_FREQ                80000000UL
#define GetPeripheralClock()    (SYS_FREQ/(1 << OSCCONbits.PBDIV))
#define GetInstructionClock()   (SYS_FREQ)

Microchip 12F683

Ceci est un exemple de code source montrant le paramètrage minimal d’un PIC12F683 pour sortir sur GPIO2 des états hauts d’une longueur d’un temps cycle soit 500ns (8MHz = 2MIPS). Cela permet ainsi de valider un circuit avec ce composant en vérifiant que :

  • Le composant est correctement alimenté.
  • L’oscillateur fonctionne.

Pour cela, un fichier à ajouter à un projet vierge dans MPLAB avec les compilateurs Hi-Tech PICC :

#include <htc.h>

/////////// Bits de configuration : Voir datasheet page 84, 12.1 Configuration bits //////////////
__CONFIG(FCMEN_OFF \
    & IESO_OFF \
    & BOREN_OFF \
    & CPD_OFF \
    & CP_OFF \
    & MCLRE_ON \
    & PWRTE_ON \
    & WDTE_OFF \
    & FOSC_INTOSCIO);

void main(void) {
//// Configuration de l'oscillateur interne (datasheet page 20, 3.2 Oscillator control) //////////
    OSCCONbits.IRCF = 0b111;    // 8Mhz
    OSCCONbits.SCS = 0;     // Configuration de l'horloge systeme
                    // définie par les bits de configuration

///// Configuration de entrees/sorties numeriques ////////////////////////////////////////////////
    ANSELbits.ANS2 = 0;     // GPIO2 est numerique
    TRISIObits.TRISIO2 = 0;     // GPIO2 est une sortie

    while(1) {
        GPIObits.GP2 = 1;
        GPIObits.GP2 = 0;
    }
}

MCU Microchip

Radio

Electronique

Bibliothèque

Software

Politique de confidentialité

Politique de cookies (UE)

Précédents