Het Elektor forum gaat sluiten. Zie ook deze link. Vanaf vrijdag 15 maart is het niet langer mogelijk om in te loggen op het forum. Wel blijft de inhoud van het forum nog zichtbaar tot het einde van de maand maart. Per 1 april gaat het forum definitief uit de lucht.

Experimenteren met GPS-Ontvangers 10/2008 / RS-232 protocol

Theorie en praktijk horen bij elkaar

Postby tycho van velzen » Thu Dec 06, 2012 12:00 am

Elektor editie: 10/2008
Artikel: Experimenteren met GPS-ontvangers

Beste forumleden,

Ik ben bezig om op basis van GPS een snelheidsmeter te bouwen voor een hobby boot. Doel is om tijdens het varen de snelheid van een LCD-display af te kunnen lezen. Na rondvraag en zoekwerk kwam ik boven genoemd artikel tegen dat eigenlijk helemaal voldoet aan de wensen. Echter mijn kennis laat nog te wensen over en ik ben dan ook bezig de schakeling te bestuderen.

Het gaat in dit geval om het schema van de complete stand-alone GPS-ontvanger op pagina 51.

PIC18F2520 ontvangt de RMC-sentence van de GPS module EM-406A. De PIC maakt daarbij gebruik van zijn UART interface en de GPS module verstuurt de sentences via de RS-232 interface. Dat is wat ik er nu van begrijp.

