
本帖最后由 xyc2690 于 2015-1-29 17:09 编辑 5 T; [6 H* o) b2 A+ Y) u ![]() - Y% R! U% u4 w& i [/ Y5 A 功能:DMP读取MPU6050四元数,转换成欧拉角。' c3 |& e4 g) U* g3 R- _ / V3 G! G; t. M( v+ s- M 引脚: 9 }5 E% g: T# ^3 a D$ v1 j5 r: d MPU6050:" z/ ?+ o4 n+ U& a SCL-->PB8: p( H/ R" A/ p* E& O/ R1 u7 L SDA-->PB9 g. U( v* C% }7 \6 p! w( [' v. i ADO-->GND$ [9 D3 I" L. @' ~0 C0 H USART1: Tx PA9 官方提供的DMP移植到Nucleo F072RB/ V' C$ o! `7 {: Q 欧拉角:Roll Pitch Yaw$ Q4 g6 Y( l+ Y* J ! @1 d: j' T- o; P+ P! W7 q* o 2s左右初始化建立时间。" a9 O* U4 L# ~. B9 Y7 F ! B4 n: F+ ?3 m$ D8 m* k" m Roll和Pitch比较稳定。静止时数据没有漂移。% f! i5 ?3 j8 ?, Y, f7 v 9 [5 [% | k; \ q Yaw会漂移,MPU6050,6轴无法校正。需要用磁力传感器。: G/ q- b2 a5 W( O+ X% d$ K7 E' g ![]() 之前直接去读原始数据,读出三轴加速度和三轴角加速度,但是数据融合一直不好,要做平衡车的话用到俯仰角和一轴角加速度就行了,后来才发现用DMP处理好的数据更方便。网上有许多移植到STM32F103的,但是手头没有103的板子,加上准备学习用新的HAL库,于是折腾了2天移植到活动送的NucleoF072上,IIC比较关键,认真的做好时序之后会很省心。最后读出的四元数是Q30的,要除一下。" q, D- j ]7 X0 j% @8 [" X" U8 Q7 F ![]() IIC驱动那边需要注意一下,6050官方库里的函数返回值,成功返回0,异常返回-1,-2 等。 一般写1表示成功,0表示失败。大家移植的时候注意一下。. Y) X: |9 ]6 |" M3 E2 B" } 存在FIFO溢出的问题,具体在dmp_read_fifo()函数里的mpu_read_fifo_stream()的最后
暂时把它注释掉了,有人知道如何解决吗?9 Z! z! h7 d$ r # ]- h; w( q; D. @+ D5 ^ 参加活动有NucleoF072rb的板子并且有MPU6050的朋友可以试一下' K- N8 B$ i9 i9 h5 ~ V; ^" P 程序: ![]() |
也是用的减速电机,/ q1 S4 O* x6 x) T$ `
电机的话看参数:电流/扭矩常数、电压/转速常数
选力矩大一些的电机就行了。
好的,多谢,回头做了还需要楼主多多指点!
电机好好选哈~
多谢版主的开发板
可是我手里只有那种TT电机,楼主选的是什么电机?
好诡异的关注点哈哈