Forum: Mikrocontroller und Digitale Elektronik Erfahrung mit Hallsensor KMZ51 als Kompass


von Zoltan (Gast)


Lesenswert?

Hallo,

hat jemand von Euch schon mal einen Kompass mit dem Hallsensor von
Conrad aufgebaut? Es gibt einige Seiten im Internet, die den Baustein
beschreiben, aber kiener in Kombination mit einem MC, obwohl in der
Datenblatt beispielhaft die Anwendung mit einem MC abgebildet ist
(Siehe S. 46)
http://www-us.semiconductors.philips.com/acrobat/various/SC17_GENERAL_MAG_98_1.pdf
.

Es würde mich interessieren, welche Erfahrungen Ihr mit dem Baustein in
Kombination mit einem MC gemacht habt.

Gruß
Zoltan

von Reiner (Gast)


Lesenswert?

Bitte schön
www.semiconductors.philips.com/acrobat/
applicationnotes/AN00022_COMPASS.pdf

von Reiner (Gast)


Lesenswert?

Nochmal, ich hoffe der link geht jetzt

www.semiconductors.philips.com/acrobat/applicationnotes/AN00022_COMPASS. 
pdf

von Zoltan (Gast)


Lesenswert?

Hi Reiner,

ich kenne den Links schon, aber danke trotztdem.
Mich würde eher interessieren, welche persönlichen Erfahrungen Ihr beim
Aufbau der Schaltung gemacht habt. Und z.B. wie genau man die
Orientierung mit dem Kompass messen kann, oder wie stark der Sensor auf
Temperaturänderungen reagiert.

Gruß
Zoltan

P.S.: Hast Du den Sensor schon mal eingesetzt?

von Christian (Gast)


Lesenswert?

Hallo Zolti,

hab' mich mit dem KMZ51 Sensor nicht auseinandergesetzt, aber was
hältst du von diesem Sensor:
http://www.roboter-teile.de/Shop/pd172010061.htm?categoryId=1
Den Hab' ich schonmal verwendet und bin sehr zufrieden damit:
misst Temperatur, Sensor muss nicht horizontal liegen, 2Grad
Messgenauigkeit, geringer Stromverbrauch.....

Was willst du denn damit anstellen??

mfg

Christian

von anfänger (Gast)


Lesenswert?

der preis von dem teil ist ja unverschämt!

von Zoltan (Gast)


Lesenswert?

Hi Christian,

>Was willst du denn damit anstellen??
Ich habe die Bausteine bei Conrad bestellt, weil grad bis zum 24.02.04
Vesandkostenfrei ausgeliefert wird. Später soll aber mein Modell-U-Boot
automatisch den Kurs halten können.

"Dein" Sensor ist aber mit 55 EUR recht teuer. Ich brauche zwar zwei
KMZ51 aber die kosten dann zusammen nur 10 EUR. Ich werde mehrere
Sensoren auf einer Messplatte aufbauen: Druckmessung, Neigungsmessung
mit ADXL202 und den Kompass. Da ich die anderen Sensoren auch
temperaturkompensieren will, brauche ich nicht jeden Sensor einzeln zu
kompensieren, sondern kann einen einzigen Teperatursensor benutzten.

Es wäre für mich ausreichend, wenn ich 2° Genauigkeit hinbekommen
würde, nur wegen dem "horizontal liegen" könnte ich Probleme
bekommen.

Gruß
Zoltan

von Dominik S. Herwald (Gast)


Lesenswert?

Alternative ist der hier vom gleichen Anbieter:
http://www.roboter-teile.de/Shop/pd-256931129.htm?categoryId=1

der benutzt auch zwei KMZ51 und ist 15 Euro billiger.

Habe den aber selbst noch nie verwendet.

MfG,
Dominik S. Herwald

von Zoltan (Gast)


Angehängte Dateien:

Lesenswert?

