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.

GPS voor modeltreinen

Ontwerpen en programmeren

Postby tymenyel » Wed Aug 24, 2011 12:00 am

Een tip voor worteltrekken:

je wilt A=sqrt(X) weten

kijk naar het eerste bitje dat "1"is tel hoeveel bitjes er achter komen en deel dit door 2. Maak je "seed" door een 1 met het aantal nullen er achter met het getal dat je gevonden hebt.

voorbeeld : wortel uit 0100 1010 (binair) na de eerste 1 van rechts komen 6 bitjes delen door 2 = 3. Dus de seed wordt:
A=0000 1000
Dit komt al goed in de buurt.

voor komma getallen werkt het ook, je moet aleen de getallen voor de 1 tellen.

0,00001010 wordt dan 0,00100000

Als je dan de volgende formule een paar keer (5) herhaald dan zit je op 12 cijfers nouwkeurig achter de komma.

A=(X/A+A)/2 Deze formule werkt net zo snel als de Newton-Raphson methode.

delen door 2 kan gewoon met shift richt.

Groeten, Martijn.
tymenyel
 
Posts: 203
Joined: Thu Jan 02, 2014 3:27 pm

Postby tymenyel » Wed Aug 24, 2011 12:00 am

Anne, ik snap de hyperbolen niet. Als het de hyperbool
constante =X^2 + Y^2 is, dan zit je met het probleem dat T = X^2 + Y^2, dus T is geen constante.

Andere hyperbolen zie ik niet.

Ik ben ook aan het kijken naar manieren door middelen of itereren, maar ik heb het nog niet gevonden. Ik wil de formule ook voor 3D lokalisering gebruiken. Aleen wil ik eerst de 2D eerst werkend hebben.

Groeten, Martijn.
tymenyel
 
Posts: 203
Joined: Thu Jan 02, 2014 3:27 pm

Postby jan.lichtenbelt » Wed Aug 24, 2011 12:00 am

Beste Martijn,

Bedankt voor de aanwijzingen voor worteltrekken. Echter dat geldt alleen voor gehele getallen (bytes).

Hier gaat het om reële getallen (floating points). Het worteltrekken gaat gemakkelijk met de halveringsmethode. Die werkt als volgt.

HALVERINGS METHODE
Voorbeeld voor worteltrekken:
We willen X weten met X = wortel(Y)
Kwadrateren levert X^2=Y of
F(X)=X^2-Y [1]
We moeten nu het nulpunt van F(X) vinden door X te variëren. Neem twee waarden, Xmax en Xmin, waarvoor F(X) verschillend teken hebben. In dit geval Xmax=X0 en Xmin=0. X1 is dan het de halve waarde van verschil X1=(Xmax-Xmin)/2. Als F(X1) hetzelfde teken heeft van is X2= (X1+Xmin)/2 echter is F(X1) van teken verandert, dan is X2= (Xmax+X1)/2, enz. tot je een gewenste nauwkeurigheid hebt bereikt. Je zal zien dan je na enkele iteraties al snel een grote nauwkeurigheid bereikt.

Maar dit is wiskundig niet de snelste methode (dan moet je met de afgeleide werken). Maar voor een microcontroller is de halveringsmethode gemakkelijk te programmeren voor elk willekeurige functie, tenminste als de uitdrukking voor F(X) niet te ingewikkeld wordt.

Succes

Jan
jan.lichtenbelt
 
Posts: 195
Joined: Thu Jan 02, 2014 3:28 pm

Postby anneo » Wed Aug 24, 2011 12:00 am

Oef,ik ben eruit!'tIs geen haar in de soep maar in de boter en de vlieg is voor de soep
Dus vooruit met de haar.
Jan,je vindt X en Y in funktie van R1,R2 of R2,R3 danwel R1,R3 en konstante X2.
Die X2 kennen we maar R1,R2 en R3 niet.We hebben enkel R1-R2 of R1-R3 (en R2-R3 zit daarin).
Hoe dacht je dat op te lossen

@Martijn,dat met die hyperbolen was idd wat erg kort.Zal s kijken hoe het beter uit te leggen wat ik bedoel.Zal voor morgen? zijn,'t is wat laat nu.
Anne'
anneo
 
Posts: 1339
Joined: Thu Jan 02, 2014 10:36 am

Postby tymenyel » Thu Aug 25, 2011 12:00 am

Halverings methode wat ik er van begrijp, lijkt op succesive approximation

Je wil de wortel uit X
drie variabele Alaag Amid Ahoog

Alaag = 0
Ahoog = X
for i=0 to 10 do
Amid = (Alaag + Ahoog) /2
if (Amid*Amid-X)>0 then Ahoog = Amid else Alaag = Amid
next i
Antwoord = Amid

Hoe meer stappen hoe beter de uitkomst

Groeten Martijn.
tymenyel
 
Posts: 203
Joined: Thu Jan 02, 2014 3:27 pm

Postby jan.lichtenbelt » Thu Aug 25, 2011 12:00 am

Beste Anne,

Soep, boter en haren, het zijn wel termen waar ik aan moet wennen. Maar misschien ben ik nog van het oude stempel.

