www.mikrocontroller.net

Forum: Codesammlung KOMPASS KMZ10A KMZ10B ATmega8 Assembler


Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

Mit relativ wenig Aufwand entsteht ein hinreichend genauer Kompass
mit 2 Sensoren vom Typ KMZ10.

Einfach die Kalibrierungstaste betätigen, einen Moment warten bis das
blinken aufhört, dann langsam die Senoren um 360° drehen und nochmals
die Kalibrierungstaste drücken.

Die Sensoren müssen um 90° versetzt angeordnet sein, der Sensor (ADC0
und ADC1) ist der Hauptsensor, der Hilfssensor (ADC2 und ADC3) bestimmt,
ob der Hauptsensor nach OSTEN oder nach WESTEN gerichtet ist.

Auf das im Schaltplan eingezeichnete LCD-Modul kann verzichtet werden,
es zeigte nur die Pegel der Sensoren an.

Bitte aufpassen, die Sensoren KMZ10A und KMZ10B lassen sich sehr schnell
(schon durch einen in der Nähe befindlichen magnetischen
Schraubenzieher) ungewünscht magntisieren bzw. ummagnetisiern.

Versuche haben gezeigt, dass ein definiertes vormagnetisieren doch
garnicht so verkehrt ist.

Die Sensoren in der Schaltung müssen nur so geschaltet sein, wenn sie
nach Norden zeigen, muss am ADC0 für den Hauptsensor bzw. ADC2 für den
Hilfssensor der höchste Spannungswert anliegen.


Bernhard
Autor: Bernhard S. (bernhard)
Datum:
Angehängte Dateien:

Die beiden Sensoren (Prototyp) ^^
Autor: Thomas Bremer (Firma: Druckerei Beste) (virtupic)
Datum:

Uih! Hätte nicht gedacht, dass man mit diesen Sensoren einen Kompass
bauen kann. Habe bisher nur darüber gelesen, aber noch nix getestet.
Aber man liest von den wildesten Konzepten...

> Versuche haben gezeigt, dass ein definiertes vormagnetisieren doch
> garnicht so verkehrt ist.

Genau deswegen. Magentoresistive Sensoren sollen unterhalb der Sättigung
nur zu gebrauchen sein, wenn man sie in die richtige Richtung
vormagnetosiert. KMZ51 / KMZ52 haben dafür schon Spulen integriert. Aber
mit der Kalibrie kriegt man das wohl wenigstens temporär in den Griff.

virtuPIC
/ggadgets for tools & toys
Autor: Läubi .. (laeubi) (Moderator) Benutzerseite
Datum:

Wie lange hält den diese kalibrierung? Weiß der Kompaß dan wo Norden ist
oder muß man den zum kalibrieren einmal ausrichten?

Hätte noch nen paar Fragen:
- wozu ist der LDR da?
- warum nuzt du für die 32x32 nicht den Hardware multiplizierer? Hat das
nen Grund?
Autor: Bernhard S. (bernhard)
Datum:

@Thomas

mit dem KMZ51 würde ich auch gern mal experimentieren, do wo bekommt man
ein soches Bauteil her?


@Läubi


> Wie lange hält den diese kalibrierung?

Solange, bis sich die Vormagnetisierung des KMZ aus irgendwelchen
Gründen ändert. (z.B. Starkes Magnetfeld, Temperaturenschwankungen,
Erschütterungen usw.)

Momentan arbeit die Schaltung seit ca. 14 Tagen ohne erneutes
kalibrieren.

Die Kalibrierungsdaten werden im EEOROM des µC abgelegt.



> Weiß der Kompaß dan wo Norden ist oder muß man den zum kalibrieren
> einmal ausrichten?

Wärend des Kalibriervorgangs muss der Kompass um 360° gedreht werden.
Dabei werden die minimalen und maximalen Spannungswerte der Sensoren
ermittelt.
Der maximale Spannungswert am Hauptsensor ist dann Norden, der minimale
der Süden.

Experimente ergaben: der größte Spannungswert am Hauptsensor liegt an,
wenn die Oberseite des KMZ nach Norden zeigt.


>wozu ist der LDR da?

kann zur Helligkeitsregelung verwendet werden.


>warum nuzt du für die 32x32 nicht den Hardware multiplizierer?