Ich habe nun die bestelleten KNZ51 heute bekommen. Angelehnt an diese
Schaltung (http://www.hw.cz/constrc/x51_kompas/schema1.gif) habe ich
gleich eine an eine Atmega angeschlossen und getestet. Es funktioniert
super! Zwar noch ohne Offset-und Temperaturkompensation, aber das
Ergebeniss ist schon mal vielversprechend...

Gruß
Zoltan

von Christian (Gast)


Lesenswert?

Hallo Zoltan,

ich hab' nicht gewusst, dass "Dein" Sensor so güntig ist - ich hatte
den teuerer in Erinnerung. Bei diesem Preisunterscheid ist mein Sensor
natürlich ein Witz....
Der2x-cmI Sensor hat den Vorteil, dass er bis 8 Grad Neigung noch
passabel mist - wird die maximal zulässige Neigung überschritten gibt
dieser eine Fehlermeldung aus. Außerdem lassen sich feste Störquellen
"ausblenden" durch einen "eichvorgang". Das kann zum Beispiel Sinn
machen, wenn du den Sensor aus irgend einem Grund in der nähe deines
Motors aufstellen musst!!
Vielleicht ist die Frage ein wenig dumm, aber funktioniert ein Kompass
unter Wasser überhaupt??
Hast du eine Homepage?? Dein Projekt find ich ziemlich spannend!!

Viele Grüße

Christian

von Sven (Gast)


Lesenswert?

@Christian

>Vielleicht ist die Frage ein wenig dumm, aber funktioniert ein Kompass
unter Wasser überhaupt??

Ein elektronischer natürlich nicht, gibt doch einen Kurzschluß! Erst
recht in Meerwasser. ;-)

Sven

von Rahul (Gast)


Lesenswert?

Ein Kompass hat doch nichts mit der Erdoberfläche zu tun.
Womit es unter Wasser Probleme gibt ist GPS und Satelliten-Fernsehen ;)

von Zoltan (Gast)


Lesenswert?

@Chrisitan

Meine Homepage ist ngrad.bei.t-online.de

Ja, was mir aufgefallen ist, dass man mit dem Sensor auch hervorragend
die Neigung messen kann. Das ist für den Einsatz als Kompass natürlich
kein Vorteil, aber das ist in Griff zu bekommen. Die Application Note
beschriebt das Problem auch ausführlich.

Auch der Eichvorgang ist in der A.N. auch sehr gut beschrieben. Das
sollte auch kein Problem darstellen.

Die Frage anch dem Funktion eines Kompasses unter Wasser ist dagegen
schwerer zu beantworten. Aber warumm sollte sich das Magnetische Feld
der Erde im Wasser ändern?

@Sven
Was meinst Du mit Kurzschluß? Ich glaube Du verwechselst Elektrische
Felder mit Magnetischen (Sagt mir ,wenn ich falsch liege).

@Rahul
So stelle ich mir das auch vor.

von Dominic Thomé (Gast)


Lesenswert?

Hi,

habe den CMS02 von Jörg vom Robotikshop.
Mit nur 2 Hallsensoren ist das Ding mehr als lageempfindlich. Ein
leichtes Kippen aus der Waagerechten bringt gleich einen Kursversatz
von 5-80°. Wenn also einer ein 3-Sensormodul baut oder kennt bite ich
um Info.

Dominic

von Sven (Gast)


Lesenswert?

@Zoltan

>Was meinst Du mit Kurzschluß?

Natürlich funktioniert der Kompaß unter Wasser. Die magnetischen
Feldlinien werden nicht beeinflußt (naja, kaum). Gibt ja auch
Taucherkompanden. Bei einem elektronischen Kompaß muß aber ein Gehäuse
rum. Sonst gibt es eben einen Kurzschluß. Das meinte ich.

Ich könnte mir eher vorstellen, dass das Gehäuse Ärger macht, wenn es
aus Blech ist. Aus was baut ihr eure U-Boot? Konservendosen?
Plasteflaschen?

Sven

von Zoltan (Gast)


Lesenswert?

@Dominic
Ich messe die Neigung mit den Beschleunigungssensoren (ADXL202).
Dadurch müsse ich die Neigungsfehler des Kompasses kompensieren
können.

@Sven
Ach, ich dachte Du meinst den Beitrag oben ernst, mit Kurzschluß im
Wasser usw... Ja manche bauen die Modelle tatsächlich aus
Konserevendosen, hauptsache es schwimmt und es ist innen hohl.
Ein Gehäuse aus Metall wäre da natürlich nicht ideal.

von Dominic Thomé (Gast)


Lesenswert?

Da bin ich nun mal gespannt ob Du das rausrechnen kannst. Halte mich
bitte auf dem laufenden.

von Christian (Gast)


Lesenswert?

