Beschleunigungssensor MPU6050
Verfasst: Dienstag 25. Februar 2020, 08:53
Ich habe eine Frage zu folgendem Code. Er funktioniert aber ich bekomme in Z-skaliert immer 1,2 G dabei müsste es doch 1,00001 G in Ruhelage sein.
Muss ich die Konfiguration des Sensors ändern?
Muss ich die Konfiguration des Sensors ändern?
Code: Alles auswählen
#!/usr/bin/python
import smbus
import math
try:
from tkinter import *
import tkinter as tk
except ImportError:
from Tkinter import *
import Tkinter as tk
fenster = Tk()
fenster.title("Beschleunigungssensor")
fenster.geometry("400x200")
running = True
save = open('Daten.txt','a')
def stop():
global running
running = False
def reset():
global running
running = True
lab4.config(text="-")
lab5.config(text="-")
lab6.config(text="-")
lab7.config(text="-")
def Auslesen():
#Register
if running:
power_mgmt_1 = 0x6b
power_mgmt_2 = 0x6c
def read_byte(reg):
return bus.read_byte_data(address, reg)
def read_word(reg):
h = bus.read_byte_data(address, reg)
l = bus.read_byte_data(address, reg+1)
value = (h << 8) + l
return value
def read_word_2c(reg):
val = read_word(reg)
if (val >= 0x8000):
return -((65535 - val) + 1)
else:
return val
def dist(a,b):
return math.sqrt((a*a)+(b*b))
def get_y_rotation(x,y,z):
radians = math.atan2(x, dist(y,z))
return -math.degrees(radians)
def get_x_rotation(x,y,z):
radians = math.atan2(y, dist(x,z))
return math.degrees(radians)
bus = smbus.SMBus(1) # bus = smbus.SMBus(0) fuer Revision 1
address = 0x68 # via i2cdetect
#Aktivieren, um das Modul ansprechen zu koennen
bus.write_byte_data(address, power_mgmt_1, 0)
print ("Gyroskop")
print ("--------")
gyroskop_xout = read_word_2c(0x43)
gyroskop_yout = read_word_2c(0x45)
gyroskop_zout = read_word_2c(0x47)
print ("gyroskop_xout: "), (("%5d") % gyroskop_xout), (" skaliert: "), (gyroskop_xout / 131)
print ("gyroskop_yout: "), (("%5d") % gyroskop_yout), (" skaliert: "), (gyroskop_yout / 131)
print ("gyroskop_zout: "), (("%5d") % gyroskop_zout), (" skaliert: "), (gyroskop_zout / 131)
print
print ("Beschleunigungssensor")
print ("---------------------")
beschleunigung_xout = read_word_2c(0x3b)
beschleunigung_yout = read_word_2c(0x3d)
beschleunigung_zout = read_word_2c(0x3f)
beschleunigung_xout_skaliert = abs(beschleunigung_xout) / 16384.0
beschleunigung_yout_skaliert = abs(beschleunigung_yout) / 16384.0
beschleunigung_zout_skaliert = abs(beschleunigung_zout) / 16384.0
print ("beschleunigung_xout: "), (("%6d") % beschleunigung_xout), (" skaliert: "), beschleunigung_xout_skaliert
print ("beschleunigung_yout: "), (("%6d") % beschleunigung_yout), (" skaliert: "), beschleunigung_yout_skaliert
print ("beschleunigung_zout: "), (("%6d") % beschleunigung_zout), (" skaliert: "), beschleunigung_zout_skaliert
print ("X Rotation: ") , get_x_rotation(beschleunigung_xout_skaliert, beschleunigung_yout_skaliert, beschleunigung_zout_skaliert)
print ("Y Rotation: ") , get_y_rotation(beschleunigung_xout_skaliert, beschleunigung_yout_skaliert, beschleunigung_zout_skaliert)
lab4.config(text=str(beschleunigung_xout_skaliert))
lab5.config(text=str(beschleunigung_yout_skaliert))
lab6.config(text=str(beschleunigung_zout_skaliert))
ausschlag =float(abs(beschleunigung_xout_skaliert))+(abs(beschleunigung_yout_skaliert))+(abs(beschleunigung_zout_skaliert-1.2))
lab7.config(text=ausschlag)
save.write('\n')
save.write(str(ausschlag))
knopf1.after(100, Auslesen)
lab1=tk.Label(master=fenster, text="Beschleunigung X:")
lab1.grid(row=0, column=0, padx=25)
lab2=tk.Label(master=fenster, text="Beschleunigung Y:")
lab2.grid(row=1, column=0)
lab3=tk.Label(master=fenster, text="Beschleunigung Z:")
lab3.grid(row=2, column=0)
lab4=tk.Label(master=fenster, text="-")
lab4.grid(row=0, column=1)
lab5=tk.Label(master=fenster, text="-")
lab5.grid(row=1, column=1)
lab6=tk.Label(master=fenster, text="-")
lab6.grid(row=2, column=1)
lab7=tk.Label(master=fenster, text="-")
lab7.grid(row=3, column=1)
lab8=tk.Label(master=fenster, text="Ausschlag:")
lab8.grid(row=3, column=0)
knopf1 = Button(fenster, text="Start", command=Auslesen)
knopf1.grid(row=4, column=0)
knopf2 = Button(fenster, text="Stop!", command=stop)
knopf2.grid(row=5, column=0)
knopf3 = Button(fenster, text="Reset", command=reset)
knopf3.grid(row=6, column=0)
knopf3 = Button(fenster, text="Schließen", command=fenster.destroy)
knopf3.grid(row=6, column=1)
mainloop()