查看: 305|回复: 23

[MP动手做] MicroPython动手做(21)——掌控板之磁场传感器

[复制链接]
0 (1).jpg

地磁(磁场)传感器MMC5983MA
测量范围:±8 Gauss
精度0.4mGz,电子罗盘误差±0.5°

注:掌控板2.0版本才有

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 13:01:52

14.jpg

1、地球磁场(the earth magnetic field)
是指地球周围空间分布的磁场。偶极型,近似于把一个磁铁棒放到地球中心,地磁北(N)极处于地理南极附近,地磁南(S)极处于地理北极附近。磁极与地理极不完全重合,存在磁偏角。地球磁场属于电磁场,是通过外核的电子随地球自转的电流效应(近似于电生磁)产生的磁场。

历史上,第一个提出地磁场理论概念的是英国人吉尔伯特。他在1600年提出一种论点,认为地球自身就是一个巨大的磁体,它的两极和地理两极相重合。这一理论确立了地磁场与地球的关系,指出地磁场的起因不应该在地球之外,而应在地球内部。

1893年,数学家高斯在他的著作《地磁力的绝对强度》中,从地磁成因于地球内部这一假设出发,创立了描绘地磁场的数学方法,从而使地磁场的测量和起源研究都可以用数学理论来表示。但这仅仅是一种形式上的理论,并没有从本质上阐明地磁场的起源。科学家们已掌握了地磁场的分布与变化规律,但是,对于地磁场的起源问题,学术界却一直没有找到一个令人满意的答案。关于地磁场起源的假说归纳起来可分为两大类,第一类假说是以现有的物理学理论为依据;第二类假说则独辟蹊径,认为对于地球这样一个宇宙物体,存在着不同于现有已知理论的特殊规律。属于第一类假说的有旋转电荷假说。它假定地球上存在着等量的异性电荷,一种分布在地球内部,另一种分布在地球表面,电荷随地球旋转,因而产生了磁场。这一假说能够很自然地通过电与磁的关系解释地磁场的成因。但是,这个假说却有一个致命缺点,首先它不能解释地球内外的电荷是如何分离的;其次,地球负载的电荷并不多,由它产生的磁场是很微弱的,根据计算,如果要想得到地磁场这样的磁场强度,地球的电荷储量需要扩大1亿倍才行,理论计算和实际情况出入很大。以地核为前提条件的地磁场假说也属于第一类假说,弗兰克在这类假说中提出了发电机效应理论。他认为地核中电流的形成,应该是地核金属物质在磁场中做涡旋运动时,通过感应的方式而发生的。同时,电流自身形式的场就是连续不断的再生磁场,好像发电机中的情形一样。弗兰克所建立的模型说明了怎样实现地磁场的再生过程,解释了地磁场有一定的数值。但是在应用这种模型的时候,却很难解释地核中的这种电路是怎样通过圆形回路而闭合的。此外,这个模型也没有考虑到电流对涡旋运动的反作用,而这种反作用是不允许涡旋分布于平行赤道面的平面内的。属于第一类假说的还有漂移电流假说、热力效应假说和霍尔效应假说等,但这些假说都不能全面地解释地磁场的奇异特性。关于地磁场起源还有第二类假说,这其中最具代表性的就是重物旋转假说。

1947年,布莱克特提出任意一个旋转体都具有磁矩,它与旋转体内是否存在电荷无关。这一假说认为,地球和其他天体的磁场都是在旋转中产生的,也就是说星体自然生磁,就好像电荷转动能产生磁场一样。但是,这一假说在试验和天文观测两方面都遇到了困难。在现有的实验条件下,还没有观察到旋转物体产生的磁效应。而对天体的观测结果表明,每个星球的磁场分布状况都很复杂,尚不能证明星球的旋转与磁场之间存在着必然的依存关系。因此上说,关于地磁场的起源问题,学术界仍处在探索与争鸣之中,尚没有一个具有相当说服力的理论,对地磁场的成因作出解释。

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-30 13:46:28

6、简易钱包防丢磁感应报警器(钱包里放置一块强磁片)
离开一段距离,磁场强度小于8,则声光报警

[AppleScript] 纯文本查看 复制代码
#MicroPython动手做(21)——掌控板之磁场传感器
#简易钱包防丢磁感应报警器(钱包里放置一块强磁片)

from mpython import *

import time

import music
while True:
    magnetic.peeling()
    rgb.fill( (0, 0, 0) )
    rgb.write()
    time.sleep_ms(1)
    oled.fill(0)
    oled.DispChar('磁场强度', 0, 16, 1)
    oled.DispChar((str(magnetic.get_field_strength())), 0, 32, 1)
    oled.show()
    if magnetic.get_field_strength() < 8:
        rgb.fill((int(255), int(0), int(0)))
        rgb.write()
        time.sleep_ms(1)
        music.pitch(523, 300)
        music.pitch(988, 300)
    else:
        music.stop()
        rgb.fill( (0, 0, 0) )
        rgb.write()
        time.sleep_ms(1)
    time.sleep(1)

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 16:20:00