Hallo Zoltan,
vielleicht wäre es doch besser den teuren 2xcmI sensor zu verwenden -
ich bezweifle, dass es sich so leicht rausrechnen lässt mit der
Neigung. Wenn du Pech hast ändert sich der Fehler nicht nur
proportional zur Neigung, sondern auch in Abhängigkeit der Richtung
(Bsp: Sensor "zeigt" nach Norden, schräglage 8Grad, Fehler:10
Einheiten; wenn du den Sensor jetzt nach Westen drehtst bei gleicher
schräglage ist der Fehler vielleicht schon 20 Einheiten???)
Oben genanntes Beispiel ist reine Spekulation und ich habe es noch
nicht ausprobiert, aber ich könnte mir dieses Problem vorstellen....

Viel Erfolg!!

Christian

von Gigl (Gast)


Angehängte Dateien:

Lesenswert?

Hallo ,
mit den KMZ 51 bzw. CMP03 arbeite ich schon längere Zeit.
Den Neigungsfehler Mithilfe des ADXL 202 herauszurechnen ist mir bisher
nicht gelungen,höchsten Ansatzweise und viel zu ungenau. Wer hierfür
einen schlüssigen Alghorithmus entwickelt sollte dieses hier sofort
kundtun. Ich fürchte jedoch, das dies ziemlich kompliziert ist,
nicht umsonst gibt es 3-Achsen Sensoren, zB.von Jenoptik, siehe
Anhang, allerding kosten die über € 600.-

von Zoltan (Gast)


Angehängte Dateien:

Lesenswert?

Hi Gigl,

ich habe zwar jetzt eine Testschaltung auf meinem Steckbrett aufgabeut,
die jetzt fürs erste ganz gut funktioniert, aber es würde mich
interessieren, wie Deine Hardware aussieht. Könntest Du mir die
Schaltung eventuell zuschicken?

Die Schaltung im Anhang ist jetzt nur eine erste Vorvorläuferversion,
aber Du kannst ja mal einen Blick drauf werfen. Eventuell muss ich noch
die 3. Achse ergänzen.

Gruß
Zoltan

von Zoltan (Gast)


Angehängte Dateien:

Lesenswert?

Könnte mir bitte jemand erklären, wie diese Schaltung im Anhang
funktioniert, bzw hat die Schaltung der beiden Transistoren einen
Namen, nach dem ich googeln könnte?

Die Aufgabe der Schaltung ist, 3µs lange Strompulse von ungf. 2A zu
erzeugen. Dabei soll sich die Stromrichtung nach jedem Puls ändern.

Ließe sich ein Teil der Schaltung nicht durch den PWM ausgang des MC
ersetzten?

Gruß
Zoltan

von Rahul (Gast)


Lesenswert?

Das ist eine Gegentaktendstufe.
Bei TR1 handelt es sich um einen PNP- und bei TR2 umd einen
NPN-Transistor. Wenn beide gesperrt sind, ist der Ausgang hochohmig.
Der Flipping-Generator erzeugt eine Frequenz (weiß jetzt nicht welche).
Auf jeden Fall kommt bei beiden Transistoren eine Rechtechspannung an.
Beim H-Impuls steuer TR2 durch und beim L-Impuls TR1. So wird die
Spannung des Flipping-Generators an die Spulen des Hall-Sensors
weitergeleitet und leistungsmässig verstärkt (mehr Strom).
Da das Magnetfeld von IC6 (Flipping-Spule) in regelmässigen Abständen
wegen der Kalibrierung umgepolt werden muss, ist diese Schaltung
notwendig.
C6 sorgt dafür, dass auch eine negative Spannung zur Verfügung steht,
da die Schaltung nur eine unsymmetrische Versorgung hat.
Es handelt sich dabei um eine Standard-Schaltung zur
Leistungsverstärkung und ist in abgewandelter Form in jeder
CMOS-Endstufe vorhanden.

Gerade habe ich noch mal nachgeguckt: Die Gegentaktendstufe verwendet
die beiden Transistoren in umgekehrter Reihenfolge
(Kollektorschaltung), und wir für den Audiobetrieb verwendet.
Bis auf den Namen sollte die obige Beschreibung aber richtig sein.
Die beiden Dioden schützen die Basen der Transistoren vor zu grosser
negativer Spannung. der vorgeschaltet Hochpass erzeugt ziemlich kurze
Impulse, die dann von den Transistoren verstärkt werden.
So, noch Fragen?
Gruß Rahul