Maar goed. Uit de tijdsverschilmetingen, van de drie ontvangers, volgen de (X.Y) coördinaten van de zender. Dit doen we door de tijdsverschillen te vermenigvuldigen met de geluidssnelheid de afstandsverschillen te berekenen, zoals gebruikt in mijn formules.
Het gaat dus om tijdsverschilmetingen en hiermee wordt voorkomen dat de absolute tijd van zenden van de puls bekend zou moeten zijn.
De werkelijke afstanden zijn dan R1+dR, R2+dR en R3+dR. En de tijden tussen de puls van de zender naar de 3 ontvangers is dan respectievelijk t1, t2 en t3, zoals je in versie 2 van de Excel file kan vinden.

Hopelijk wordt het zo duidelijk.

Hebben jullie nog suggesties voor de signaalversterking van de ultrasone signalen van 40 kHz tussen de ontvangers en de microcontroller? Alles natuurlijk zo eenvoudig mogelijk.

Groetjes

Jan
Attachments
Ultrasone-GPS-Jan-Lichtenbelt-Haren-augustus-2011-Versie-2.xls
(19.5 KiB) Downloaded 41 times
jan.lichtenbelt
 
Posts: 195
Joined: Thu Jan 02, 2014 3:28 pm

Postby anneo » Thu Aug 25, 2011 12:00 am

Vanavond wat vroeger ,kijken of het lukt om wat duidelijker te zijn.
Beginnen met twee micros.Daar komt bij elk een piepje binnen waarvan we het tijdsverschil (hopelijk) kunnen meten.Dat verschil is om te rekenen naar een verschil in weglengte van bron naar micro1 en micro2.We teken het in een loodrecht x-y assen-systeem.Plaatsen de micros op (-c,0) en (c,0).Waar bevindt zich de zender die met een tijdsverschil t op beide micros binnenkomt?
De meetkundige plaats van alle punten die hieraan beantwoorden bevinden zich op een hyperbool met de micros in de brandpunten met formule (x/a)^2-(y/b)^2=1 waarin a=t/2 en b^2=c^2-a^2.
Met een derde micro (bijv. op (0,0) )krijg je een tweede hyperbool en daarmee twee vergelijkingen met enkel x en y als onbekenden.
Het uitwerken belooft al net zon narigheid als eerder via Phytagoras
Dus zien te vereenvoudigen.
Je kun de hyp. ook schrijven als (y/b)^2=(2x/t)^2-1.
Als x groot genoeg is en daarbij t klein dan is (2x/t)^2>>1 en herleid de formule tot (y/b)^2=(2x/t)^2 ofwel y=(2b/t)x en y=-(2b/t)x ,twee rechten,de assymptoten van de hyp.
Naar gelang links of rechts tov het midden tussen de micros is het de + danwel de - versie van de rechte.Denk dat dat uit de tijden af te leiden valt.Ik heb het niet verder uitgewerkt,is bedoelt als voorstel tot mogelijke oplossing.
Anne
anneo
 
Posts: 1339
Joined: Thu Jan 02, 2014 10:36 am

Postby anneo » Thu Aug 25, 2011 12:00 am

Zie net dat Jan ondertussen ook hier was.
t1 t2 of t3 zijn in hetzelfde bedje ziek als R1 R2 en R3
We kennen alleen (t1-t2) , (t2-t3) en dus ook (t2-t3) ,daaruit haal ik geen t1 t2 of t3
Anne
anneo
 
Posts: 1339
Joined: Thu Jan 02, 2014 10:36 am

Postby jippie » Thu Aug 25, 2011 12:00 am

Ik volg het allemaal maar half, maar volgens mij heb je (tenminste) één ijkpunt nodig. Ik schreef al eerder over een (groter) aantal meetpunten. Temperatuur boven de baan zal in meeste gevallen aardig gelijk zijn, dus looptijdverschillen per tijdstip zullen wel los lopen, maar je moet natuurlijk wel een referentie hebben.

Het voordeel van meerdere referentiepunten, zoals ik eerder schreef, is dat je alle theorie kunt staven aan de praktijk. Wel zo prettig bij het foutzoeken ;o) Of je al die referentiepunten op een later moment (wanneer je mooie formules hebt) nog steeds wil gebruiken, kun je altijd nog overwegen.

De afstand tussen signaalgever en ontvanger èn de afstand tussen signaalgever, ontvanger via een eerste reflectie is weer maat voor hoe hoog/ver je de ontvangers kunt hangen. De reflecties moeten zover buiten de verwachtte respons vallen, dat je ze met een eenvoudige timer moet kunnen wegstrepen.

Persoonlijk ben ik van het éérst testen hoe de praktijk zich gedraagt en vervolgens zien of ik de theorie/formules erbij kan vinden. Kwestie van voorkeur, van smaak en daar valt niet over te twisten )
jippie
 
Posts: 342
Joined: Thu Jan 02, 2014 3:28 pm

Postby jan.lichtenbelt » Thu Aug 25, 2011 12:00 am

Beste mensen,

Duidelijker kan ik het niet uitleggen. De wiskunde klopt gewoon.

Het voordeel van deze discussie is voor mij dat de fout uit de formules is gehaald. Maar ik stop met de wiskunde van dit probleem in dit Forum.

Een ander voordeel van dit Forum is dat het over elektronika gaat. En tot nu toe leer ik veel van jullie.

Graag zie ik voorstellen voor signaal versterking van de 40 kHZ ontvanger naar de microcontroller.

Een fijne avond en maak het niet te laat, of het moet zijn dat dan de beste oplossingen gevonden worden.

Jan Lichtenbelt
jan.lichtenbelt
 
Posts: 195
Joined: Thu Jan 02, 2014 3:28 pm

PreviousNext

Return to Microcontrollers

Who is online

Users browsing this forum: No registered users and 1 guest