Gebruik MPU-9250 9-DOF Gyro
49 berichten
• Pagina 5 van 5 • 1, 2, 3, 4, 5
Re: Gebruik MPU-9250 9-DOF Gyro
het ligt aan mijn sensor, dat is duidelijk...
Software engineer industriële automatisering
Advertisement
Re: Gebruik MPU-9250 9-DOF Gyro
zet er eens een delay tussen, dat de sensor even tijd heeft om te starten.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Gebruik MPU-9250 9-DOF Gyro
@MarcelWierda, stel gewone vragen altijd op het forum.
De I2C-bus zijn digitale signalen. De 222 weerstanden op het GY-91 board betekent een '2', nog een '2' met 2 nullen, dus 2200, dus 2k2. Er zitten er vier, aan beide kanten van de level shifters. De I2C is gespecificeerd voor maximaal 3mA naar GND. Dus 5/2k2 + 3.3V/2k2 = 3.7mA. Dat werkt prima maar is eigenlijk al buiten de specificaties.
De magnetometer is het compass. Dat wordt bij iedere (Kalman of kriswiner) berekening meegenomen om de Yaw te berekenen.
De I2C-bus zijn digitale signalen. De 222 weerstanden op het GY-91 board betekent een '2', nog een '2' met 2 nullen, dus 2200, dus 2k2. Er zitten er vier, aan beide kanten van de level shifters. De I2C is gespecificeerd voor maximaal 3mA naar GND. Dus 5/2k2 + 3.3V/2k2 = 3.7mA. Dat werkt prima maar is eigenlijk al buiten de specificaties.
De magnetometer is het compass. Dat wordt bij iedere (Kalman of kriswiner) berekening meegenomen om de Yaw te berekenen.
- MarcelWierda
- Berichten: 4
- Geregistreerd: 01 Feb 2017, 15:49
Re: Gebruik MPU-9250 9-DOF Gyro
De // Waterpas 2
is prachtige code Koepel, eea deed het meteen.
Ik ben nu eerst aan het uitdokteren wat de Waterpas code allemaal doet
en zal kijken of er iets te vinden/te doen is over de timing en filtering,
een walking window filter oid. Ondertussen doet het pitch en roll het prima!
is prachtige code Koepel, eea deed het meteen.
Ik ben nu eerst aan het uitdokteren wat de Waterpas code allemaal doet
en zal kijken of er iets te vinden/te doen is over de timing en filtering,
een walking window filter oid. Ondertussen doet het pitch en roll het prima!
Re: Gebruik MPU-9250 9-DOF Gyro
Er staat voldoende commentaar bij en links volgens mij. Als iets niet duidelijk is, vraag gerust hoor.
Zie je dit:
Als je dat sneller wilt, dan kun je natuurlijk ook 0.98 en 0.02 doen.
Zie je dit:
- Code: Alles selecteren
x = 0.99 * x + 0.01 * float( xi);
Als je dat sneller wilt, dan kun je natuurlijk ook 0.98 en 0.02 doen.
Re: Gebruik MPU-9250 9-DOF Gyro
Nieuwe sensor is al tijdje geleden besteld, maar nog steeds niet binnen... ![Neutral :|](./images/smilies/icon_neutral.gif)
![Neutral :|](./images/smilies/icon_neutral.gif)
Software engineer industriële automatisering
Re: Gebruik MPU-9250 9-DOF Gyro
Hallo,
Ik zat naar deze post te kijken en probeerde de code ook bij mij uit.
Mijn sensor geeft als ik hem op een waterpas leg de volgende waarde aan:
1.708, 1.230
Moet de MPU eerst gecallibreerd worden?
In mijn beleving is het toch zo dat het eerste getal 0 moet zijn voor een waterpas op de x lijn en om een buble waterpas te krijgen het tweede getal ook 0 moet zijn?
Ik hoor graag pointers.
Alvast bedankt
Frits
Ik zat naar deze post te kijken en probeerde de code ook bij mij uit.
Mijn sensor geeft als ik hem op een waterpas leg de volgende waarde aan:
1.708, 1.230
Moet de MPU eerst gecallibreerd worden?
In mijn beleving is het toch zo dat het eerste getal 0 moet zijn voor een waterpas op de x lijn en om een buble waterpas te krijgen het tweede getal ook 0 moet zijn?
Ik hoor graag pointers.
Alvast bedankt
Frits
- MarcelWierda
- Berichten: 4
- Geregistreerd: 01 Feb 2017, 15:49
Re: Gebruik MPU-9250 9-DOF Gyro
Hoi Frits,
Wat ik me zo herinner: het zijn waardes op een willekeurige schaal?, nul calibratie en schaling zul je zelf moeten doen in de code,
daar zijn vast voorbeelden van.
succes, Marcel
Wat ik me zo herinner: het zijn waardes op een willekeurige schaal?, nul calibratie en schaling zul je zelf moeten doen in de code,
daar zijn vast voorbeelden van.
succes, Marcel
Re: Gebruik MPU-9250 9-DOF Gyro
Hee,
Voor een projectje ben ik bezig met het maken van een hoekmeter. Hierbij maak ik gebruik van de MPU 9250 accelerometer. Op het moment heb ik deze aangesloten op mijn Arduino NANO en een OLED display. met de volgende sketch:
#include <Arduino.h>
#include <Adafruit_SSD1306.h>
#include "Wire.h"
#define MPU9250_ADDRESS 0x68
#define ACC_FULL_SCALE_2_G 0x00
Adafruit_SSD1306 display = Adafruit_SSD1306();
uint8_t Buf[14];
float yangle;
void I2Cread(uint8_t Address, uint8_t Register, uint8_t Nbytes, uint8_t* Data)
{
// Set register address
Wire.beginTransmission(Address);
Wire.write(Register);
Wire.endTransmission();
// Read Nbytes
Wire.requestFrom(Address, Nbytes);
uint8_t index = 0;
while (Wire.available())
Data[index++] = Wire.read();
}
void I2CwriteByte(uint8_t Address, uint8_t Register, uint8_t Data)
{
// Set register address
Wire.beginTransmission(Address);
Wire.write(Register);
Wire.write(Data);
Wire.endTransmission();
}
void setup() {
Wire.begin();
I2CwriteByte(MPU9250_ADDRESS, 29, 0x06);
I2CwriteByte(MPU9250_ADDRESS, 28, ACC_FULL_SCALE_2_G);
I2CwriteByte(MPU9250_ADDRESS, 108, 0x2F);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
}
void loop() {
I2Cread(MPU9250_ADDRESS, 0x3B, 14, Buf);
int16_t ay = -(Buf[2] << 8 | Buf[3]);
yangle = ay / 182.04;
display.clearDisplay();
display.setCursor(0, 10);
display.print(yangle);
display.display();
delay(100);
}
Echter, wanneer de accelerometer vlak op de tafel licht geeft het display standaard een hoek van ongeveer 16 graden aan. Heeft iemand enig idee wat er niet klopt aan mijn code of moet ik de meter nog op een of andere manier kalibreren?
Voor een projectje ben ik bezig met het maken van een hoekmeter. Hierbij maak ik gebruik van de MPU 9250 accelerometer. Op het moment heb ik deze aangesloten op mijn Arduino NANO en een OLED display. met de volgende sketch:
#include <Arduino.h>
#include <Adafruit_SSD1306.h>
#include "Wire.h"
#define MPU9250_ADDRESS 0x68
#define ACC_FULL_SCALE_2_G 0x00
Adafruit_SSD1306 display = Adafruit_SSD1306();
uint8_t Buf[14];
float yangle;
void I2Cread(uint8_t Address, uint8_t Register, uint8_t Nbytes, uint8_t* Data)
{
// Set register address
Wire.beginTransmission(Address);
Wire.write(Register);
Wire.endTransmission();
// Read Nbytes
Wire.requestFrom(Address, Nbytes);
uint8_t index = 0;
while (Wire.available())
Data[index++] = Wire.read();
}
void I2CwriteByte(uint8_t Address, uint8_t Register, uint8_t Data)
{
// Set register address
Wire.beginTransmission(Address);
Wire.write(Register);
Wire.write(Data);
Wire.endTransmission();
}
void setup() {
Wire.begin();
I2CwriteByte(MPU9250_ADDRESS, 29, 0x06);
I2CwriteByte(MPU9250_ADDRESS, 28, ACC_FULL_SCALE_2_G);
I2CwriteByte(MPU9250_ADDRESS, 108, 0x2F);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
}
void loop() {
I2Cread(MPU9250_ADDRESS, 0x3B, 14, Buf);
int16_t ay = -(Buf[2] << 8 | Buf[3]);
yangle = ay / 182.04;
display.clearDisplay();
display.setCursor(0, 10);
display.print(yangle);
display.display();
delay(100);
}
Echter, wanneer de accelerometer vlak op de tafel licht geeft het display standaard een hoek van ongeveer 16 graden aan. Heeft iemand enig idee wat er niet klopt aan mijn code of moet ik de meter nog op een of andere manier kalibreren?
49 berichten
• Pagina 5 van 5 • 1, 2, 3, 4, 5
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 26 gasten