von Gigl (Gast)


Lesenswert?

Hallo Zoltan,

meine Hardware ist  eigentlich identisch mit Deiner,
da können wir uns zur Zeit noch nicht ergänzen.

Du willst eine 3. Achse einfügen , zur Kompensation des Neigungsfehlers
?
Wie sehen hierfür Deine Rechenoperationen aus ?

In dem Kompassmodul von Jenoptik wird hiermit eine
Neigungskompensation bis 60 Grad erreicht.
Aber der Preis  ist für uns hier indiskutabel.

Wie schon zuvor erwähnt, habe ich das bisher mit dem
ADXL 202 versucht, allerdings mit nur mäßigem Erfolg, da die
Abweichungen des Magnetfeldes in jedem Winkelabschnitt in Bezug
auf den Neigungwinkel differieren und in halbwissentschaftlicher
Betrachtung ersteinmal chaotisch wirken.

Noch schwieriger erscheint mir die nachträgliche Kompensation
bei dem preiswerten Kompassmodul CMP03 , da hier am Ausgang nur
noch ein Messwert zur Verfügung steht. Könnte man vieleicht mit
einem 2-ten CMP03 rechtwinklig dazu angeordnet einen Lösungsansatz
finden?
Oder besser noch mit einem  KMZ 51 eine Z-Achse realisieren, um mit
diesem erzeugten Messwert eine Neigungskompensation zu erreichen. Aber
auch hierfür fehlt uns dann wieder die " Weltformel " .

Gruß Gigl

von Zoltan (Gast)


Angehängte Dateien:

Lesenswert?

@Rhaul
kann es sein, dass die Diode vor dem PNP Transistor falsch herum ist?
Ich denke, dass das Problem darin liegt, dass die Schaltung bei 5V
nicht genug Strom liefert. Anders kann ich mir das Bild im Anhang nicht
erklären. Laut Oszi haben die Spannungsspitzten eine Spannung von nur
3V.
Laut Datenblatt kann der Widerstand der Spule 1..3 Ohm betragen. Ich
messe an meinem 12 Ohm. Was bedeuten würde, dass ich bei 3V nur 0.25 A
erzeugen kann. Ungf. 2,8A wären aber laut diesen "Jungs" ideal:
http://www.volny.cz/vopalem/Contribut/Eurosensors/AMR.pdf
Hast Du vielleicht eine Idee, wie ich stärkere Ströme erzeugen kann?
(Ladungspumpe??)

@Gigl
Wie Du siehst bin ich noch nicht so weit, um mich mit der
"Weltformel" zu befassen. Um genau zu rechnen braucht man aber
mindestens drei Hall sensoren, und zwei fürs Rollen (Adxl202).
Ich habe aber grad noch ganz andere Sorgen... :(

Könntest Du mir nicht trotztdem den Teil Deiner Schaltung schicken,
indem Du die Flip-Imupse erzeugst. Verwendest Du 5V oder eine andere
Versorgungspannung?

von Zoltan (Gast)


Angehängte Dateien:

Lesenswert?

Ohne flipping sieht das Signal so aus.

von Zoltan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Nun funktioniert auf dem Steckbrett das Flipping. Es bleibt jedoch ein
Rauschen von 30mV...40mV übrig.
Über die PWM Ausgänge und einem Teifpass lassen sich auch die
Kompensationsspulen sehr schön steuern.

Nun bleibt also die Theorie:
Die Rotation, ohne die Sensoren zu kippen, ist nicht schwer zu
realisieren. Aber dafür wird die Kompensation der Neigung um so
komlexer.
Ich habe einen Teil der Theorie mit Maple darestellt(siehe Anhang).
Es Fehlt mir aber noch eine Sache: Nämlich der Zusammenhang zwischen
verschiedenen Winkeln beim Kippen eines kartesisches
Koordinatensystems.
Dazu habe ich ein Bild gemacht. Veilleicht kennt sich ja jemand damit
aus, und kann mir weiterhelfen: Wie komme ich von Alpha und Beta auf
die restlichen drei Winkel? (Bild siehe nächster Anhang)

Gruß
Zoltan

von Zoltan (Gast)


Angehängte Dateien:

Lesenswert?

Voila:

von ape (Gast)


Lesenswert?

also rein von der logik her ist es imho unmöglich alpha' und beta' zu
bestimmen wenn nur alpha und beta bekannt sind. denn die 3 roten achsen
lassen sich doch zu den 3 grünen "verdrehen", so das sich alpha' und
beta' ändern, ohne das sich alpha und beta ändern.
oder liege ich da falsch?

von ape (Gast)


Lesenswert?

ooh nach genauerer betrachtung des bildes hab ich festgestellt das ich
falsch liege und sich die roten achsen nicht zu den grünen verdrehen
können, bzw. das nicht die frage ist :)

