-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: 3D kompass. Rechnung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.02.2013
    Beiträge
    51

    3D kompass. Rechnung

    Anzeige

    Hallo RN,
    ich lese so meinen 3D Kompass aus:
    Code:
    #!/usr/bin/env python3
    import time
    import random
    import smbus
    import math
    import serial
    
    
    while True:
        mitte = 0
        bus.write_byte_data(address,0,80)
        bus.write_byte_data(address,1,32)
    
        bus.write_byte_data(address,2,1)    
        time.sleep(0.01)
        x = y = z = 1.0 
        x = y = z = 1.0
        x1=bus.read_byte_data(address,3)
        x2=bus.read_byte_data(address,4)
        z1=bus.read_byte_data(address,5)
        z2=bus.read_byte_data(address,6)
        y1=bus.read_byte_data(address,7)
        y2=bus.read_byte_data(address,8)
    Jetzt möchte ich den Winkel nach Norden ausrechnen. Kann mir wer helfen :/
    Ich würde nun gerne den Winkel unabhängig von der Neigung des Modules berechnen.
    LG
    Versuch 1:
    Code:
    #!/usr/bin/env python3
    import time
    import random
    import smbus
    import math
    import serial
    
    bus = smbus.SMBus(1)
    address = 0x1e
    while True:
        mitte = 0
        bus.write_byte_data(address,0,80)
        bus.write_byte_data(address,1,32)
    
        bus.write_byte_data(address,2,1)    
        time.sleep(0.01)
        x = y = z = 1.0 
        x = y = z = 1.0
        x1=bus.read_byte_data(address,3)
        x2=bus.read_byte_data(address,4)
        x=x1*256.0+x2
    
        if x>32767:
            x-=65536
            z1=bus.read_byte_data(address,5)
            z2=bus.read_byte_data(address,6)
            z=z1*256.0+z2
     
        if z>32767:
            z-=65536
            y1=bus.read_byte_data(address,7)
            y2=bus.read_byte_data(address,8)
            y=y1*256.0+y2
     
        if y>32767:
            y-=65536
    
    
        #print"teyt",x,y,z
        ang = 180+round(math.atan2(x, y)*(180/math.pi),0)
    
        print"winkel",ang
    bringt allerdings nur werte bis 270grad...kann mir wer helfen?

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Hey,

    werden die X und Y Koordinaten den richtig ausgegeben?
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.02.2013
    Beiträge
    51
    Zitat Zitat von Kampi Beitrag anzeigen
    Hey,

    werden die X und Y Koordinaten den richtig ausgegeben?
    ich habe den Kompass x,y,z mal aufgezeichnet dazu den errechneten winkel

    X: -3.0 Y: -303.0 Z: -400.0 Winkel 1.0
    X: -3.0 Y: -301.0 Z: -401.0 Winkel 1.0
    X: -22.0 Y: -293.0 Z: -403.0 Winkel 4.0
    X: -75.0 Y: -266.0 Z: -406.0 Winkel 16.0
    X: -176.0 Y: -210.0 Z: -392.0 Winkel 40.0
    X: -209.0 Y: -70.0 Z: -393.0 Winkel 71.0
    X: -184.0 Y: 35.0 Z: -390.0 Winkel 101.0
    X: -118.0 Y: 117.0 Z: -390.0 Winkel 135.0
    X: -35.0 Y: 123.0 Z: -399.0 Winkel 164.0
    X: 83.0 Y: 1.0 Z: 1.0 Winkel 269.0
    X: 156.0 Y: 1.0 Z: 1.0 Winkel 270.0
    X: 230.0 Y: 1.0 Z: 1.0 Winkel 270.0
    X: 263.0 Y: 1.0 Z: 1.0 Winkel 270.0
    X: 226.0 Y: 1.0 Z: 1.0 Winkel 270.0
    X: 186.0 Y: 1.0 Z: 1.0 Winkel 270.0
    X: 182.0 Y: 1.0 Z: 1.0 Winkel 270.0
    X: 132.0 Y: 1.0 Z: 1.0 Winkel 270.0
    X: 120.0 Y: 1.0 Z: 1.0 Winkel 270.0

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    15.08.2012
    Beiträge
    21
    Hey Spacecam,
    ich habe deine Daten mehrfach überprüft und dabei auch eine andere Formel zu Hilfe genommen, aber es kommt immer das Gleiche heraus: Du hast nunmal nur Winkel bis 270°.
    Wenn du genauer drüber nachdenkst ist es auch logisch, am Schluss deiner Tabelle bleibt Y konstant bei 1.0, nur X verändert sich. Daraus folgt eine so kleine Änderung des Winkels, dass wegen der Rundung nur noch 270° herauskommt.
    Ich habe dir zum Überprüfen mal eine Tabelle und ein Bild angehängt, sofern ich alles richtig verstanden habe kannst du damit per Hand deinen Winkel überprüfen.
    Höchstwahrscheinlich werden die Werte falsch ausgelesen, oder das Gerät spinnt.

    MFG TechipionKlicke auf die Grafik für eine größere Ansicht

