Then there was the MPU9150. A day of banging on it revealed this: it's an MPU6050 & AKM8975 in the same package & connected by the same I2C wires. To actually see the AKM8975 on the I2C bus, page 28 of the product spec says enable pass-through mode, but doesn't name any registers. Page 30 of the register map says INT_PIN_CFG has a I2C_BYPASS_EN bit, which sounds right, but setting I2C_BYPASS_EN didn't work.
The ES_DA & ESCL pins ended up soldered to the MCU_SCL & MCU_SDA pins before the AKM8975 appeared. It didn't help either that every datasheet & every schematic had different labels for the pins. At least the MPU9150 demo board only required VDD, GND, SCL, & SDA.
Next, the AKM8975 read out perfectly, but the accelerometer showed only 0. Enabling the highpass filter did nothing. Together with the lack of a functioning I2C_BYPASS_EN bit or any interrupt enable bits, it appeared the accelerometer wasn't turned on.
There was also some research in the DMP firmware. It apparently was a science project to get it to work. It required many calibration constants written by many I2C writes, uploading firmware over I2C, a highly restrictive license. The Invensense ARM board used to demo it required a Windows program with proprietary USB protocol, nothing that would run on a rasberry pi in the field. It was hardly the cut & dried interface found in a speech synthesizer chip.
Since the project is only a 1 off demo to be discarded, the MPU9150 was another growing cliff, it was time to throw together an IMU from previously debugged parts, mainly the dreaded HMC5843. Using the HMC5843 would prove that it was issues with the MPU9150 & not a personal problem causing every new chip to be a cliff.
Some massive capacitors, an active voltage regulator, a chip swap, & the recently debugged HMC5843 blazed to life. This process revealed the HMC5843 is very prone to breakage from unknown means & I2C on the STM32F4 requires the GPIOs to be set to the lowest possible bandwidth, 2Mhz. If it breaks, it shows only very low levels in the +/- 10 range.
If the GPIOs are at 100Mhz, I2C spits out tons of errors & glitches on the waveform. 2Mhz adds more capacitance to the pins, which might reduce the reflections from unterminated wires or electromagnetic interference. The GPIO bandwidth seems to be a termination setting. The 18F14K50 has a similar setting they call the slew rate.
The home made IMU has the full 9DOF, but will only use 6 DOF since it won't have any dynamic motion on the camera mount.
|Category||Thread||Thread Starter||Forum||Replies||Last Post|
|Sold||Quick Stick by Fancy Foam - Leadfeather $30 - $35 Shipped See notes||-S-||Aircraft - Electric - Airplanes (FS/W)||3||Apr 13, 2012 08:23 PM|
|Discussion||POST A NOTE TO Kmot||oldbilgewater||Scale Boats||162||Apr 01, 2012 06:06 PM|
|Discussion||Sample Pilots' Meeting Notes||awilmunder||Electric Competition Soaring-F5J/ALES/e-Soaring||15||Mar 17, 2012 02:01 AM|
|Contest||Deleted note...Discare Note..||guyg||Aerial Photography||1||Aug 19, 2009 12:33 PM|