von Zoltan (Gast)


Lesenswert?

Ja, das ganze ist schon etwas tricky. Sobald man beide Achsen kippt
entsteht auch eine Drehung um die nach unten zeigende Achse (Z). Das
Maß für die Drehung muss sich aber irgendwie aus den beiden Winkel
Alpha' und Beta' bestimmen lassen.

von Rahul (Gast)


Lesenswert?

sehe ich es richtig, dass die grünen Pfeile das Weltkooradinatensystem
darstellen und die roten Linien die Bewegung deines Kompasses?

von Marcus (Gast)


Lesenswert?

Hi Zoltan,

ich hab leider jetzt nicht die Zeit, mir über das mathematische Problem
gedanken zu machen, allerdings spannst Du mit den Einheitsvektoren und
den Winkeln zwei Ebenen auf, so das Du über das Kreuzprodukt den
orthogonalen z-Einheitsvektor aufspannen kannst und betrachtest das
ganze dann als Ebenschnittproblem. Du kannst dann durchaus auch die
Winkel mit denen sich die beiden Ebenen schneiden ermitteln. Zudem
kannst Du die Winkel zwischen den beiden Fläachennormalen Vektoren
bestimmen und vielleicht somit auch auf den Winkel der Z-Achse kommen
bzw. diese warscheinlich auch in Relation setzen.

Obs so ganu funktioniert weiß ich nicht, weil es für mich jetzt nicht
sofort ersichtlich ist, welche Werte Du hast.

Schau aber mal bei google oder in mathematik Unterlagen nach. Dort
gibts sicher sehr gute Lösungen zu dem Problem. Stichwort Ebenenschnitt
Probleme - Vektorrechnung.

Gruß

Marcus

von Zoltan (Gast)


Lesenswert?

@Rahul
Ja die grünen Pfleie sind das Weltkooradinatensystem, aber die roten
Linien stellen nicht die Drehung des Kompasses, sonder nur die
Neigung/Kippung (roll/pitch) da! Die Berechnung der Richtung, also das
was eingetlich den Kompass ausmacht, erfolgt erst später(siehe
Kompass.zip). Die Winkel sind ja auch unabhängig davon, ob der Sensor
nach Norden oder sonstwohin zeigt.

@Marcus
Bis zu dem Ebenschnittproblem bin ich auch gekommen. Leider ist meine
Vektorrechnung schon etwas eingerostet.
Ich werde aber Deinen Rat befolgen, und etwas googlen. Ich habe nämlich
bis jetzt immer nur nach Koordinatentransformation gesucht.

Gruß
Zoltan

von Zoltan (Gast)


Angehängte Dateien:

Lesenswert?

Vieleicht noch ein Wort zu den Winkeln Alpha' und Beta':
Wenn man die Platine mit den beiden KMZ51 für die Richtingsmessung
neigt, dann verändert sich deren 90° Ausrichtung zueinader, in Bezug
auf das Weltkooradinatensystem. Das sieht man oben rechts auf dem Bild
"Koordinatensystem.gif".
Deswegen verschieben sich auch die sin und cos (siehe Anhang), da sie
dann nicht mehr 90° Phasenverschiebung zueinander haben. Um das zu
korgieren brauche ich Alpha' und Beta'.

von Marcus Maul (Gast)


Lesenswert?

Hallo Zoltan,

halte vor allem nach der Hessischen Normalform (HNF) aussschau.
Wenn Du mit Einheitsvektoren arbeitest, die X und Y-Werte solltest Du
ja kennen, dann ergibt sich z = sqrt(1-x²-y²).

Hoffe, das hilt Dir jetzt irgendiwe weiter.

Gruß Marcus

von Zoltan (Gast)


Angehängte Dateien:

Lesenswert?

