本帖最后由 xyc2690 于 2015-1-29 17:09 编辑 & U" h; X3 F) j; |0 V# V3 Q " I% h* h' Y0 t+ P. V 功能:DMP读取MPU6050四元数,转换成欧拉角。9 ]0 u! C2 Z, l 引脚:! G: _! E6 t# c3 G; q & y# p: ~. o( ]. o1 m MPU6050: SCL-->PB8 SDA-->PB9 ADO-->GND USART1: Tx PA9 官方提供的DMP移植到Nucleo F072RB5 o9 k6 g" S" F# O# u8 d3 H 9 `' z3 ]$ f% q/ M 欧拉角:Roll Pitch Yaw2 I' i1 O; k x0 p4 y 1 r* G7 h q, n1 ?+ M7 F$ k! W4 [ 2s左右初始化建立时间。- Z( y; Y7 R# M0 U Roll和Pitch比较稳定。静止时数据没有漂移。3 B6 P/ ~1 q' m5 u $ n- ]( x. T4 _; d5 U2 h1 D! h Yaw会漂移,MPU6050,6轴无法校正。需要用磁力传感器。 之前直接去读原始数据,读出三轴加速度和三轴角加速度,但是数据融合一直不好,要做平衡车的话用到俯仰角和一轴角加速度就行了,后来才发现用DMP处理好的数据更方便。网上有许多移植到STM32F103的,但是手头没有103的板子,加上准备学习用新的HAL库,于是折腾了2天移植到活动送的NucleoF072上,IIC比较关键,认真的做好时序之后会很省心。最后读出的四元数是Q30的,要除一下。 IIC驱动那边需要注意一下,6050官方库里的函数返回值,成功返回0,异常返回-1,-2 等。 一般写1表示成功,0表示失败。大家移植的时候注意一下。 存在FIFO溢出的问题,具体在dmp_read_fifo()函数里的mpu_read_fifo_stream()的最后+ U9 f2 r5 t1 g0 G$ ~
暂时把它注释掉了,有人知道如何解决吗?( P% e# ]$ u/ D2 p: X6 D 参加活动有NucleoF072rb的板子并且有MPU6050的朋友可以试一下 程序:" G2 a. e' Z* V" U! ~ c7 z9 j |
白皮书下载|边缘 AI 变革:MCU集成 NPU 的破局与领航
OpenSTLinux:为STM32 MPU生态系统带来超强助力
分享STM32F051中文参考手册(重制书签版)
【STM32MP257】轻松搭建A35 Linux编译及调试环境
【STM32MP257】🥳STM32MP257-DK-开发板开箱体验
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【STM32MPU 安全启动】 TF-A BL2 TrustedBoot原理学习
《STM32MPU安全启动》学**结
《STM32MPU安全启动》学习心得
《STM32MPU安全启动》学习笔记+STM32MP系列mpu安全启动解析
也是用的减速电机,, }6 `; Y6 K& H& k
电机的话看参数:电流/扭矩常数、电压/转速常数; f6 b! M! \6 N; ?! A
选力矩大一些的电机就行了。
好的,多谢,回头做了还需要楼主多多指点!
电机好好选哈~
多谢版主的开发板
可是我手里只有那种TT电机,楼主选的是什么电机?
好诡异的关注点哈哈