Künstlerische Freiheit ;)


Bernhard
Autor: Thomas Bremer (Firma: Druckerei Beste) (virtupic)
Datum:

> mit dem KMZ51 würde ich auch gern mal experimentieren, do wo bekommt man
> ein soches Bauteil her?

http://search.digikey.com/scripts/DkSearch/dksus.d...

Micht schreckt daran ab, dass ich die kleinen Pins mit meinen zwei
linken Händen verlöten müsste...

>> Wie lange hält den diese kalibrierung?
...
> Momentan arbeit die Schaltung seit ca. 14 Tagen ohne erneutes
> kalibrieren.

Wie genau ist er denn? Ich gebe zu, den Code habe ich mir noch nicht
angeguckt. Himmelsrichtung auf einen Oktanten genau anzugeben hilft beim
Wandern oder Geocaching, aber zur Navigation auf dem Boot oder im
Flugzeug sieht's anders aus.

virtuPIC
/ggadgets for tools & toys
Autor: Bernhard S. (bernhard)
Datum:

> Wie genau ist er denn?

Ich schätze seine Genauigkeit auf +- 1/16 Oktogon (+- 20°) ein, die
höchste Genauigkeit lässt sich erreichen, wenn der Sensor genau
waagerecht gehalten wird.
Autor: Horst Seydlitz (freeman)
Datum:

Hallo Bernhard,
da ich schon länger mit der Magnetgeschichte experimentiere ist es sehr
interessant wie Du die Schaltung verdahtet hast. Könntest Du mir dies
freundlicher Weise mitteilen????
Ich habe eine Magnetnadel in einer Drehspule gebaut und messe den
Magnetstand über Fotozellen.
Autor: Bernhard S. (bernhard)
Datum:

Hallo Horst,

den Schaltplan findest Du ganz oben in der *.zip Datei

Bernhard
Autor: Guido P. (took)
Datum:

Nachdem ich http://www.tavrasm.org/ runter geladen und compiliert habe,
die Ansteuerung von LCD-Display auskommentiert habe und eine
Unstimmigkeit mit der Kalibrier-Taste gefixt habe (Laut Schaltplan liegt
die an PB6, im Code stand tw. PC4... :-?) funktioniert das sogar schon
auf meinem Steckbrett prima! :-)

Hier ein paar Bilder:
https://blog.koeln.ccc.de/2009/02/15/mikrocontroll...

Thx an Bernhard für den Code!
Autor: Michael S. (Gast)
Datum:

Hallo Bernhard,

dieser Thread hat mich motiviert, mit dem "analogen" Teil deines
Versuches zu experimentieren, die Auswertung erfolgte mit einem
Multimeter.

Mit der Ergebnis, dass mit dem KMZ10a auch eine Auflösung von 1 Grad
erreichbar sein sollte.

Zunächst habe ich durch geänderte Widerstandswerte die Verstärkung der
Differenzspannung soweit erhöht (2x 20k + 50 Ohm -> 800-fache
Verstärkung),
dass der verfügbare Mess-/Spannungsbereich bis 5 Volt besser ausgenutzt
wird.

Die Differenzspannung liegt nun (vereinfachte Werte) zwischen 4,500 Volt
(Drahtanschlüsse des Sensors zeigen nach Süden) und 1,700 Volt
(Drahtanschlüsse zeigen nach Norden).

Wichtig: Der KMZ10a wird horizontal ausgerichtet, die Drehachse steht
senkrecht auf
der Grundebene.

Auffällig ist, dass sich die Nordrichtung nicht wirklich eindeutig
einstellen lässt.
Dafür die Ost-West-Richtung umso besser.

Aber das wird schnell verständlich, wenn man sich den Zusammenhang
zwischen der Ausrichtung des Sensors und der Differenzspannung einmal
als Tabelle darstellt:

Winkel    Sinus      U_diff    delta U_diff
gegen     (90° - Winkel)       (je 5 Grad)
Nord
0       1,000          4,500    0,005
5       0,996          4,495    0,016
10      0,985          4,479    0,026
15      0,966          4,452    0,037
20      0,940          4,416    0,047
25      0,906          4,369    0,056
30      0,866          4,312    0,066
35      0,819          4,247    0,074
40      0,766          4,172    0,083