Jetzt habe ichs endlich. Maple kann jetzt die Winkel Phi und die Summe
aus Alpha' und Beta' berechnen. Die Gleichung ist aber mit...

cos(phi)=cos(alpha)*(tan(alpha)^2*cos(beta)^2+cos(beta)^2-tan(alpha)^2)^ 
(1/2)/(cos(beta)*((1-cos(beta)^2)*tan(alpha)^2/cos(beta)^2+(tan(alpha)^2 
*cos(beta)^2+cos(beta)^2-tan(alpha)^2)/cos(beta)^2)^(1/2)*(abs(sin(alpha 
)*(tan(alpha)^2*cos(beta)^2+cos(beta)^2-tan(alpha)^2)^(1/2)/cos(beta))^2 
/((1-cos(beta)^2)*tan(alpha)^2/cos(beta)^2+(tan(alpha)^2*cos(beta)^2+cos 
(beta)^2-tan(alpha)^2)/cos(beta)^2)+abs(sin(alpha)*(1-cos(beta)^2)^(1/2) 
*tan(alpha)/(cos(beta)*((1-cos(beta)^2)*tan(alpha)^2/cos(beta)^2+(tan(al 
pha)^2*cos(beta)^2+cos(beta)^2-tan(alpha)^2)/cos(beta)^2)^(1/2))+cos(alp 
ha)^2*(1-cos(beta)^2)^(1/2)*tan(alpha)/(cos(beta)*((1-cos(beta)^2)*tan(a 
lpha)^2/cos(beta)^2+(tan(alpha)^2*cos(beta)^2+cos(beta)^2-tan(alpha)^2)/ 
cos(beta)^2)^(1/2)*sin(alpha)))^2+abs(cos(alpha)*(tan(alpha)^2*cos(beta) 
^2+cos(beta)^2-tan(alpha)^2)^(1/2)/cos(beta))^2/((1-cos(beta)^2)*tan(alp 
ha)^2/cos(beta)^2+(tan(alpha)^2*cos(beta)^2+cos(beta)^2-tan(alpha)^2)/co 
s(beta)^2))^(1/2))

...etwas lang, und es ist auch noch nicht komplett :-)
Ich denke aber, dass aus der Gleichung sich eine Tabelle erstellen
lässt, auf den ich zur Kompensation der Neigung zugreifen kann.

Z.B. bräuchte man um +-30° Neigung in 1° Schritten kompensieren zu
können ein 60x60 großes Datenfeld mit insgesammt 3600 Einträgen. Das
ist bei zB 16K Flash kein Problem, und dieses Verfahren beschleunigt
natürlich die "Berechnung" enorm.

Gruß
Zoltan

von Rahul (Gast)


Lesenswert?

Hi, Zoltan!
Ich wollte mal fragen, was aus dem Kompass geworden ist.
Bei uns in der FH läuft gerade die Fortführung eines Projektes mit dem
KMZ51, allerdings nicht als Kompass, sondern Magnetfeld-Erkennung.

Gruß
Rahul

von Hagen (Gast)


Lesenswert?

ich glaube nicht das man mit dem ADXL-Beschleunigungs-Sensor den
Neigungsfehler rausrechnen kann. Das ging nur dann wenn das Modell in
dem der Sensor eingebaut wurde physikalisch still steht. Sobald sich
das Modell aber bewegt verändert sich der Meßwert im Sensor. Fährt er
durch eine Kurve so misst er zusätzlich noch die Fliehkräfte.
Sogesehen misst der ADXL eigentlich die falsche physikalische Größe.
Zum Messen der exakten Neigung==Raumlage des Modells benötigt man ein
Kreiselsystem.

Gruß Hagen

von Gast (Gast)


Lesenswert?

Hallo,
den Sensor vielleicht "kardanisch" lagern(wie beim Kreiselkompass)

von Michael von Gersdorff (Gast)


Lesenswert?

Ich habe den KMZ51 als Kompaß für Rally-Motorräder eingesetzt und zwar
in einer Schaltung in der die Kompensationsspulen von einem Regelkreis
so angesteuert werden daß das Erdmagnetfeld kompensiert wird. Der dazu
erforderliche Strom ist dann proportional zur Erdmagnetfeldstaerke. Mit
zwei Sensoren und einer arctang Tabelle habe ich die beiden Signale
ausgewertet. Die erreichbare Genauigkeit liegt bei ca einem Grad. Ich
halte auch eine kardanische Aufhängung für eine gute Idee.
Möglicherweise mit einer geeigneten Dämpfung kombiniert so daß das Ding
nich zu sehr schaukelt.
Störend ist halt daß in unseren Breiten die Magnetfeldlinien relativ
steil (ca 50 Grad) in die Erdoberfläche eindringen. Dadurch wird der
Einfluß der Nick bzw Rollage in West-Ost bzw Nord-Süd Richtung relativ
stark. Am Äquator wäre alles viel einfacher.

von Zoltan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

das finde ich echt witzig, dass dieses thread wieder auftaucht, weil
ich auch gerade dieses Wochenende vor hatte etwas zu dem Thema zu
posten. Und zwar hatte die letzten Wochen etwas Zeit und diese habe ich
genutzt um ein Simulink Modell von einem einfachen Kompass zu erstellen.
Ich verwende das ADXL202 Simulink Modell von Analog Devices (kann man
auf deren Seite downloaden). Die restlichen Blöcke sind von mir
zusammengebaut. Links oben (siehe Anhang) auf der Simulink Oberfläche
ist ein grüner Subsystem in dem die Neigung und der Azimuth bezogen auf
den magnetischen Nordpol eingegeben werden können. Weitehin kann man
hier den Erdmagnetfeldvektor definieren. Aus den Winkeln und dem Vektor
ist es nun mit Hilfe der Kardanrotation möglich, die Feldstärke verteilt
auf die einzelnen Hallsensoren zu berechnen. Ebenso werden die
Komponenten der Erbeschleunigung für die zwei Achsen des ADXL
ermittelt. Nach den Sensormodellen folgen RC-Filter und die Verstärker
(es lässt sich das Rauschen der Sensoren ein und ausschalten). Am
Schluss der Kette steht eine S-Function, welche die Funktion eines AVR
nachbildet. Das wichtigste Ergebniss aus dem simulierten AVR ist der
Azimuth der nun mit dem im grünen Eingangsblock definierten Azimuth
verglichen werden kann (Vergleich siehe Scopes rechts unten).

   Wie schon Hagen schrieb, kann man mit dem ADXL nur die Neigung in
Ruhe messen, und nicht wenn der Sensor bewegt wird. Allerdings enthält
das Simulink Modell noch keinen Kreisel (Gierratensensor), da es sich
hier um die erste Version handelt. Dennoch bietet dieses Modell die
Möglichkeit physiklaische Grössen zu betrachten( die zum Teil nur mit
sehr teuern Messgeräten annähernd so genau gemessen werden könnten wie
hier) und verschiedene Kalibrierungs und Kompensationsvarianten zu
testen. Das Problem ist dass die S-Funktion in Simulink zum Teil anders
aufgebaut werden muss, wie die AVR-C-Kode. Dadurch macht man sich dann
fast die doppelte Arbeit.

Leider gibt es keinen AVR-Modell in Simulink der es erlauben würde die
hex Files der kompilierten AVR-Kode zu benutzten. Doch vielleicht gibt
es eine Möglichkeit in Simulink
-AVRStudio oder einen anderen AVR Simulator einzubinden?
-oder mit Hilfe des JTAG die Finktion des AVR-Kode in der Harware zu
testen und den ATEMAG8 Simulink block(S-funtion) durch einen "Simulink
Daten in JTAG Konverter"-Block zu ersätzen.  Da die Dynamik in der
Simulation (zB. RC-Glied) nicht von der Geschwindigkeit der Simulation
abhängt könnte man nach jedem Zeitschritt die eintprechenden
Simulierten analogen Werte über JTAG (USART??) in den AVR übermitteln,
und erst wenn dieser die Daten Verarbeitet hat zum nächsten
Simulations-Zeitschritt gehen. Das würde natürlich, wenns überhaupt
geht, die Simulationsdauer nicht grad verkürzen.
-oder???

Meine Frage wäre wie man die Funktion eines AVR in die Simulation
einbinden könnte, ohne die orignal AVR-Kode (zu sehr) ändern zu
müssen?

Gruß
Zoltan

von Zoltan (Gast)


Angehängte Dateien:

Lesenswert?

Im Anhang befindet sich das Simulink Modell (Matlab 7) und eine dazu
erforderliche Bibliothek. Nach dem man die beiden Verzeichnisse (in
z.B. Matlab/Work) entpackt hat muss man noch in Matlab unter ->File ->
Set Path... -> Add Folder die MyLibrary Verzeichniss in die Matlab
Bibliothek einbinden.

Gruß
Zoltan

von Hagen (Gast)


Lesenswert?

Auch eine kardanische Lagerung der ADXL's wird nichts bringen. Bewegt
sich das Modell in einer Kurve dann wird die kardanische Lagerung
ebenfalls den Fliehkräften zum Modell unterliegen. Ok zwar zeitlich
verzögert aber denoch wirken die Kräfte bezogen zum Modell und nicht
zur Erde.

Kreisel sind kardanisch gelagert UND erzeugen durch hohe Rotation ein
"Ruhemoment". Sie behalten also ihre Lage durch die hohe Rotation
bei, da diese die Fliehkräfte/Bewegungen/Beschleungungen des Modells
kompensieren. Die hohe Rotation und die daraus resultierenden
Fliehkräfte heben die Fliehkräfte die auf das Modell wirken fast auf.

Mit einem Kreisel misst man auch nur die Winkelbeschleunigungen des
Modells relativ zur Startposition in Ruhelage.

Mit den ADXL's kann man also nur die Beschleunigungen des Modells
relativ zu sich selber messen. Steht das Modell ruhig, also synchron
zur Erde und der ADXL misst senkrecht zum Erdmittelpunkt wird die
Erdbeschleunigung von 1G gemessen. Die Beschleunigung eines Modells
durch Bewegung ist mit dem ADXL nur relativ zum Modell selber zu
messen.

Um den relativen Winkel des Modells zur Erdachse mit den ADXL's
berechnen zu können darf sich das Modell besogen zur Erde nicht
bewegen. Da aber auch die Beschleunigung Erde wiederum nur releativ zu
sich selber durch die ADXL's gemessen wird, beisst sich die Katze ind
den Schwanz.

Man benötigt ein Instrument das ausgehend von einer Startposition in
Ruhelage des Modells (als Nullpunkt) später die Bewegungen des Modells
relativ messen kann. Am besten sollte dieses Instument die
Winkelabweichungen zum Ruhepunkt messen können. Nun, exakt das kann nur
ein Kreisel oder eben eine Ortsgebundene Triangulierung mit Hilfe von
äußeren Meßpunkten -> GPS zB.

Gruß Hagen

von Martin (Gast)


Lesenswert?

Hallo !

Im Rahmen einer Diplomarbeit habe ich ebenfalls den KMZ 52 aus
elektronischen Kompass eingesetzt. Jetzt ist allerdings folgendes
Problem aufgetreten : Nach einiger Zeit im einwandfreien Betrieb hat
sich die Ausrichtung der Sensoren verändert. Mein Nordpol ist jetzt um
ca. 40° versetzt. Kann es sein, dass der Sensor von aussen oder durch
den normalen Betrieb irgendwie magnetisiert wurde ? Wie kann ich ihn
wieder zurücksetzen ?

In einer Doku zum KMZ (ich weiss nicht mehr welcher) habe ich auch
etwas von einer Initialisierung vor dem ersten Anschluss gelesen. Kann
mir jemand von euch weiterhelfen ?

Danke schon einmal im voraus !

Grüße,
Martin

von Patrick (Gast)


Lesenswert?

Hallo zusammen

bin jetzt so gut wie fertig mit der kompenstation des KompassSignals mit 
Hilfe des Micromag3. Es gibt allerdings noch ein großes Problem. Überall 
wird beschrieben wie die x und y Achse kalibiert werden müssen das ist 
kein Problem. Aber nirgens steht wie man die Z Achse kalibiert so das 
man in der Kompensationsformel auch richtige Werte bekommt. Momentan 
sind x und Y Werte wie zu erwarten x entspricht einem cos und y einem 
-sin. Z ist horizontal Ausgerichtet nahe maximalwert und auf dem Kopf 
nahezu minimal. Beim drehen von z fällt auf das er in die eine Richtug 
konstant fällt aber in die andere kurz ansteigt und dann anschließend 
fällt ist das normal hat das was mit den 66° Winkel der 
Erdmagnetfeldlinien zu tun? Frage weiß jemand wie der Z Wert sein muss 
das die Kompensation funktioniert. Bin echt am verzweifeln!

Gruß
Patrick

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.