4、磁感应开关控制RGB

[AppleScript] 纯文本查看 复制代码
#MicroPython动手做(21)——掌控板之指南针模块
#磁感应开关控制RGB

from mpython import *
import time


while True:
    magnetic.peeling()
    oled.fill(0)
    oled.DispChar("磁场强度", 39, 15, 1)
    oled.DispChar((str(magnetic.get_field_strength())), 33, 35, 1)
    oled.show()
    if int(magnetic.get_field_strength()) > 200:
        rgb.fill((int(255), int(0), int(0)))
        rgb.write()
        time.sleep_ms(1)
        oled.fill(0)
        oled.DispChar("三颗红灯  开", 26, 20, 1)
        oled.show()
        time.sleep(1)
    else:
        rgb.fill( (0, 0, 0) )
        rgb.write()
        time.sleep_ms(1)

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 10:51:46

MMC5983AM特征

完全集成的3轴磁传感器和

需要较少外部电路的电子电路

组件

出色的动态范围和精度:

±8G FSR,16位操作

每LSB分辨率0.25mG

0.4mG的总RMS噪声

使航向精度达到1º

最大输出数据速率为600Hz

工业标准薄型包装

3.0x3.0x1.0毫米

使用内置的SET / RESET功能消磁

消除了热变化引起的偏移

错误(空字段输出)

清除残留的磁化强度

来自强大的外部领域

片内灵敏度补偿

片上温度传感器

Motion_Detection和Data_Ready中断

低功耗

1µA的掉电电流

I2

C从机,FAST(≤400KHz)模式

2.5V单路低功耗电源

1.8V I2

C接口

符合RoHS

与HMC5883L兼容的P2P
02.jpg


回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 11:03:15

地磁(磁场)传感器MMC5983MA参数

03.jpg
04.jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 11:08:20

05.jpg
01.jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 13:07:58

2、简易测量自然磁场(地磁)强度

[AppleScript] 纯文本查看 复制代码
#MicroPython动手做(21)——掌控板之指南针模块
#简易测量自然磁场(地磁)强度

from mpython import *
while True:
    magnetic.peeling()
    oled.fill(0)
    oled.DispChar('磁场强度', 40, 15, 1)
    oled.DispChar((str(magnetic.get_field_strength())), 33, 30, 1)
    oled.show()

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 13:13:17

mPython 图形编程

13.jpg


回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 13:22:01

06.jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 13:48:01

07.jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 13:52:59

15.gif
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 13:56:11

3、柱状条动态地磁强度值

[AppleScript] 纯文本查看 复制代码
#MicroPython动手做(21)——掌控板之指南针模块
#柱状条动态地磁强度值

from mpython import *

myUI = UI(oled)
while True:
    cc = ((100 - 0) / (2.7 - 0)) * (magnetic.get_field_strength() - 0) + 0
    magnetic.peeling()
    oled.fill(0)
    oled.DispChar('磁场强度', 8, 15, 1)
    oled.DispChar((str(magnetic.get_field_strength())), 56, 15, 1)
    myUI.stripBar(6, 35, 110, 10, cc, 1, 1)
    oled.show()

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 14:29:20

mPython 图形编程

20.jpg

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 14:43:44

21.gif
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 16:31:34

mPython X 图形编程

22.jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-28 16:41:09

25.gif
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-30 11:58:07

5、实时测量显示地磁强度的波形


[Python] 纯文本查看 复制代码
#MicroPython动手做(21)——掌控板之磁场传感器
#实时测量显示磁场强度的波形

from mpython import *

import time
oled.fill(0)
oled.DispChar('     磁场强度数据采集', 0, 16, 1)
oled.DispChar('     按A开始   按B结束', 0, 32, 1)
oled.show()
time.sleep_ms(50);print(('__TITLE', '磁场强度'));time.sleep_ms(50)
while True:
    while button_a.value() == 0:
        while not button_b.value() == 0:
            magnetic.peeling()
            print((magnetic.get_field_strength(),))
            time.sleep_ms(200)

回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-30 12:05:44

正常地磁强度值在1-3范围变动(附近无强磁场干扰)
26.jpg







回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-30 12:52:11

手机带来的磁场强度值大约在10-30前后

27.jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-30 12:56:46

强磁铁的磁场强度达到1000-7500左右

28.jpg

31.jpg
回复

使用道具 举报

驴友花雕  中级技匠
 楼主|

发表于 2020-4-30 13:01:18

mPython 图形编程

29.jpg
回复

使用道具 举报

12下一页
高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail