准备做载人自平衡车,现在开始调试MPU6050
淘宝买的 STM32F013RBT6 + MPU-6050 + 5883 + BMP085现在通过模拟I2C 已经读出MPU6050的数据,请大家分析这个传感器怎么样
做两轮自平衡车我认为就这个传感器就够了,我试了下BMP085 数据对这个车来说没什么用,5883我买的是PCB板,现在差几个元件没焊好,没有测试
下一步准备做加速度和角速度融合,准备采用互补滤波 和我用的配置差不多,PID是最难调的,其它都不算难 年初时试过:STM32F013C8T6 + MPU-6050 ,还没弄完,比较忙。 下午去了赛格电子市场,居然没买到 STM32F103CBT6,随便买了点 贴片电阻 电容 等小东西花了近100块,现在把HMC5883L PCB全焊好了,准备晚上把HMC5883L加到MPU6050一起做9轴 看来我的焊接技术基本过关,昨天焊的BMP085也可以正常工作,今天焊的HMC5883也工作了,现在已经可以读数据了,5883的方位基本正确,有抖动,反正是做车,无所谓了
我看看怎么校准 5883的Z轴数据不起作用的吗
X=Rec_Data<<8 | Rec_Data;//Combine MSB and LSB of X Data output register
Z=Rec_Data<<8 | Rec_Data;//Combine MSB and LSB of Z Data output register
Y=Rec_Data<<8 | Rec_Data;//Combine MSB and LSB of Y Data output register
Angle= atan2((double)Y,(double)X)*(180/3.14159265)+180;//单位:角度 (0~360)
没用到Z
warning:#550-D: variable "Z" was set but never used 发现个问题,STM32 的硬件I2C有问题,I2C设备没应答就死在哪里了 用硬件I2C读不了5883 死在
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));//等待ACK
现在把6050和BMP085硬件I2C读出来了,就是BMP085数据不对,不知道是我焊坏了还是我不换换算
本帖最后由 robotkid 于 2012-9-1 23:18 编辑
哦,MPU6050硬件出来应该就没问题了吧,还没搞过电磁和气压传感 硬件I2C可以使用 但是不放心,暂时用模拟I2C。
我发现应该问题,是因为我的知识不够
我用的是MPU6050 6轴模块。但是我发现 我沿一个轴转动的话,如果加速度X轴变化的话,角速度却是Y轴在变化,请问这是什么原因?
我看了几个用ADXL345+L3G4200D做的AHRS的PCB,有的这个两个传感器是X与Y交叉安装的,但是有的PCB板却是方向轴一致的,
我现在假如只需要一个轴的加速度和一个州的角速度,是不是要用MPU6050传感器的X轴加速度和Y轴的角速度做互补滤波?
我准备用24V电源轮胎直径20CM的无刷有齿有霍尔的电动车电机,驱动准备用去年实验过的用AVR M16的电路,把M16换成STM32F103(主要是用同一种单片机方便) ,用一路PWM通过与门芯片与3个IO连接IR2103的上臂输入,另外3个IO连接到IR2103的下臂输入。如果这样的话是不是用一个STM32就可以驱动2个电机,驱动器准备用I2C或者SPI与姿态控制器通信,姿态控制器发送需要的速度量给驱动器,驱动器返回,速度、每个臂的电流、电压给控制器,这样设计有问题吗 今天看了下STM32的处理速度,从采集 MPU6050 HMC5883 10次数据求平均值然后更新四元数 ,然后计算出3个姿态角 72M时钟用时大概2.1毫秒8M时钟大概8秒,采用的是 模拟I2C 是不是用了采集10组数据求平均值就不需要MPU6050自带的高通滤波和低通滤波 现在考虑怎么做驱动器,控制器与2个电机驱动器之间准备用CAN传输数据 高手,关注 也正在做双轮自平衡,毕设 载人的还是选用ADI的陀螺仪吧!绝对又不一样的感觉! 本帖最后由 自学STM32 于 2012-9-26 21:55 编辑
这两天用STM32F103RBT6调试NRF24L01,发现个奇怪问题
把24L01初始化
void NRF24L01_Init(void)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_6);
//NRF24L01_Write_Buf(WRITE_REG + TX_ADDR, (u8*)TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址
NRF24L01_Write_Buf(WRITE_REG + RX_ADDR_P0, (u8*)RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址
NRF24L01_Write_Reg(WRITE_REG + EN_AA, 0x00); //频道0自动 ACK应答允许
NRF24L01_Write_Reg(WRITE_REG + EN_RXADDR, 0x01);//允许接收地址只有频道0,如果需要多频道可以参考Page21
NRF24L01_Write_Reg(WRITE_REG + SETUP_RETR,0x00);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:16次
NRF24L01_Write_Reg(WRITE_REG + RF_CH, 0); // 设置信道工作为2.4GHZ,收发必须一致
NRF24L01_Write_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为8字节
NRF24L01_Write_Reg(WRITE_REG + RF_SETUP, 0x07); //设置发射速率为1MHZ,发射功率为最大值0dB
//NRF24L01_Write_Reg(FLUSH_TX,0xff);
NRF24L01_Write_Buf(WRITE_REG + TX_ADDR, (u8*)TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址
}
这样的话发射机打开电源,接收机可以成功收到如果是这样的话就需要再按下发射机的复位开关才可以收到
void NRF24L01_Init(void)
{
GPIO_ResetBits(GPIOC, GPIO_Pin_6);
主要是这句,放到最后写入就不需要按复位开关NRF24L01_Write_Buf(WRITE_REG + TX_ADDR, (u8*)TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址
NRF24L01_Write_Buf(WRITE_REG + RX_ADDR_P0, (u8*)RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址
NRF24L01_Write_Reg(WRITE_REG + EN_AA, 0x00); //频道0自动 ACK应答允许
NRF24L01_Write_Reg(WRITE_REG + EN_RXADDR, 0x01);//允许接收地址只有频道0,如果需要多频道可以参考Page21
NRF24L01_Write_Reg(WRITE_REG + SETUP_RETR,0x00);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:16次
NRF24L01_Write_Reg(WRITE_REG + RF_CH, 0); // 设置信道工作为2.4GHZ,收发必须一致
NRF24L01_Write_Reg(WRITE_REG + RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为8字节
NRF24L01_Write_Reg(WRITE_REG + RF_SETUP, 0x07); //设置发射速率为1MHZ,发射功率为最大值0dB
}
前天去逛二手市场发现一个成色不错的电烤箱,准备用来烘干感光油墨,将来还打算改成回流焊箱,不知道1500W的功率够不够我的
我的电脑有问题发表了图片 自学STM32 发表于 2012-9-1 21:34 static/image/common/back.gif
用硬件I2C读不了5883 死在
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));// ...
楼主,看你的软件好像是买了论坛上某大侠的IMU板子吧,他也是用的软件I2C实现的。话说STM32的硬件I2C真的是有些问题,你可以去官方网站找一下他们的补救库,话说功能强大,可是牺牲了定时器等这些资源。 我是买的F103RBT6MINI板+ MPU6050模块+HCML5883模块 自学STM32 发表于 2012-9-27 09:27 static/image/common/back.gif
我是买的F103RBT6MINI板+ MPU6050模块+HCML5883模块
MPU6050感觉加速度传感器有点慢,我的车虽然站起来了但是有点不稳,打算换传感器 分享下我读出来的数据:
denglu 发表于 2012-9-21 22:56
载人的还是选用ADI的陀螺仪吧!绝对又不一样的感觉!
为什么=-O,高手怎么认为,mpu6050效果不好吗?还有就是为什么载人的大车都选择了模拟的传感器呢?数字的不好吗?我用过6050,感觉还可以啊,你说的ADI的陀螺仪是模拟的还是数字的? 朋友,STM32调试MPU6050 的程序能给我看看吗?这几天我也在调试,但没成功,谢谢你了,我的邮箱skxiaopeng@163.com
MPU6050是拿来玩玩的,不能当真。
kmani 发表于 2012-12-14 12:21 static/image/common/back.gif
MPU6050是拿来玩玩的,不能当真。
那肯定不能用来做载人的车了?! chenjiawei7 发表于 2012-12-14 16:34 static/image/common/back.gif
那肯定不能用来做载人的车了?!
我记得坛子里有人用MPU6050做过载人的,他觉得车子不稳,就换了其它的传感器,然后就比较稳了。我自己使用MPU6050,也觉得不太靠谱。 请问楼主测试软件用的是什么,有得下载吗?3q 楼上各位能否推荐一款靠谱点的传感器啊 好久没见楼主更新了啊 自学STM32 发表于 2012-9-1 21:34 static/image/common/back.gif
用硬件I2C读不了5883 死在
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));// ...
能否将此软件共享下。。谢谢~ 关于载人,现在已上市的商业成品就有用MPU-6050的 兄弟,加我个QQ,274890853.我搞stm32f407下的两轮小车 其实数字的跟模拟的区别不大,外围电路做好就行,
//////去淘宝搜Freeway 两轮平衡车 mini ahrs DEMO软件 能发份我吗992267082@qq.com 飞鹰377 发表于 2012-12-12 14:21 static/image/common/back.gif
朋友,STM32调试MPU6050 的程序能给我看看吗?这几天我也在调试,但没成功,谢谢你了,我的邮箱
...
现在有程序了吗?我也在调试 ,在数据融合出问题了 想飞的四轴 发表于 2013-8-30 22:28 static/image/common/back.gif
现在有程序了吗?我也在调试 ,在数据融合出问题了
我的邮箱1415890504@qq.com谢了 自学STM32 发表于 2012-9-1 21:34 static/image/common/back.gif
用硬件I2C读不了5883 死在
while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));// ...
请问前辈,您的这个软件可否共享使用吗? 想飞的四轴 发表于 2013-8-30 22:29 static/image/common/back.gif
我的邮箱谢了
我也在调试,那个你调的怎么样了?能分享一下经验吗?也是数据融合的时候出现问题
MPU6050是拿来玩玩的,不能当真。
实际产品中有很多在用啊 楼主的车现在做的咋样了?
6050十几块钱的东东也只能玩玩,真要做商品级别的车必须要用好的传感器 用6050做载人个人觉得不靠谱,这片子的加速度计非线性度大,陀螺仪的反应慢......
个人见解 认真阅读,学习了! 支持开源 MPU6050真的那么差劲吗? 我觉得还好啊,我就用的这个,能用 我已经用这个实现了两轮自平衡了,用LM3S2B93+MPU6050,没问题。
页:
[1]