Vanaf dit punt loop ik echter helemaal vast. Ik begrijp dat het RS-232 protocol hier centraal staat. Daarom heb ik daar wat artikelen over gezocht op basis van wat ik op fora tegen kwam: (http://www.camiresearch.com/Data_Com_Basics/data_com_tutorial.html en http://en.wikipedia.org/wiki/RS-232)

Daaruit maak ik op dat RS-232 vooral een technische specificatie is en niets zegt over data inhoudelijk en daar ben ik naar op zoek. Hoe ziet de data er op logisch niveau uit?

De beschrijving op de eerste link zegt:

For the most common serial protocol, data is sent in small packets of 10 or 11 bits, eight of which constitute message information. When the channel is idle, the signal voltage corresponds to a continuous logic 1'. A data packet always begins with a logic '0' (the start bit) to signal the receiver that a transmission is starting. The start bit triggers an internal timer in the receiver that generates the needed clock pulses. Following the start bit, eight bits of message data are sent bit by bit at the agreed upon baud rate. The packet is concluded with a parity bit and stop bit.

Dit heeft toch verder niets met de RS-232 specificatie te maken? Het is een eigen invulling. Dat baseer ik dan op de volgende regel:

Characters sent through a serial interface generally follow the ASCII (American Standard Code for Information Interchange) character standard:

Wanneer er gebruik gemaakt wordt van een RS-232 interface, kun je er dan vanuit gaan dat het doorgaans een ASCII karakterset is dat zo “over de lijn” gaat?

Ik hoop dat ik duidelijk ben in mijn uitleg.

Graag hoor ik van jullie.

Groeten,

Tycho'
tycho van velzen
 
Posts: 3
Joined: Thu Jan 02, 2014 3:35 pm

Postby schueler » Thu Dec 06, 2012 12:00 am

Beste Tycho,

De RS232 wordt als communicatie gebruikt. Over deze lijn gaan digitale bits die de PIC weer omzet in ASCII code. Als je dit op je display zou zetten zie je inderdaad "leesbare" karakters.
Echter, ook al zijn het leesbare karakters als 'A' tot en met 'Z', '0' tot en met '9', komma's punten en de symbolen '*' en '$' moet je wel weten wat ermee bedoeld wordt.

Lees eens de pdf van de EM406 op sparfun.

Op pagina 8 staat wat je eigenlijk zoekt.
Ik heb zelf hier veel mee gewerkt n heb een van mijn projecten op dit forum geplaatst in het forum nieuwe code flitspaalmelder.

De PIC leest de binnenkomende ASCII code en kijkt of het de string "$GPVTG" voorbij ziet komen. Zo ja, dan komt er in de erop volgende karakters informatie over de snelheid voorbij.

$GPVTG,309.62,T,,M,0.13,N,0.2,K*6E


309,62 geeft aan welke richting het zich op beweegt.
0.2 geeft aan wat de snelheid is en 'K' geeft aan dat het om kilometers gaat.

Dus door te wachten dat er '$GPVTG' voorbij komt lees je de waarde na de 6e komma en dat is je snelheid in kilometers.

Wil je de code hergebruiken of wil je zelf wat ontwerpen?
Het display waar je het over hebt is dat op de hobby boot of wil je dat op een andere locatie uitlezen?


Ben'
schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby tycho van velzen » Fri Dec 07, 2012 12:00 am

Hallo Ben,

Bedankt voor jouw moeite en snelle antwoord. De datasheet van de GPS module had ik al bestudeerd (middels het artikel) en ik begrijp ook de diverse sentences en wat de tekens betekenen. Uiteindelijk moet ik die tekens weer vertalen naar bruikbare informatie zoals de snelheid in KM/h.

Ik merk dat zodra ik een niveau dieper ga er kennis en inzicht bij mij ontbreekt. Wat bedoel je met "De rs232 wordt als communicatie gebruikt"? Voor zover ik het nu begrijp zegt het protocol alleen iets over spanningsniveau's bij een digitale 1 of 0 en verder ook iets over snelheden. Klopt dit op hoofdlijnen?

Stel nou dat de GPS-module de volgende informatie doorgeeft aan de PIC:

$GPVTG,309.62,T,,M,0.13,N,0.2,K*6E


Dan moet zich dat vertalen naar een bepaalde hoeveelheid digitale 1'en en 0'en. Gaat dat altijd volgens het volgende voorbeeld?:




Het display wordt ingebouwd in het dashboard van de boot zelf. (is geschikt voor 4 personen) Daar is ruimte genoeg voor de electronica en beschik ik over een accu e.d. .

In het kader van leren en interesse wil ik graag zelf code ontwikkelen. Zoals je merkt ben ik nog wel redelijk nieuw op dat gebied. Afgelopen jaar heb ik het boek van Bert van Dam doorgewerkt (PIC Microcontrollers programmeren) en heb ik een WISP en wat Pics aangeschaft. Alles met het doel om de snelheidsmeter te bouwen overigens.

Ik ga mij nu eerst eens verdiepen in jouw project want dat ziet er erg gaaf uit!

Groeten,

Tycho'
tycho van velzen
 
Posts: 3
Joined: Thu Jan 02, 2014 3:35 pm

Postby schueler » Fri Dec 07, 2012 12:00 am

Zelf maken is altijd het leukst!

Hobby elektronica en een leuke en creatieve manier van nadenken. Vooral als er nog eens een microcontroller bij komt kijken want dan is er de vraag waar je een deel probleem oplost, in electronica of in software...

Als je een uC gebruikt, zoals de PIC, hoef je je geen zorgen te maken over de communicatie. De PIC bevat intern hardware wat de hele rs232 communicatie afhandelt. Een kwestie van even instellen en de rest gaat, bijna, van zelf.

De hardware in jouw geval zal erg eenvoudig zijn. Een gedeelte voor de voeding, om van de accu spanning 5V te maken. De PIC uiteraard ( een AVR van ATMEL kan overigens net zo goed ). Een GPS ontvanger en een LCD.
Veel meer hoeft het niet te bevatten. Zeker als het alleen maar om de snelheid gaat...

Software is een heel ander verhaal...
Er zijn tig wegen om in Rome te komen, zo ook in de wondere wereld van software.

Als kosten niet zo'n hele grote rol spelen zou je ook voor de Arduino kunnen kiezen. Arduino is een ontwikkel platform met een zeer lage instap. Meer zeer weinig programmeer kennis kun je toch snel iets in elkaar zetten. En er zijn vele libraries ( software bibliotheken ) beschikbaar.
Je hoeft niet na te denken over hoe de LCD aangestuurd moet worden of over de instellingen van de communicatie wat bij elke uC net iets kan afwijken.

Kijk eens op de site van Arduino.

Een voorbeeld met een GPS volgens mij is dit de EM405 ) kun je ook op die site vinden.

Vanaf daar is het niet zo heel moeilijk om het om te bouwen naar je eigen code. Je zult er zelf de LCD erbij moeten programmeren maar dat niet het moeilijkste zijn... Ook daar zijn genoeg voorbeelden van zoals deze...


