Forum: Mikrocontroller und Digitale Elektronik MPU-6050 mit raspberrypi verwenden


von Paul (Gast)


Lesenswert?

Hallo,

im Rahmen eines Komplexpraktikums wollen wir den Sensor MPU-6050 über 
einen Pi auslesen. Um genau zu sein, ist es ein gy-521 das nach 
folgender Anleitung an den rpi angeschlossen wurde:

http://blog.bitify.co.uk/2013/11/interfacing-raspberry-pi-and-mpu-6050.html

Mit i2cdetect wird der Sensor korrekt mit der Adresse 0x68 erkannt. Ein 
Auslesen mit
1
pi@raspberrypi ~ $ sudo i2cget -y 1 0x68 0x75
2
Error: Read failed

bringt jedoch keine Ergebnisse. Auf anderen Seiten wurde beschrieben, 
man muss den Sensor erst aus dem initialen Sleep-Mode wecken:
1
pi@raspberrypi ~ $ sudo i2cset -y 1 0x68 0x6b 0
2
Error: Write failed

"Write failed" tritt bei fast jeder Adresse auf. Gelegentlich lässt sich 
die Adresse 0x6c (2. Power-management-register) beschreiben, aber ohne 
weitere Erfolge:
1
pi@raspberrypi ~ $ sudo i2cdump -y 1 0x68
2
No size specified (using byte-data access)
3
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
4
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
5
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
6
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
7
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
8
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
9
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
10
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
11
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
12
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
13
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
14
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
15
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
16
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
17
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
18
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
19
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
20
pi@raspberrypi ~ $ sudo i2cset -y 1 0x68 0x6b 0
21
Error: Write failed
22
pi@raspberrypi ~ $ sudo i2cset -y 1 0x68 0x6c 0
23
pi@raspberrypi ~ $ sudo i2cdump -y 1 0x68
24
No size specified (using byte-data access)
25
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
26
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
27
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
28
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
29
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
30
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
31
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
32
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
33
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
34
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
35
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
36
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
37
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
38
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
39
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
40
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
41
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX

Momentan sind wir mit unserem Latein am Ende. Wisst ihr vielleicht, wie 
man den Sensor auslesen kann?

von Tigerente (Gast)


Lesenswert?

Auf der von dir verlinkten Seite steht doch schon alles. Klick einfach 
auf next (links unten im Text) und die bekommst ein Python-Skript zu 
sehen, welches die Werte ausliest.

von Paul (Gast)


Lesenswert?

Grade mal getestet:
1
pi@raspberrypi ~ $ sudo python sensor.py 
2
Traceback (most recent call last):
3
  File "sensor.py", line 42, in <module>
4
    bus.write_byte_data(address, power_mgmt_1, 0)
5
IOError: [Errno 5] Input/output error

von Tigerente (Gast)


Lesenswert?

Das SMBUS-Modul hast du schon installiert? Wenn ja, rufe einmal das 
Skript mit sudo auf. Vielleicht ist es ja ein Rechteproblem.

von Paul (Gast)


Lesenswert?

Tigerente schrieb:
> Das SMBUS-Modul hast du schon installiert? Wenn ja, rufe einmal das
> Skript mit sudo auf. Vielleicht ist es ja ein Rechteproblem.

Hatte ich schon alles gemacht.

von Pete K. (pete77)


Lesenswert?

Löte mal die Pullups vom Modul, die hat der Raspi schon auf der Platine.

Vielleicht hilft auch das:
sudo adduser user-name i2c

: Bearbeitet durch User
von Paul (Gast)


Lesenswert?

Pete K. schrieb:
> Löte mal die Pullups vom Modul, die hat der Raspi schon auf der Platine.
>
> Vielleicht hilft auch das:
> sudo adduser user-name i2c

Hat leider beides nicht geholfen. Es befinden sich noch jeweils ein 
Widerstand in der SDA/SDL Leitung, sind die korrekt? Auf beiden steht 
102.

von Paul (Gast)


Lesenswert?

Wir haben das Problem mit einem Oszi und ein wenig I²C-Bus sniffen lösen 
können: Das Bussignal konnte man wunderbar sehen, jedoch gab es nach 
8bit ein Signal mit nur einer halb so hohen Amplitude wie die restlichen 
Signale. Genau bei diesem bit, sollte aber der Sensor antworten. Ergo 
lag die Vermutung nahe, dass der Widerstand, der in der Datenleitung auf 
dem Breakout-board eingelötet war, der Verursacher des Problems war. Die 
Überbrückung dieses Widerstandes war dann die Lösung :-)

von Pete K. (pete77)


Lesenswert?

Wie gesagt, der Raspi hat die Pullups schon an Bord. Alle weiteren 
Pullups von externen Modulen stören da nur.

Hast Du ein ADUM1250 oder anderen I2C Pegelwandler herumliegen? Dann den 
mal dazwischenschalten.

Aber wenn der Baustein mit i2cdump auf 0x68 erkannt wird, sollte auch 
lesen/schreiben klappen. Hmmm.

: Bearbeitet durch User
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.