Jump to content
I2Cdevlib Forums

Leaderboard

Popular Content

Showing content with the highest reputation on 03/05/2015 in Posts

  1. Hi friends, I'm building a quadcopter and I need sensor values. In order to get three angles -roll, pitch, yaw- I need to get DMP values. As I see, there is no STM library for mpu6050 dmp. What should I do? Is there any way to get three angles without dmp? Thank you
    1 point
  2. I have made an Arduino sketch that simplifies the task of calibrating the MPU6050's offsets. Easy steps: - Wire your MPU6050 to your Arduino. - Put the MPU6050 as horizontal as possible and leave it there, don't touch it. - Check the sketch in order to configure your MPU's I2C address (0x68 or 0x69). - Upload the sketch to your Arduino. - Open Arduino serial monitor and send any character to the Arduino. - Wait. - Write down your offsets for that particular MPU6050 and use them with library's functions "...setoffset..." in your projects. There are also a few options in the code in case you want to fine tune it. There may be bugs, or maybe it does not converge for everyone, so let me know your experience. I use it with an Arduino DUE, configured to 400KHz I2C bus speed, but I think you can use any Arduino and standard bus speed (100KHz). If people find it useful maybe Jeff can add it to the library once it is bugfree. Happy new year. UPDATE 30th January: New version 1.1 available. It fixes a bug related to variables overflowing in Arduinos other than the DUE. MPU6050_calibration_v1.1.zip
    1 point
  3. hatt0002

    roll affecting yaw?

    Hi friends, I have managed to read from two mpu6050 on DMP. Both sensors are fitted on a piece of board and are perfectly levelled. My problem is that when I tilt the sensors such that I increase/decrease Roll, the Yaw is changed, even when the sensors are not rotated on the z axis. Is it normal that rolling affects yawing? Furthermore, the change in Yaw for both sensors is not the same, and there will be a difference in yaw of 8 deg between the two sensors for a 45deg rolling. Thanks in advance, Hatt
    1 point
  4. Hi, I am currently doing a project in which I need to capture the acceleration of a pivoted rotating wooden beam. From the acceleration, I need to determine the velocity. I am using Jeff's teapot sketch with the mpu6050 and I have managed to also include the acceleration in the teapotPacket to print acceleration in processing. I know that velocity is the first integral of acceleration. Such integral can be expressed as: v = u + AT, where v is the current velocity, u is the velocity before, A is the acceleration and T is a time interval. This is my code for the velocities in the three directions with sampling time of 1ms: vX = uX + (AX)*0.001; //vX = current velocity in the X direction, uX = velocity in the previous iteration, AX = acceleration in the x direc uX = vX; //setting the current velocity as the previous velocity vY = uY + (AY)*0.001; uY = vY; vZ = uZ + (AZ)*0.001; uZ = vZ; If I move the sensor say in the x direction, acceleration in the x direction increases and when I stop the sensor, acceleration becomes negative and converges to zero, as expected. The velocity seems to be calculated and printed right when increasing from zero to a particular value. Now my problem is, that when I stop moving the sensor, velocity does not go back to zero when the sensor is stationary, but it decreases by a small amount only (say it stops decreasing at 0.5m/s. This gets worse when the sensor is moved faster. It seems like the acceleration is read more than the deceleration (decreasing acceleration) and therefore, less negative values for acceleration are captured. Can anybody help me? Thanks, Hatt
    1 point
  5. Hi everybody... I've been working on a project recently and i need to measure the roll and pitch angles of a moving platform, but the problem is that the value of these angles starts from 0 then reaches 90, then starts to decrease again to reach 0 (positive or negative 90 degrees of course) ... what i need to do is to have this value in the range of zero to 180 (positive or negative) not from zero to 90 as it is now ... do anyone have any idea??
    1 point
  6. Hello, I'm using I2Cdevlib to read out the fused DMP data from an MPU-6050 breakout board, and I'm absolutely amazed at the amount of precision I get from such a low-cost sensor! I've got one problem though: I attached the sensor to a mobile robot, which sometimes moves in large circles, i.e. the gyroscope will register the same small turn velocity over a long period of time. During these periods, after ~8 seconds the yaw reading of the sensor stabilizes at some point and I don't get rotation updates anymore. From what I gathered from other posts, I assume that the DMP tries to cancel out gyro drift by subtracting any constant gyro reading that it gets from the next readings. I guess what happens is that the DMP thinks my slowly moving robot is actually the gyroscope drifting and tries to compensate. (I can actually see the yaw moving in the opposite direction for a short while when I stop the robot mid-turn.) So my question is: Is there some way I can turn off gyro drift compensation in the DMP? I can take care of slow drifts myself by measuring the gyro drift when I'm completely sure that the robot isn't moving. It would be a pity if I couldn't use this great sensor and library because I can't disable this feature. Thanks a lot for your responses, Simon
    1 point
  7. Hello People, I have got a Problem with the MPU6050_DMP6 Code as it sometimes hangs when its running. It seems to stop randomly after some time and it makes no difference if i have the Arduino powered from USB, USB and Running Serial Monitor or from 9V Battery. I did minor changes to the code: Added Raw Values and Datalogging on a Micro SD Card with a Catalex Micro SD Adapter for Arduino and removed parts like TeaPot Demo and so one because i dont need them for my application. But i dont think this problem occus due to my changes because i think i saw this freezing also with the Basic MPU6050_DMP6 Code. I tried the Datalogging with SD-Library and SDFatLibrary but the Problem occured with both. The FIFO/DMP Rate is set to 25 Hz with 0x02, 0x16, 0x02, 0x00, 0x07 // D_0_22 inv_set_fifo_rate in the MPU6050_6Axis_MotionApps20 Library .h File because i had Fifo Overflow when runnig with 100Hz. Here is my sketch code: I added a Led on Pin 8 with indicates aktivity so i see the led stopping blinking once in a while when i run the code. If i have the serial monitor then it just stoppes writing new lines. Can somebody give me a hint why this happens and how it could be fixed? Or if somebody got a code for Datalogging Yaw Pitch and Roll Values + Raw Values Accelerometer and Gyroskop i would also appreciate very much! I also tried 2 differnet SDCards (one Class 10) and ther was no differnce... I really annoying because i want to log data and when it stops randomly and mostly after not more than 2 to 3 minutes the application is unreliable and useless.... Greets Julian
    1 point
  8. Hi, I know that there are some eamples showing how to put magnetometer data into DMP. For example this one: http://www.i2cdevlib.com/forums/topic/111-arduino-example-sketch-to-read-magnetometer-while-dmp-is-on/ but it does not make any sensor fusion. I couldn't find any library which would make magnetometer fusion inside DMP. Does such library exist? Maybe code in this file MPU6050_9Axis_MotionApps41.h make DMP+magnetometer fusion? I couldn't find any tips in the code and right now I am not able to test it. So the question is: does such library exist or the only way to do this is to make own fiters (for example complementary filter)? Maybe there is some MPU9150 library that can be used with MPU6050+magnetometer?
    1 point
  9. has anyone been able to run two adxl345s at the same time? I've setup two instances: ADXL345 accel(0x53); ADXL345 accelB(0x1D); and each runs the initialize function: accel.initialize(); accelB.initialize(); and: Serial.println(accel.testConnection() ? "ADXL345 connection successful" : "ADXL345 connection failed"); Serial.println(accelB.testConnection() ? "ADXL345B connection successful" : "ADXL345B connection failed"); When both are connected, the arduio outputs on the serial: Init and that's it. just "Init". When only one is connected, data is retrieved for the working one, but only one can work at a time. I can read data from either one, but not both at the same time. One is wired with SDO high, to allow it to run on 0x1D, the other is wired to SDO low and runs on 0x53. wiring: Both are given grd, 3.3v, Both SCL's are connected in parallel to A5, SDA to A4. Does the wiring need to be different? Can you run both at the same time?
    1 point
×
×
  • Create New...