Name:	Kompass.png
Hits:	4
Größe:	3,5 KB
ID:	26230
    Angehängte Dateien Angehängte Dateien

  5. #5
    Erfahrener Benutzer Begeisterter Techniker Avatar von Torrentula
    Registriert seit
    10.10.2009
    Ort
    Procyon A
    Alter
    21
    Beiträge
    355
    Mir hat diese Seite sehr gut geholfen, die Winkelberechnung zu verstehen: https://www.loveelectronics.co.uk/Tutorials/8/
    Ist ja im Endeffekt dasselbe, was man auch schon in der 8. Klasse in Physik lernt, mann kan einen Vektor auf der XY-Ebene in seine beiden Teilvektoren in X und Y Ebene zerlegen. Genau diese Teilvektoren misst ja das Magnetometer und mit Hilfe des (Arcus-)Tangens kann man dann den Winkel zum magnetischen Nordpol berechnen.

    Zu beachten ist, dass man die Werte vom Magnetometer mit Hilfe der lokalen Abweichung des Erdmagnetfeldes kompensieren muss, um genau den magnetischen Nordpol zu bestimmen (ist auch in dem Artikel oben beschrieben, lokale Abweichung lässt sich im Netz nachschauen, bzw. auch das GPS kann es einem sagen).

    Wenn du dann noch für die Neigung kompensieren willst, benötigst du ein Accelerometer, ist in diesem Artikel beschrieben: https://www.loveelectronics.co.uk/Tu...duino-tutorial
    MfG Torrentula

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    09.02.2013
    Beiträge
    51
    Zitat Zitat von Technipion Beitrag anzeigen
    Hey Spacecam,
    ich habe deine Daten mehrfach überprüft und dabei auch eine andere Formel zu Hilfe genommen, aber es kommt immer das Gleiche heraus: Du hast nunmal nur Winkel bis 270°.
    Wenn du genauer drüber nachdenkst ist es auch logisch, am Schluss deiner Tabelle bleibt Y konstant bei 1.0, nur X verändert sich. Daraus folgt eine so kleine Änderung des Winkels, dass wegen der Rundung nur noch 270° herauskommt.
    Ich habe dir zum Überprüfen mal eine Tabelle und ein Bild angehängt, sofern ich alles richtig verstanden habe kannst du damit per Hand deinen Winkel überprüfen.
    Höchstwahrscheinlich werden die Werte falsch ausgelesen, oder das Gerät spinnt.

    MFG TechipionKlicke auf die Grafik für eine größere Ansicht