Ben'
schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby nieuw 2 » Fri Dec 07, 2012 12:00 am

Eigenlijk is RS232 niet correct als we het over het protocol hebben. RS232 werkt met signaalniveaus van -12V(1) en +12V(0). De genoemde EM406 heeft een TTL niveau.

Wat wel overeenstemt is het aantal bits en de baudrate.

In een boot zou ik persoonlijk geen EM406 gebruiken. Ik vind dat deze niet zo gevoelig is. Ik had hier een EM406 in een IP66 plastic box en onder een plastic plaat. Over een ganse dag gezien evolueerde het aantal ontvangen satellieten tussen 4 en 12. Nu heb ik de GPS vervangen door een ADAFRUIT ultimate GPS breakout board. Hierop een adapter kabeltje en een externe actieve antenne. De enkele dagen dat ik deze combinatie nu gebruik, onder hetzelfde dak, heb ik nooit minder dan 10 satellieten (gemiddeld over de ganse dag 10,6). Als het weer wat beter wordt, zal deze antenne buiten geplaatst worden en normaal nog betere resultaten moeten geven.
Deze GPS draait wel standaard 9600Bd, terwijl de EM406 op 4800Bd werkt.
Over een volledige dag is de onnauwkeurigheid < 1.8m.

Deze module heeft ook een FIX uitgang, die laag blijft zodra de ontvanger een fix heeft. Ook een 1PPS signaal aanwezig. Nauwkeurigheid van 1PPS tussen -347ns en +63ns.

Standaard gebruiken de meeste GPS de NMEA codering. Wel even rekening mee houden dat de sat altijd UTC tijd gebruikt.

Indien gewenst heb ik een eagle librarie met de footprint van het breakout bordje.'
nieuw 2
 
Posts: 124
Joined: Thu Jan 02, 2014 3:28 pm

Postby tycho van velzen » Fri Dec 07, 2012 12:00 am

@ Ben,

Ja klopt het is zeker leuk. Zo'n 10 jaar geleden heb ik mijn opleiding MBO Telematica afgerond, maar nooit wat mee gedaan. En zo ineens gaat het weer " jeuken" Ik denk dat ik voor nu even stop met het doorgronden tot op het bit-niveau en gewoon gebruik maak van de mogelijkheden van de PICs.

Het Arduino platform trekt mij op dit moment nog niet zo, maar dat komt vooral omdat, zoals je al aangeeft, dit een vrij simpele schakeling is. In het magazine van Elektor hou ik natuurlijk wel de updates over Arduino bij

@ Nieuw 2

Bedankt voor jouw input, in het artikel werd de EM-406 geroemd om het feit dat hij heel gevoelig zou zijn. Uiteraard ga ik nu wel de ADAFRUIT module bekijken. Uiteraard zal ik wel een afweging moeten maken tussen kwaliteit en prijs en op dat gebied moet ik me nog verdiepen. Ik ben wel benieuwd naar de eagle libary!

Uiteraad zal ik mijn project nog op dit forum posten zodra het werkt. Dat duurt nog wel even maar wie weet heeft iemand anders er tzt dan wat aan.

Groeten,

Tycho
tycho van velzen
 
Posts: 3
Joined: Thu Jan 02, 2014 3:35 pm

Postby schueler » Fri Dec 07, 2012 12:00 am

Je kunt inderdaad uit gaan van de schakeling uit de elektor en daar je eigen software op zetten.

Ik ben zelf gaan experimenteren met het project Flitspaalmelder ( 208/11 ). Een collega elektuur-lezer heeft het ook herschreven zodat hij de hoogte, snelheid en locatie uit kon lezen voor het zweefvliegen.

Mocht je ergens niet uit komen of heb je andere vragen kun je het altijd even posten. Er zijn er hier genoeg op het forum die je willen helpen.

Zelf heb ik overigens goede ervaringen met de EM406. Ik gebruikte het als snelheidsmeter in mijn Citroen C15. Daar was de snelheidsmeter niet echt nauwkeurig van. Daarnaast heb ik ook de Fastrax UC322 getest en was in eerste opzicht niet tevreden. De importeur heeft me hierover ge-emaild en ben tot een betere opstelling gekomen waarmee goede resultaten heb gehaald.

