Stap 4: I2C versnellingsmeter-gyroscoop setup
TL; DR:
1. SLUIT NIET AAN 5V.
2. don't freak out.
3. deze bibliotheek gebruiken: https://github.com/jrowberg/i2cdevlib
4. geen soldeer je board in totdat u een kalibratie hebt uitgevoerd.
We gebruikten een MPU6050 van SparkFun, https://www.sparkfun.com/products/11028. Deze kunnen worden gevonden op Amazon voor slechts $10, en ik heb het op goed woord dat ze prima werken, maar de bedrading zullen een beetje afwijken van de foto's. Deze stap zal dienen als een generieke achtergrond en de handleiding voor het instellen en gebruiken van een I2C versnellingsmeter, aangezien de meeste van deze informatie is verspreid over een dozijn draden van de besprekingsgroep.
Wat is de I2C?
Je hebt misschien gezien eenvoudige planken zoals https://www.sparkfun.com/products/9269 met afzonderlijke analoge uitgangen voor X, Y en Z. Die zinvol; Iedere uitgang correlaten met een as van de versnellingsmeter. U ziet een I2C boord en freak out een beetje binnenkant. I2C is een communicatiestandaard waar het bestuur communiceert veel informatie met behulp van digitale logica pulsen in plaats van analoge uitgangen. De MPU6050 heeft 6-axises (3-gyro, 3-versnellingsmeter) dus als ze analoge waren ze alle poorten op uw Arduino zou uitputten. De bottom line is de Arduino een digitale controle-signaal naar de Raad van bestuur, en leest in informatie digitaal uit de input pinnen.
Bedrading:
De bedrading voor onze specifieke MPU6050 is als volgt. Opmerking de code bibliotheek wordt ervan uitgegaan dat deze de ingangen gebruikt. Andere platen lijken.
VDD -> 3,3 v
GND -> grond
INT -> digitale 2
SCL -> A5
SDA -> A4
VIO -> grond
Lopende 5v via de board kan en zal breken, dus niet. Sommige MPU6050 boards hebben spanningsstabilisatoren die moeten beschermen, maar het is niet het risico waard. Als je board een AD0 pin heeft, moet het worden aangesloten op de grond. Op ons board die de VIO-poort is aangesloten op een interne AD0, dus het dient als de AD0 pin. Of de AD0/VIO is verbonden met grond of VDD eigenlijk bepaalt het geheugenadres dat de Raad van bestuur interfaces met de Arduino (0x68 of 0x69). Als dit is verwarrend, niet kopzorg dienaangaande, enkel draad het tot de grond. Hebt u problemen probeer VIO/AD0 van grond VDD.
Code:
Nu krijgen de dingen een beetje lastig. Hopelijk heb je een beetje codering / knoeien met software ervaring. Als u dat niet doet, gewoon gaan langzaam en google om het even wat je niet weet. Er is een heleboel informatie die er. Ik zal proberen om zo duidelijk mogelijk, maar ik kan niet alle problemen bestrijken
Als u eenmaal uw MPU aangesloten op de Arduino, zet hem op en upload deze I2C scanner code: http://playground.arduino.cc/Main/I2cScanner#.Uxh...
Schuif naar de onderkant en de code kopiëren en plakken in een lege schets en draaien. Open de seriële monitor (Tools -> seriële Monitor) en controleer of dat u bent op poort 9600 (linksonder). Dat is in de code, maar niet u het voorlezen.
Als alles werkt moet het vinden van een I2C-apparaat en geven u een geheugenadres van 0x68 of 0x69. Schrijf het op. Als je de bedrading fouten controleren.
Nu zul je wilt installeren code die eigenlijk tegen de accelerometer/gyroscoop praat. Er is een heleboel dingen die er maar degene die ik heb ontdekt welke werkt het beste is https://github.com/jrowberg/i2cdevlib. Klik op "Download Zip," Onthoud waar u maar het (waarschijnlijk desktop) en vervolgens unzip het. Open het programma van de Arduino IDE. Nu ga naar de schets -> bibliotheek importeren -> bibliotheek toevoegen. U moet zowel de I2Cdev en de MPU6050 mappen toevoegen als bibliotheken (ze zijn onder de Arduino in de map).
Zodra deze zijn geïnstalleerd moet u de MPU6050_DMP6 (het heeft onder MPU6050 -> voorbeelden) openstellen bestand in de Arduino. Ik stel voor het lezen over (zelfs als u veel code niet weet), het is goed heeft gereageerd en heeft een aantal opties voor hoe het output van de lezingen van de Raad van bestuur. Als u op 0x69 van de scanner hebt gekregen, moet u voor ongemeen naar één lijn bij de bovenkant van de code (net na de #includes; de opmerkingen lezen dom) Aangezien de standaardwaarde 0x68 is. Het programma moet nu compileren.
Uploaden van de code, de seriële poort (115200 ditmaal) te openen en volg de instructies. Gefeliciteerd, moet u krijgen werken lezingen van de Raad van bestuur. Als het lijkt te drijven op het eerste, maak je geen zorgen het moet ongeveer 10sec van wordt nog steeds om tot rust te komen. Ook zal de yaw output drift (een beetje), aangezien er geen referentiekader. De Raad van bestuur maakt gebruik van de versnellingsmeter om zwaartekracht en vinden "down" welke daad als een referentie voor pitch en roll. Sommige liefhebber boards bevatten een kompas voor referentie.
Nu voordat u op verplaatst, zult u wilt kalibreren van je board. Vinden van een vlak oppervlak en zorg ervoor dat je board is vlak met het label naar boven.
Vervolgens moet u deze handige-dandy kalibratie code beschikbaar aan de bovenkant, dankzij Luis Ródenas uitvoeren. Opnieuw de standaard het 0x68, maar u kunt dat veranderen. Zorg ervoor dat u Noteer de verschuivingswaarden dat het geeft je. U kunt en deze als de verschuivingen in de MPU6050_DMP6-code moet gebruiken (en later onze quadcopter code).
U hebt nu een werkende en nuttige accelerometer/gyroscoop. Nu stel ik u enige tijd knoeien met de code MPU6050_DMP6 en proberen de verschillende output typen.