GY-273 三轴电子指南针STM32F1x开发

一、指南针型号
1.1 GY-273 QMC5883L电子指南针罗盘模块 三轴磁场传感器
在这里插入图片描述

1.2 模块线的连接

注意:
1)这个模块使用时,焊在板子上才好,不要用杜邦线接,会不灵敏。
2)调试时候,可以杜邦线用一下。

GY-273连接单片机
VCC5V
GNDGND
SCLPA 11
SDAPA 12
DRDY不接
串口调试模块
5V5V
TXDPA10
RXDPA9
GNDGND
ST-LINK
SWCLK缺口靠左-左排-上至下-第5 个针
SWDIO缺口靠左-左排-上至下-第4 个针
GND缺口靠左-右排-上至下-最后1个针
3.3v缺口靠左-右排-上至下-第2 个针

二、程序开发

程序链接:
最新版:点击 3—GY273.zip,去我资源 库里面找 吧。

这版修改了上版的问题,最新的亲测,有效。

上一版(stm32f10x 电子指南针GY-273.zip),做一个参考吧!

2.1 main 函数

#include "stm32f10x.h"
#include "usart.h"	
#include "delay.h"
#include "sys.h"
#include "GY273.h"

extern double gy273_data;
extern void gy273_work(void);

 int main(void) {	
    delay_init();	    	 //延时函数初始化	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(9600); 
	Init_HMC5883();      //GY273 初始化
  while(1){
	    gy273_work();
		printf("gy273_data is %f \r\n",gy273_data); 	
	}
 }

2.2 .h文件

#ifndef GY273_H
#define GY273_H
#include "sys.h"
#include "delay.h"

//                           第一部分:IIC通信 的协议驱动函数   	   		   
//IO方向设置
#define SDA_IN() {GPIOA->CRH&=0XFFF0FFFF;GPIOA->CRH|=8<<16;}
#define SDA_OUT() {GPIOA->CRH&=0XFFF0FFFF;GPIOA->CRH|=3<<16;}

//IO操作函数	 
#define IIC_SCL    PAout(11) //SCL
#define IIC_SDA    PAout(12) //SDA	 
#define READ_SDA   PAin(12)  //输入SDA 
//                           第二部分:GY273 的设置函数

#define  uchar unsigned char
#define  uint  unsigned int	

#define	SlaveAddress   0x3C	  //定义器件5883在IIC总线中的从地址
typedef unsigned char BYTE;
typedef unsigned short WORD;




//                           第一部分:IIC通信 的协议驱动函数
//IIC所有操作函数
void IIC_Init(void);                //初始化IIC的IO口				 
void IIC_Start(void);				//发送IIC开始信号
void IIC_Stop(void);	  			//发送IIC停止信号
void IIC_Send_Byte(u8 txd);			//IIC发送一个字节
u8 IIC_Read_Byte(unsigned char ack);//IIC读取一个字节
u8 IIC_Wait_Ack(void); 				//IIC等待ACK信号
void IIC_Ack(void);					//IIC发送ACK信号
void IIC_NAck(void);				//IIC不发送ACK信号

void IIC_Write_One_Byte(u8 daddr,u8 addr,u8 data);
u8 IIC_Read_One_Byte(u8 daddr,u8 addr);	  
//                           第二部分:GY273 的设置函数
void  Multi_read_HMC5883(void);                 //连续读出HMC5883内部角度数据,地址范围0x3~0x5
void  Single_Write_HMC5883(uchar REG_Address,uchar REG_data);   //单个写入数据
//uchar Single_Read_HMC5883(uchar REG_Address);                   //单个读取内部寄存器数据
void Init_HMC5883(void);            //初始化5883
void conversion(uint temp_data);
void gy273_work(void);

#endif
### 回答1: GY271和GY273是两种常见的磁感应传感器模块,用于测量和检测周围磁场的强度和方向。它们在一些特性上存在一些区别。 首先,在外观上,GY271和GY273的尺寸略有不同。GY271尺寸为14mm x 16mm,而GY273尺寸为12mm x 16mm。因此,在空间限制较严格的应用中,GY273更加适合。 其次,两者在磁场测量范围上也存在差异。GY271可以测量在±8 gauss范围内的磁场强度,而GY273能够测量在±1.3 gauss范围内的磁场强度。因此,在对磁场测量精度要求较高的应用中,GY271更具优势。 此外,两者在输出模式上也有所不同。GY271是通过I²C(Inter-Integrated Circuit)接口输出数据,而GY273则通过模拟输出方式输出结果。这意味着GY273相对来说更加直接,不需要进行数据解析和转换。 最后,由于GY271具有更大的磁场测量范围和更高的测量精度,它通常用于需要更高灵敏度和更广泛测量范围的应用,如导航、定位和磁场传感等领域。而GY273则适用于一些对测量精度要求不太高,并且空间较为有限的应用场景。 总结起来,GY271和GY273在尺寸、测量范围、输出模式等方面有所不同,用户在选择时应根据具体应用需求进行选择。 ### 回答2: GY271和GY273是两种常用的霍尔传感器模块,主要用于检测磁场。它们之间的区别主要有以下几点: 1. 尺寸大小:GY271和GY273的尺寸大小略有不同。GY271的尺寸大约为2.5 x 1.3厘米,而GY273的尺寸大约为1.8 x 1.6厘米。因此,在物理安装上可能需要根据实际需求选择合适的尺寸。 2. 接口类型:GY271和GY273的接口类型也有所不同。GY271采用I2C接口进行通信,而GY273则使用模拟输出信号。因此,在连接到主控设备时,需要根据主控设备的接口类型来选择适合的霍尔传感器模块。 3. 灵敏度:GY271和GY273的灵敏度也存在差异。GY271的灵敏度相对较高,可以检测更小的磁场变化。而GY273的灵敏度相对较低,只能检测较大的磁场变化。因此,在实际应用中,可以根据具体的磁场变化范围选择合适的传感器模块。 4. 功能特性:GY271和GY273的功能特性也有一些差异。GY271具有可调节增益和温度补偿功能,可以提高传感器的性能和稳定性。而GY273则没有这些功能,仅能提供基本的磁场检测。 综上所述,GY271和GY273在尺寸大小、接口类型、灵敏度和功能特性等方面存在一些差异。在选择使用时,需要根据具体需求和应用场景来进行选择。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值