Betreft de nauwkeurigheid, gezien GPS bedoeld is voor Amerikaanse doeleinde zul je nooit een zuivere locatie krijgen maar zou wel binnen de 10 meter nauwkeurig moeten zijn. Alleen de Amerikaanse defensie heeft dus accurate posities...


Ben'
schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby schueler » Fri Dec 07, 2012 12:00 am

Ik meende al dat ik het niet helemaal correct had...
De module van fastrax waar ik zeer tevreden over was is de UP500.

Zie in het forum Nieuwe Code Flitspaalmelder.


Ben'
schueler
 
Posts: 1433
Joined: Thu Jan 02, 2014 10:40 am

Postby nieuw 2 » Fri Dec 07, 2012 12:00 am

Tycho,

Ik neem sinds kort deel aan het project blitzortung.org. Een belangrijk onderdeel is daar de GPS. Uiteraard eerst voor de precieze locatie van de ontvangst, als 2de de juiste tijd gesynchroniseerd door het PPS signaal. Hier wordt zeer veel de EM406 gebruikt omdat Egon Wanke deze mee levert. Gemiddeld zijn er zowat 350 deelnemers operationeel. Ga ik dan in de statistieken kijken, zijn er toch altijd een 5-tal die geen GPS ontvangst hebben. Dit zijn allemaal GPS-en die nooit bewegen. De ontvangst zou normaal constant moeten zijn. Ik heb op 75 dagen 3.5 uur geen signaal gehad. Dat wil dus zeggen minder dan 4 satellieten. Vandaag, ondanks de sneeuwval en de antenne nog binnen, gemiddeld 10.7 satellieten. Omdat ik die 3.5uur onaanvaardbaar vond voor een statische satelliet ben ik op zoek gegaan naar een model met externe antenne mogelijkheid.

De EM406 kost ongeveer 57€. Ik betaal voor GPS, adapter kabel en actieve antenne 52€45 bij dezelfde leverancier. Daar moet je het dus niet voor laten. De gemonteerde GPS is een globaltop. Gevoeligheid -165dBm. De EM-406 is -159dB. Dus zonder externe, actieve, antenne is de globaltop al iets gevoeliger. Ook het verbruik valt in het voordeel van het adafruit bordje uit. 20mA tegen 40mA. Ik denk dus niets anders dan voordelen. Ik ga er nog enkele extra bestellen. Vooral de waterdichte en magnetische antenne vind ik een pro.

Al de gebruikte strings staan in de datasheet. 3 draadjes aan een sparkfun FTDI breakoutbordje, een terminal programma als Putty starten met de juiste parameters en je ziet de uitgespuwde strings voorbij vliegen.

De eagle librarie is bedoeld om het breakout bordje op je eigen print te integreren. Het is gebaseerd op de eagle files van het adafruit bordje. De male header wordt al meegeleverd, nog even een female voor op je printje en klaar.

Wat ik alleszins op het LCD scherm zou zetten? Uiteraard de coördinaten. Altijd handig als je hulp nodig hebt. Snelheid en vaarrichting. Het kan wel eens handig zijn dat je bijvoorbeeld bij plots opkomende mist nog weet in welke richting je moet. Ik zou het 1PPS signaal gebruiken als interrupt om het scherm te refreshen. Je krijgt dan toch enige vorm van stabiliteit.

edit: bij nader inzien is dit de layout van een eerder printje zonder PPS signaal. Ik pas de librarie morgen aan.

edit 2: librarie is aangepast. V2 is behouden en V3 is toegevoegd.

edit 3: de drill van de package wat aangepast aan de reële dikte van header pinnen.'
Attachments
Adafruit-Ultimate-GPS-master-V3.zip
(61.48 KiB) Downloaded 47 times

[The extension lbr has been deactivated and can no longer be displayed.]

Adafruit-Ultimate-GPS-master.zip
(85.94 KiB) Downloaded 40 times
nieuw 2
 
Posts: 124
Joined: Thu Jan 02, 2014 3:28 pm


Return to Elektronica algemeen

Who is online

Users browsing this forum: No registered users and 1 guest