|
本帖最后由 xyc2690 于 2015-1-29 17:09 编辑 ! r) P# A( b2 j3 V' I$ D- _
功能:DMP读取MPU6050四元数,转换成欧拉角。8 V+ j8 k& y& D2 l 引脚:! }( T: a3 M! Q; f/ P; y& n. Y MPU6050: SCL-->PB8, h0 X2 a0 o) N: K7 ~; Y2 e( J SDA-->PB9% m* n" n# s% K ADO-->GND8 L4 T- [" j3 X/ C3 f( X6 I7 y9 T$ b& F8 l 3 j# w# P# p- X% [ USART1: Tx PA9 官方提供的DMP移植到Nucleo F072RB; F( m' a; a3 r- T8 q* E6 V" X1 c 欧拉角:Roll Pitch Yaw- `) U: g. @# ^8 X 2s左右初始化建立时间。 Roll和Pitch比较稳定。静止时数据没有漂移。 3 d# S- I- S5 `& A+ `; f Yaw会漂移,MPU6050,6轴无法校正。需要用磁力传感器。$ A0 s" B0 H/ `
之前直接去读原始数据,读出三轴加速度和三轴角加速度,但是数据融合一直不好,要做平衡车的话用到俯仰角和一轴角加速度就行了,后来才发现用DMP处理好的数据更方便。网上有许多移植到STM32F103的,但是手头没有103的板子,加上准备学习用新的HAL库,于是折腾了2天移植到活动送的NucleoF072上,IIC比较关键,认真的做好时序之后会很省心。最后读出的四元数是Q30的,要除一下。
IIC驱动那边需要注意一下,6050官方库里的函数返回值,成功返回0,异常返回-1,-2 等。 一般写1表示成功,0表示失败。大家移植的时候注意一下。 存在FIFO溢出的问题,具体在dmp_read_fifo()函数里的mpu_read_fifo_stream()的最后
暂时把它注释掉了,有人知道如何解决吗? - n4 p9 J7 d- n0 ?8 g3 q$ b 参加活动有NucleoF072rb的板子并且有MPU6050的朋友可以试一下. V5 b: Y' s& a. o 程序:
Nocleo_soft_i2c_test1 - ç§»æ¤å¤±è´¥1失败2失败3æå4.zip
(4.07 MB, 下载次数: 2995)
|
STM32MP157双A核Linux + 自研RTOS双系统镜像免费下载
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
STM32MP1 自举程序编程:USB DFU/USART 协议全解析
小白也能明白的STM32的低功耗与唤醒机制
实战经验 | 如何配置STM32MP257的RMII Switch
STM32系统中2种数据掉电保护的方法
分享STM32F051中文参考手册(重制书签版)
AI工具训练营-用ChatGPT解决HID Keyboard实现的问题
STM32固件库分享,超全系列整理
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
微信公众号
手机版
也是用的减速电机,; l; H( w0 X- ?- R. o! |8 m
电机的话看参数:电流/扭矩常数、电压/转速常数7 U% c! b' S- d; E5 e# s* {8 M
选力矩大一些的电机就行了。
好的,多谢,回头做了还需要楼主多多指点!
电机好好选哈~
多谢版主的开发板
可是我手里只有那种TT电机,楼主选的是什么电机?
好诡异的关注点哈哈