標(biāo)題:
stm32+QMC5883L磁力傳感器源程序,可以用來融合校準(zhǔn)MPU6050Z軸偏移
[打印本頁(yè)]
作者:
461534727
時(shí)間:
2019-7-10 10:54
標(biāo)題:
stm32+QMC5883L磁力傳感器源程序,可以用來融合校準(zhǔn)MPU6050Z軸偏移
該代碼是磁力計(jì)stm32控制QMC5883L磁力計(jì)輸出角度與三個(gè)磁力分量,某寶一些標(biāo)記有hmc5883L模塊實(shí)際是QMC5883L,輸出角度一直是45的可以試一下,你會(huì)感謝我的
單片機(jī)源程序如下:
#include "HMC5883L.h"
#include "I2C.h"
#include "delay.h"
void hmc_write_reg(u8 reg,u8 data)
{
IIC_Start();
IIC_Send_Byte(WRITE_ADDRESS);
IIC_Wait_Ack();
IIC_Send_Byte(reg);
IIC_Wait_Ack();
IIC_Send_Byte(data);
IIC_Wait_Ack();
IIC_Stop();
//delay_ms(5);
}
u8 hmc_read_reg(u8 reg)
{
u8 data;
IIC_Start();
IIC_Send_Byte(WRITE_ADDRESS);
IIC_Wait_Ack();
IIC_Send_Byte(reg);
IIC_Wait_Ack();
IIC_Stop();
IIC_Start();
IIC_Send_Byte(READ_ADDRESS);
IIC_Wait_Ack();
data=IIC_Read_Byte();
IIC_NAck();
IIC_Stop();
return data;
}
void hmc_read_XYZ(short int *data)
{
// u16 temp;
// temp=hmc_read_reg(DATAX_M);
// *data++=(temp<<8)+hmc_read_reg(DATAX_L);
// temp=hmc_read_reg(DATAY_M);
// *data++=(temp<<8)+hmc_read_reg(DATAY_L);
// temp=hmc_read_reg(DATAZ_M);
// *data++=(temp<<8)+hmc_read_reg(DATAZ_L);
*data++=((int16_t)hmc_read_reg(DATAX_M)<<8)|hmc_read_reg(DATAX_L);
*data++=((int16_t)hmc_read_reg(DATAY_M)<<8)|hmc_read_reg(DATAY_L);
*data++=((int16_t)hmc_read_reg(DATAZ_M)<<8)|hmc_read_reg(DATAZ_L);
}
void hmc_init(void)
{
hmc_write_reg(0X0B,0x01);
hmc_write_reg(0X20,0x40);
hmc_write_reg(0X21,0x01);
hmc_write_reg(CONFIGA,0x1D);
delay_ms(10);
}
復(fù)制代碼
#include "stm32f10x.h"
#include "I2C.h"
#include "HMC5883L.h"
#include "delay.h"
#include "math.h"
#include "usart.h"
//連接引腳PA8(SCL)PA11(SDA)
short int data[3];
double angle,x,y,z;
int main(void)
{
delay_init();
i2c_init();
hmc_init();
uart_init(115200);
while(1)
{
hmc_read_XYZ(data);
angle=atan2((double)data[0],(double)data[2])*(180 / 3.14159265)+180;
x=(double)data[0];
y=(double)data[1];
z=(double)data[2];
printf("%f %f %f %f\r\n",x,y,z,angle);
delay_ms(100);
}
}
復(fù)制代碼
所有資料51hei提供下載:
STM32F1_QMC5883L.7z
(3.13 MB, 下載次數(shù): 347)
2019-7-15 15:48 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
a984984sd123456
時(shí)間:
2019-7-16 10:17
謝謝老哥,整了兩天看了你的代碼終于好了
作者:
a984984sd123456
時(shí)間:
2019-7-16 10:19
謝謝大佬,兩天的調(diào)試,寶寶心里的苦,估計(jì)只有大佬能感受到
作者:
hanhuliang
時(shí)間:
2019-10-17 19:38
好資料,51黑有你更精彩!!!
作者:
cnvya
時(shí)間:
2019-12-10 20:33
賺點(diǎn)黑幣去下載
作者:
HYJ520
時(shí)間:
2020-10-18 20:33
確定能用嗎 我怎么讀出來都是-1啊
作者:
BigBen
時(shí)間:
2020-12-16 21:41
搞不定,編譯后燒寫,串口一直輸出45,啥原因?
作者:
3478污鈔
時(shí)間:
2021-3-12 08:50
我已經(jīng)將資料下載下來了,今天測(cè)試一下51程序,希望能用,提前感謝樓主了
作者:
哈哈你好1
時(shí)間:
2021-10-16 19:10
BigBen 發(fā)表于 2020-12-16 21:41
搞不定,編譯后燒寫,串口一直輸出45,啥原因。
我也是這樣,你解決了嗎?
作者:
哈哈你好1
時(shí)間:
2021-10-16 19:11
怎么讀出來是45
作者:
hero_huang
時(shí)間:
2023-2-16 17:20
有沒有HAL庫(kù)版本的呀?
作者:
wang0011
時(shí)間:
2024-6-7 09:20
為什么讀取到的一直是45
作者:
2307393235
時(shí)間:
2024-7-26 11:18
可以用,謝謝樓主被某一個(gè)寶坑慘了
作者:
lpdf
時(shí)間:
2024-7-31 15:31
讀出來45 就是假的嗎
作者:
春陰釀寒
時(shí)間:
2024-9-21 21:24
init的代碼有問題,應(yīng)該是這樣寫:
void hmc_init(void)
{
hmc_write_reg(0X0B,0x01);
//hmc_write_reg(0X20,0x40);
//hmc_write_reg(0X21,0x01);
hmc_write_reg(CONFIGA,0x1D);
delay_ms(10);
}
作者:
DL_AM
時(shí)間:
2025-4-27 21:08
wang0011 發(fā)表于 2024-6-7 09:20
為什么讀取到的一直是45
請(qǐng)問一下,你解決了嗎?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1