Ik ben bezig om een MPU6050 (GY-521) aan te sluiten op een nano, maar blijf de melding MPU6050 connection failed krijgen als ik de MPU6050_DMP6 demo probeer te installeren.
Met een i2c scanner zie ik dat de MPU op het juiste adres zit (0x68) en als ik een simpel project doe met alleen het ophalen en printen van ruwe data, dan werkt de sensor wel.
Het is mogelijk dat een I2C Scanner het wel ziet op 100 kHz, maar de library op 400 kHz verkeerd gaat. Helaas rammelt je I2C bus toch al, dus is dat goed mogelijk.
De i2cdevlib is achterhaald, oud en verkeerd. Fouten worden niet meer opgelost. Om de fouten te verhullen is er een "FastWire" toegevoegd, maar zo iets bestaat helemaal niet, en daarmee is de library veel minder compatible geworden.
Met wat geluk kan de i2cdevlib werken.
Heb je het voorbeeld "MPU6050_raw.ino" geprobeerd, zonder de 'dmp' ? Dat is zonder de interrupt.
Die module heeft een voltage regulator om 3.3V te maken voor de sensor. Maar er zitten geen I2C level shifters op. Je Arduino Nano draait op 5V en 16MHz neem ik aan. Dan heb je een 5V I2C bus verbonden met een 3.3V I2C bus. Dat maakt het signaal onbetrouwbaar. Je kunt dat oplossen door een I2C level shifter te kopen.
Je kunt de VCC van de module met de 5V pin van de Arduino verbinden. Dan worden de signalen 0.1V beter.
Conclusie: Probeer eventuele fouten op te lossen en je hebt geluk nodig.
Je kunt ook modules kopen die geschikt zijn voor 5V en 3.3V Arduino boards. Je kunt ook een Arduino board kopen dat op 3.3V draait, zoals een MKR board of ander board met de ARM M0+ processor. Dan kun je gewoon 3.3V sensoren er mee verbinden zonder vervelend gedoe met verkeerde voltage levels op de bus. De MPU-6050 is zelf ook al oud, de nieuwere sensoren hebben een magnetometer ingebouwd en hebben minder ruis.
Belangrijker dan nieuwe sensoren is dat er is nagedacht over de modules en dat er tutorials bij zitten en dat er vragen over gesteld kunnen worden bij de maker van die modules en dat er commentaar op de libraries gegeven kan worden.
De BNO055 heeft een processor in de sensor chip. Die kan al de berekeningen doen.
Dit is een normale 9-DOF sensor:
De opvolger van de MPU-6050 is bijvoorbeeld de MPU-9250: MPU-9250 | TDK.
Maar de fabrikant adviseert om hun nieuw chip te gebruiken: ICM-20948 | TDK
Stel dat je een MPU-9250 zou kopen op AliExpress, dan heb je meteen een probleem op de I2C bus als je geen level shifters gebruikt.
Stel dat je die ene module vindt die wel level shifters op de module heeft (https://www.aliexpress.com/item/33045990156.html) dan heb je meteen een probleem omdat de pullup weerstanden geen 10k maar 2k2 zijn. Gecombineerd is dat een sink current van 3.78 mA, terwijl die hoogstens 3 mA mag zijn. Dan werkt de I2C bus niet meer binnen de specificaties.
Je krijgt dus net zoveel problemen als waar je zelf voor kiest.