45      0,707          4,090    0,090
50      0,643          4,000    0,097
55      0,574          3,903    0,103
60      0,500          3,800    0,108
65      0,423          3,692    0,113
70      0,342          3,579    0,116
75      0,259          3,462    0,119
80      0,174          3,343    0,121
85      0,087          3,222    0,122
90      0,000          3,100    0,122 -> Mittelwert !!
95     -0,087          2,978    0,121
100    -0,174          2,857    0,119
105    -0,259          2,738    0,116
110    -0,342          2,621    0,113
115    -0,423          2,508    0,108
120    -0,500          2,400    0,103
125    -0,574          2,297    0,097
130    -0,643          2,200    0,090
135    -0,707          2,110    0,083

140    -0,766          2,028    0,074
145    -0,819          1,953    0,066
150    -0,866          1,888    0,056
155    -0,906          1,831    0,047
160    -0,940          1,784    0,037
165    -0,966          1,748    0,026
170    -0,985          1,721    0,016
175    -0,996          1,705    0,005
180    -1,000          1,700

In Nord-Südausrichtung werden je Grad nur 0,001 V Differenz gemessen,
in Ost-Westausrichtung dagegen ca. 0,024 Volt je Grad (0,122 Volt je
5 Grad).
Am ADC eines ATtiny26 würden das schon fast 5 Digits (5 * 5mV =
0,025 Volt) je Grad ausmachen.

Was bedeutet, dass Winkel von 1 Grad differenzierbar sein sollten
(ich rede von Auflösung, nicht von Genauigkeit !!).

Im Messbereich von 45 / 135 Grad gegen Nord stehen immerhin noch fast 4
Digits je Grad zur Verfügung.
Lediglich der Messbereich Nord/Süd +- 45 Grad taugt nicht gut zur
Auswertung.

Nun würde ich (wenn ich denn einen weiteren KMZ10a in meiner Bastelkiste
hätte) einen zweiten Sensor um 90 Grad verdreht anordnen
(so wie bei deiner Messanordnung auch).

Allerdings würden ein Sensoren jeweils nur dann der Hauptsensor sein,
wenn er den oben angeführten Bereich (Ost-West +- 45 Grad) abdecken.
Der zweite Sensor liefert in diesem Fall als Nebensensor nur die
Nordrichtung.

Ist der optimale Messbereich verlassen, dann tauschen Haupt- und
Nebensensor ihre Funktion.

Damit sollte über den gesamten Vollkreis eine Auflösung von 1 Grad
erreichbar sein.

PS.
Ist der KMZ10b wirklich alternativ zum KMZ10a einsetzbar ?
Laut Manual hat er nur 1/4 der Empfindlicheit des KMZ10a - und
Navigation wird als Einsatzbereich beim KMZ10b nicht ausdrücklich
erwähnt.

Dummerweise scheint niemand mehr den KMZ10a anzubieten.

mfg

Michael S.
Autor: Sebastian Gabbert (huehnerhose)
Datum:

Hi!

Ich habe gerade interessiert mehrere Beiträge hier im Forum gelesen. Und
komme ebenfalls zu der Frage: Lässt sich der KMZ10a durch den KMZ10b
ersetzen? Und wenn ja mit welchem Verlust der Genauigkeit?
Ich brauche eigentlich nur eine Auflösung in ca. 8 Bereiche
(N/S/W/O/NW/NO/SW/SO) da ich nur die grobe Ausrichtung eines GPS-Kompass
(per Pfeil wird die Strecke zum nächsten Wegpunkt angezeigt) realisieren
will. Dazu will ich eigentlich nur wissen wie herum das Handgerät gerade
gehalten wird, da ich das ja leider nicht aus der GPS-Bewegung ablesen
kann.

Denkt ihr da reicht eine anordnung von 2 KMZ10b?

Gruß & Dank
Autor: Florian T (Gast)
Datum:

Hallo, ich bin noch relativ neu und habe vorallem von Assembler noch
keine Ahnung.

Ich habe gelesen, dass im code die Taste für die Kalibrierung auf dem
falschen Port liegt. Nun meine Frage: was muss ich im Code ändern damit
die Taste auch codeseitig an der richtigen stelle liegt.

an dem "falschen port geht die taste ja...

Gruß und Dank im Voraus,
Florian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net