2989|2

932

帖子

3

TA的资源

纯净的硅(中级)

楼主
 

依据X-NUCLEO-IKS01A3磁场强度数值辨别方向 [复制链接]

 

    X-NUCLEO-IKA01A3的磁力传感器得到的强度有x,y,z三个数值,经过测试,变动方向主要会影响数据x,y,而数据z的影响不大,为了找出x,y数值与方向之间的关系,我用开发板做了简易的测试,用量角器固定好南北方向,如下图:

 

    然后每隔10度记录一次x,y的数值,为了让数据更可靠,我记录了两遍完整的数据。

    之后在平面直角坐标系中依次将x,y标注好,发现这些数据分布在三、四象限上,正好形成了一个圆形,见下图:

    我再按照16个方向测得的数据标注在坐标中(红色),并按照黄色作为各个方向的分界线,最后实现了根据磁力传感器数据用汉字显示方位。下面是显示的部分照片:

    下面是根据x,y数值辨别和显示方向的代码:

void display_direction(int x,int y) //根据磁场强度x,y值判断方位,并在固定位置显示汉字
{
    LCD_write_BG(45,2,(uint8_t *)"      ");
	if(y > -225){
	    if(x < -220)
			LCD_write_BG(45,2,(uint8_t *)"北偏东");
		else if(x < -150)
		    LCD_write_BG(45,2,(uint8_t *)"东北");
		else if(x < -50)
		   	LCD_write_BG(45,2,(uint8_t *)"东偏北");
		else if(x < 55)
            LCD_write_BG(45,2,(uint8_t *)"正东");
        else if(x < 150)
            LCD_write_BG(45,2,(uint8_t *)"东偏南");
        else
            LCD_write_BG(45,2,(uint8_t *)"东南");
	}
	else if(y < -510){
        if(x < -115)
	    	LCD_write_BG(45,2,(uint8_t *)"西偏北");
	    else if( x < -25)
            LCD_write_BG(45,2,(uint8_t *)"正西");
        else if(x < 75)
            LCD_write_BG(45,2,(uint8_t *)"西偏南");
        else
            LCD_write_BG(45,2,(uint8_t *)"西南");
			
	}
	else if(y < -420){
        if(x > 0)
            LCD_write_BG(45,2,(uint8_t *)"南偏西");
        else
            LCD_write_BG(45,2,(uint8_t *)"西北");
	}
	else if(x > 0){
        if(y > -315)
            LCD_write_BG(45,2,(uint8_t *)"南偏东");
        else
            LCD_write_BG(45,2,(uint8_t *)"正南");
    }
    else if(y > -330)
       	LCD_write_BG(45,2,(uint8_t *)"正北");
    else
        LCD_write_BG(45,2,(uint8_t *)"北偏西");
		
}

    尽管这个实验的实用价值不高,但通过实验可以初步了解磁力传感器。另外由于所处的经纬度不同,可能也会引起数据的变化。


此内容由EEWORLD论坛网友hujj原创,如需转载或用于商业用途需征得作者同意并注明出处

最新回复

磁场传感器做指南针时,需要先校正,不然误差很大。在microbit中是通过加速度传感器辅助校正的,具体算法应该可以搜索到。   详情 回复 发表于 2019-8-12 16:04
点赞 关注
 
 

回复
举报

1万

帖子

24

TA的资源

版主

沙发
 

磁场传感器做指南针时,需要先校正,不然误差很大。在microbit中是通过加速度传感器辅助校正的,具体算法应该可以搜索到。

点评

谢谢指点!我再试试其他的校准范例。 目前测试只是定位16个方向,即东、南、西、北、东北、东南、西北、西南、东偏南、东偏北、南偏东、南偏西、西偏南、西偏北、北偏西、北偏东等,没有要求太高的精度。  详情 回复 发表于 2019-8-12 19:55
 
 
 

回复

932

帖子

3

TA的资源

纯净的硅(中级)

板凳
 
dcexpert 发表于 2019-8-12 16:04 磁场传感器做指南针时,需要先校正,不然误差很大。在microbit中是通过加速度传感器辅助校正的,具体算法应 ...

谢谢指点!我再试试其他的校准范例。

目前测试只是定位16个方向,即东、南、西、北、东北、东南、西北、西南、东偏南、东偏北、南偏东、南偏西、西偏南、西偏北、北偏西、北偏东等,没有要求太高的精度。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表