Name:	Kompass.png
Hits:	4
Größe:	3,5 KB
ID:	26230
    ok,
    ich habe mal eine neuen bestellt.... ich hoffe dann läuft es. Danke für die Exel anwendung

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    09.02.2013
    Beiträge
    51
    fehler gefunden... ich hatte ausversehen das auslesen von

    z1 u z1 in der IF bedinung drinne....
    sry
    Geändert von Spacecam (17.08.2013 um 14:21 Uhr)

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    15.08.2012
    Beiträge
    21
    Macht doch nix
    Nur aus Fehlern lernt man schließlich!

    Sag mal, hat dein 3D-Kompass zufällig was mit dem Projekt zu tun einen Raspi ins All zu schießen?
    Gruß Technipion

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    09.02.2013
    Beiträge
    51
    Zitat Zitat von Technipion Beitrag anzeigen
    Macht doch nix
    Nur aus Fehlern lernt man schließlich!

    Sag mal, hat dein 3D-Kompass zufällig was mit dem Projekt zu tun einen Raspi ins All zu schießen?
    Gruß Technipion
    Zufällig ja,
    ich habe einen Script der mit GPS Daten die mir mein GPS Modul ausgibt einen Kurs ausrechnet denn der Raspi fliegen muss. Nun brauch ich nur sicherheitshalber noch ein Accelerometer wie
    Torrentula erwähnt hat. Im Moment kann die Box mit dem PI schon recht gut fliegen und den Kurs ansteuern.


    LG

    LG
    Geändert von Spacecam (17.08.2013 um 15:53 Uhr)

  10. #10
    Erfahrener Benutzer Begeisterter Techniker Avatar von Torrentula
    Registriert seit
    10.10.2009
    Ort
    Procyon A
    Alter
    21
    Beiträge
    355
    Du benötigst immer noch ein Accelerometer, denn schließlich willst du ja für Neigung kompensieren. Das Magnetometer misst ja erstmal nur die Stärke eines Magnetfeldes auf 3 Achsen. Diese Werte werden in der Einheit Gauß angegeben, d.h. du musst sie, wie du es bereits machst im Code, miteinander verrechnen, sodass du einen Winkel zum magnetischen Nordpol bekommst (<besserwisser>und erst dann ist es ein Kompass</besserwisser> :P).

    Diese simple Formel:
    Code:
    ang = 180+round(math.atan2(x, y)*(180/math.pi),0)
    Ist eigentlich eine Vereinfachung, denn hier wird davon ausgegangen, dass das Magnetometer parallel zum Boden ausgerichtet ist (d.h. die Z-Achse senkrecht zur Erdoberfläche steht).

    Mit Hilfe eines Acceleromters kannst du die Beschleunigung auf 3 Achsen messen, mit Hilfe dieser Werte kannst du dir deinen Winkel um alle drei Achsen ausrechnen, d.h. du kennst Pitch (X-Winkel), Yaw (Z-Winkel) und Roll (Y-Winkel) (alles im Bezug auf die Erdoberfläche).
    Wenn du jetzt Pitch und Roll kennst, dann kannst du die Messung des Magnetometers für Neigung kompensieren (Pseudocode):
    Code:
    pitch = asin(ACC_X);
    roll = asin(ACC_Y);
    
    x = MAG_X * cos(pitch) + MAG_Z * sin(pitch);
    y = MAG_X * sin(roll) * sin(pitch) + MAG_Y * cos(roll) - MAG_Z * sin(roll) * cos(pitch);
    
    ang = atan2(y, x);
    Alles nachzulesen auf https://www.loveelectronics.co.uk/Tu...duino-tutorial
    MfG Torrentula

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. 3D kompass. Rechnung
    Von Spacecam im Forum Sensoren / Sensorik
    Antworten: 0
    Letzter Beitrag: 12.08.2013, 18:20
  2. Hexaservos + Rechnung
    Von Andi_K im Forum Motoren
    Antworten: 9
    Letzter Beitrag: 26.03.2013, 09:37
  3. Rechnung in Boolschem Ausdruck
    Von Static im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 25.09.2005, 20:02
  4. % Rechnung
    Von Marco78 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 19.03.2005, 13:17
  5. einfache rechnung
    Von Adam im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 06.10.2004, 22:50

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •