- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 13

Thema: Richtungsänderung mit MP6050

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2018
    Beiträge
    6
    Ich habe mal versucht den ersten Teil der Formel umzusetzen.
    Hier mal mein bisheriger code. Allerdings ändert sich der WInkel selbst im Ruhezustand stark, da der Winkkel-Offset nicht immer 0 ist
    Ich nutze folgende Bibliothek um die Sensorwerte abzufragen https://github.com/Tijndagamer/mpu60...050/mpu6050.py

    Code:
    #!/usr/bin/python
    import time
    from mpu6050 import mpu6050
     
    mpu = mpu6050(0x68)
    gyro_data = mpu.get_gyro_data()
    
    angle = 0
    dt = 0
    offset = gyro_data['z']
    
    while 1:
    		
    	gyro_data = mpu.get_gyro_data()	
    	gyroZ = gyro_data['z']
    	angle = angle + (gyroZ-offset)*dt
    	print gyroZ
    
     	dt += 0.01
    	time.sleep(0.01)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    384
    Sie sind auf den guten Weg, aber siehe ich 2 Fehler :
    1. In welche Einheit wird ausgelesen ? 16 bit, oder schon in °/sekunde, oder rad/sekunde.... Abhangig von setup von MPU, kan es sein das 16 bit 250°/sek darstellen, oder 500° oder.. Sag mal, nach umrechnen in einer float bekommen wir das dan in °/s.
    2. Ihre dt bleibt immer 0.01, da wird nicht summiert !! Zeitinterval ist doch immer gleich !
    3. Versuch auch noch mit timer zu arbeiten, time.sleep ist blockierend.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2018
    Beiträge
    6
    Danke

    1. Es sind °/sekunde
    2. Da lag der Fehler, vielen dank. jetzt bekomme ich einigermaßen einen brauchbaren Winkel
    3. Das werde eich mir einmal anschauen wie man damit arbeitet.

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2018
    Beiträge
    6
    Habe noch ein kleines Problem

    Mein Winkel ist um ca. 45° falsch.
    Mache ich eine Drehung von 90° zeigt er erst 45° an.
    Woran könnte dies noch liegen?

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    384
    In ihre Ablauf verwendet du "sleep(0.01). Das bedeutet aber nicht das auch jeden 0.01 s eine komplette durchlauf gemacht ist ! Das auslesen mit I2C, und die berechnungen kosten auch einiges. Wahrscheinlich ist eine Durchlauf dan auch langer dan 0.01 s !! Damit schon die Hinweis um ein Timer zu verwenden.
    Für das heutige Program konnen sie das leicht kalibrieren : einfach die Berechnung machen mit 0.02 s : Angle=Angle + (gyro-offset)*0.02 !
    Besser ist die Timer variante :
    If (timer>10) {timer=0;
    mach auslesen + berechnung;}
    timer muss dan jeden ms erhoht werden in eine separate thread. Python hat sicher so etwas. Forteil ist naturlich das ihre Program weiter lauft, zweitens das diese 10ms exact wird.

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 05.11.2007, 00:17
  2. Rs232 Richtungsänderung beim RN-MotorControl
    Von visualman im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 1
    Letzter Beitrag: 14.03.2007, 08:36

Berechtigungen

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

12V Akku bauen