ich habe vier MPU-6050-Sensoren und möchte diese über einen I2C-Bus mit dem Arduino Mega 2560 verbinden. Gibt es eine Möglichkeit dies umzusetzen? Oder kann man einen seperaten I2C-Bus eröffnen und somit je zwei Sensoren über einen Bus auslesen?
Hallo,
wenn Du die Adressen des Sensor ändern kannst, dann spricht doch nichts dagegen sie an einem I2C zu betreiben.
Ich glaube, einen zweiten kann man per Software emulieren, aber was soll das? Das bringt doch nur Ärger und
Aufwand mit sich.
Gruß und Spaß
Andreas
MH40:
ich habe vier MPU-6050-Sensoren und möchte diese über einen I2C-Bus mit dem Arduino Mega 2560 verbinden. Gibt es eine Möglichkeit dies umzusetzen? Oder kann man einen seperaten I2C-Bus eröffnen und somit je zwei Sensoren über einen Bus auslesen?
Der MPU-6050 Sensor bietet die Möglichkeit, ihn auf zwei verschiedene I2C-Adressen zu konfigurieren, und zwar über den AD0 Pin des Sensors. Wenn dieser auf GND liegt, ist die Adresse 0x68, und wenn dieser Pin auf der Betriebsspannung von 3.3V liegt, ist die Adresse 0x69.
Wenn Du den Sensor selbst auf eine Platine lötest, ist es Sache Deiner Schaltung, welche der beiden Adressen er bekommt. Wenn Du den Sensor fertig montiert auf einer Platine kaufst, ist es Sache des Herstellers, wie er das auf der Platine zusammengelötet hat. Mit einem I2C-Scanner kannst Du dann herausfinden, ob Dein MPU-6050 mit Beschaltung für Adresse 0x68 oder mit 0x69 auf die Platine gelötet wurde.
Ggf. hat die Platine auch eine Konfigurationsmöglichkeit über Lötpads.
It depends on.
Mehr als 2 dieser Sensoren kannst Du an einem Arduino nur gleichzeitig betreiben, wenn Du die zusätzlichen Sensoren an einem eigenen I2C-Bus betreibst. Da die Atmegas nur einen Hardware-I2C Bus haben, müßtest Du Software-I2C nutzen.
Nur als Hinweis: Der Teensy 3.1 hat hardwareseitig 2 I2C-Schnittstellen. In Verbindung mit der Teensyduino-Erweiterung für die Arduino-IDE ist das eventuell eine Option für dich, damit könnte man alle 4 MPU-6050 ansprechen. Habe ich aber selbst noch nicht getestet.
Hallo,
da mußt Du Deiner technischen Fantasie mal freien Lauf lassen.
Nicht so verklemmt: ]
Quadrocopter- mit 4 Motoren, die sich unabhängig voneinander in jede
beliebige Richtung drehen lassen.
Vielleicht gibt es auch einen Bausatz "Mini-ISS" die stellt er dann in
5m Höhe über den Erdboden auf- und die Erde dreht sich unter ihr weiter.
Entdecke die Möglichkeiten!
Gruß und Spaß
Andreas
Nen Quad kann nur ein solches Ding brauchen.
Genauso wie jede andere Anwendung, die mir da so einfiele.... und ich dacht immer, ich hab recht verrückte Ideen.
jurs:
Mehr als 2 dieser Sensoren kannst Du an einem Arduino nur gleichzeitig betreiben, wenn Du die zusätzlichen Sensoren an einem eigenen I2C-Bus betreibst. Da die Atmegas nur einen Hardware-I2C Bus haben, müßtest Du Software-I2C nutzen.
Oder aber, und das ist jetzt erst mal nur eine Idee, die 4 Sensoren in 2 Bänke zu je zwei Sensoren aufteilen. Alle erhalten SCL. SDA wird z.B. über einen CD4066 an entweder die eine oder andere Bank geschaltet. Die beiden Schalter bräuchten 2 zusätzliche Pins. Wenn man einen Schalter direkt und den anderen über einen Inverter ansteuern würde, bräuchte man sogar nur einen Pin.
Wäre halt nur zu klären ob man lieber Prozessorleistung für einen Software-I2C hergeben will, oder aber eher bereit ist ein wenig Hardware-Aufwand zu treiben.
Das ganze ist im Rahmen einer Abschlussarbeit. Mit Hilfe der vier Sensoren sollen vier Ecken einer gleichmäßig sinunsförmig oszillierenden Platte überwacht werden. Diese exzentergelagerte Platte darf nur 1/10 mm auf 2 m Abweichung bezüglich der Schwingungsamplitude haben. Ich will also die vier Beschleunigungsamplituden miteinander vergleichen und so erfassen, ob die Platte noch die vorgeschriebene gleichmäßige Schwingung ausübt oder ob ggf. Lager ausgeschlagen sind und die Platte z. B. wellenförmig schwingt.
Leider kommt kein anderes Messverfahren aufgrund der Anforderungen infrage.
Mal ketzterisch gefragt (ich weiss es wirklich nicht, schiesst mir nur grade durchs Hirn): was passiert, wenn man die Dinger kurzerhand abschaltet?
Also: nich nur SDA und SCL an den Dino, sondern ebenfalls VCC jeweils an nen Digitalpin. Dann kann man doch wahlweise die Dinger zu-oder eben abschalten, oder?
Braucht ja lediglich zwei Digitalpins, weil man immer ein Pärchen zusammen anschliessen kann. Vom Stromverbrauch her sollten die Pins das verkraften (ggf. kann man ja auch nen Transistor zwischen klemmen).
Hallo,
das wird schon möglich sein, nur kann man dann nicht mehr gleichzeitig messen.
Wenn seine SinusWelle obenRechts Gas gibt, dann will er ja wissen wann sie untenLinks ankommt-
und, ob untenRechts da gleiche ankommt.
Gruß und Spaß
Andreas
Wirklich simultan gehts auch über den I2C-Bus nicht.
Man muss halt schnell genug wechseln.
Klar: das gibt ein Problem, aber wenn ich nur einen Bus habe, kann ich einfach nicht zwei Geräte mit der selben Adresse gleichzeitig betreiben- das wird nunmal nix.
Und da die Dinger offenbar nur zwei mögliche Adressen haben, bleiben nicht viele Möglichkeiten.
Man könnte zwei Sensoren jeweils einen Controller spendieren (z.B. Arduino Nano, Pro Mini oder einen nackten Atmega) und diese dann untereinander oder mit einem dritten Controller verbinden.
Oder zwei Sensoren an den Mega 2560 und für die anderen zwei einen Nano/Mini
Wenn ich nun aber zwei Sensoren pro Board (dann zwei Boards) habe, kann ich nicht 100 %ig garantieren, dass die Messwerte zur selben Zeit aufgenommen wurden. Und den Sensor kann ich frei wählen. Da er von den Anforderungen (max. +-2g bei mind. 16 bit-Auflösung um die 1,6 Hz Oszillation mit einer Amplitude von 2 mm aufzulösen) und ja quasi von Arduino empfohlen wird.
Schachmann:
Oder aber, und das ist jetzt erst mal nur eine Idee, die 4 Sensoren in 2 Bänke zu je zwei Sensoren aufteilen. Alle erhalten SCL. SDA wird z.B. über einen CD4066 an entweder die eine oder andere Bank geschaltet. Die beiden Schalter bräuchten 2 zusätzliche Pins. Wenn man einen Schalter direkt und den anderen über einen Inverter ansteuern würde, bräuchte man sogar nur einen Pin.
Wäre halt nur zu klären ob man lieber Prozessorleistung für einen Software-I2C hergeben will, oder aber eher bereit ist ein wenig Hardware-Aufwand zu treiben.
Dann würde man aber nicht die vier Sensoren gleichzeitig abfragen können. Aber an sich als Notlösung eine gute Idee.
Serenifly:
Die Sensoren wortwörtlich gleichzeitig abfragen geht nie. Kurz hintereinander ja, aber einen kleinen Zeitversatz hast du immer.
Ja, das stimmt. Bei den theoretischen 400 kbit/sec des I2C-Busses kann ich (mit millis() gestoppt) alle 2 ms einen Wert im SRAM speichern. Bei 1,6 Schwingungen der zu erfassenden Platte pro Sekunde bin ich also auch bei vier Sensoren noch schnell genug, um das jeweilige Beschleunigungsmaximum erfassen zu können.