几种典型磁铁表面的磁感应强度的变化

高斯计磁场测试仪磁力检测仪磁场测磁仪手持磁通计特斯拉计td8620 中测量了方形磁铁表面的磁感应强度B,发现这类磁铁表面的磁场强度并不是均匀的。下面通过 线性HALL 3503 来测量几种典型永磁铁表面的磁场强度的变化。

00测量方法

1.测量方法

使用 单轴步进驱动模块SH-20403 的滑轨带动线性HALL从磁铁表面划过,测量不同位置的磁场强度B。

▲ 丝杠滑轨带动HALL从磁铁表面划过

▲ 丝杠滑轨带动HALL从磁铁表面划过

2.磁铁磁场范围

使用 高斯计磁场测试仪磁力检测仪磁场测磁仪手持磁通计特斯拉计td8620 对于长方形的磁铁测量,在边缘测量到的磁场最大: B M a x = 2600 G B_{Max} = 2600G BMax=2600G

在磁铁的中心测量到的磁场强度最小:
B M i n = 1100 G B_{Min} = 1100G BMin=1100G

3.HALL输出分析

如果使用线性HALL 3503进行测量,根据3503 的灵敏度为:
η = 1.3 m V / G \eta = 1.3mV/G η=1.3mV/G

那么Bmax对应的输出电压变化应该是:
Δ U = η ⋅ B max ⁡ = 1.3 × 2600 = 3380 m V = 3.380 V \Delta U = \eta \cdot B_{\max } = 1.3 \times 2600 = 3380mV = 3.380V ΔU=ηBmax=1.3×2600=3380mV=3.380V

如果HALL传感器工作在5V,它的中点为2.5V。那么此时输出的电压 V max ⁡ = 2.5 + 3.38 = 5.88 V V_{\max } = 2.5 + 3.38 = 5.88V Vmax=2.5+3.38=5.88V

这已经超过了HALL器件输出的最大的电压,一般在 V r a n g e = [ 1.2 V ,    4.2 V ] V_{range} = [1.2V,\,\,4.2V] Vrange=[1.2V,4.2V]

如果按照输出电压最大 V max ⁡ = 4.2 V V_{\max } = 4.2V Vmax=4.2V,那么输出电压变化最大为: Δ U max ⁡ = 4.2 − 2.5 = 1.7 V \Delta U_{\max } = 4.2 - 2.5 = 1.7V ΔUmax=4.22.5=1.7V

对应的磁场强度不应该超过: B max ⁡ = Δ U max ⁡ 1.3 × 1 0 − 3 = 1.7 1.3 × 1 0 − 3 = 1307 G B_{\max } = {{\Delta U_{\max } } \over {1.3 \times 10^{ - 3} }} = {{1.7} \over {1.3 \times 10^{ - 3} }} = 1307G Bmax=1.3×103ΔUmax=1.3×1031.7=1307G

01测量结果

由于磁铁表面的磁场强度远超过HALL3503的线性范围,所以下面分为两次测量:

  • 紧贴磁铁表面测量;
  • 原理磁铁表面测量;

1.紧贴磁铁表面

下面是测量一次HALL传感器通过磁铁长轴通过时的变化曲线,其中可以看到在磁铁表面时,HALL传感器几乎就饱和了。

▲ 磁铁表面的磁场变化

▲ 磁铁表面的磁场变化

▲ 磁铁表面的磁场变化

▲ 磁铁表面的磁场变化

2.远离磁铁表面测量

将HALL传感器提高到距离磁铁表面1厘米的高度位置。重新测量磁场变化的曲线。

▲ 磁铁表面的磁场变化

▲ 磁铁表面的磁场变化

3.HALL1308测量

更换1308测量磁铁表面的磁场强度。其中大部分的磁场表面的强度使得HALL1308出现了饱和。

▲ 磁场表面的磁场强度

▲ 磁场表面的磁场强度

4.改变HALL角度

为了避免HALL输出饱和,将HALL的角度改动大约45°倾斜角度,这样可以将进入HALL的磁场强度降低大约0.71倍。

▲ 磁铁表面的磁场强度

▲ 磁铁表面的磁场强度

通过这次测量,可以看到的确在磁铁表面的磁场强度的变化情况。特别是,在磁铁的中心的磁场强度是最弱的。

但是,磁场的变化表没有向TD8620磁力计所测量的变化那么大。

02特殊磁铁

1.机械硬盘音频电机磁铁

拆开机械硬盘看一看 中获得了机械硬盘音频电机的磁极。根据房分析,它的表面的磁极应该是左右分别为N-S对称的。

▲ 机械磁盘音频电机磁极

▲ 机械磁盘音频电机磁极

▲ 磁铁表面的磁场强度

▲ 磁铁表面的磁场强度

2.磁性角度传感器

▲ 磁性角度传感器

▲ 磁性角度传感器

▲ 磁性角度传感器表面的磁场

▲ 磁性角度传感器表面的磁场

.结论

通过线性霍尔传感器对于几种典型磁铁表面的磁场进行测量,获得了更加精细的磁场分布的特性。

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY                     -- by Dr. ZhuoQing 2020-09-26
#
# Note:
#============================================================

from headm import *
from tsmodule.tsstm32       import *
import LSCM8

#------------------------------------------------------------

LSCM8.lscm8mb(100000)
time.sleep(2)

#------------------------------------------------------------
outdim = []

for i in range(90):
    meter = meterval()
    outdim.append(meter[0])

    LSCM8.lscm8mf(1000)
    time.sleep(1)

    tspsave('data1', out=outdim)

LSCM8.lscm8mb(100000)
plt.plot(outdim)
plt.xlabel("Step")
plt.ylabel("Voltage(V)")
plt.grid(True)
plt.tight_layout()
plt.show()

printf('\a')

#------------------------------------------------------------
#        END OF FILE : TEST2.PY
#============================================================
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# LSCM8.PY                     -- by Dr. ZhuoQing 2020-01-14
#
# Note:
#============================================================

from head import *
import serial

#------------------------------------------------------------
cmdportdef = 'COM2'
cmdport = serial.Serial(cmdportdef, baudrate=115200, timeout=0.1)
cmdport.setDTR(False)
#cmdport.setRTS(False)

printf("Open %s for LSCM8."%cmdportdef)

#------------------------------------------------------------
COMMAND_FRAME_HEAD		= 0x56
COMMAND_FRAME_TAIL		= 0x65

COMMAND_STATUS_WAIT		= 0x0
COMMAND_STATUS_COMMAND	        = 0x1
COMMAND_STATUS_LENGTH	        = 0x2
COMMAND_STATUS_DATA		= 0x3
COMMAND_STATUS_CHECK	        = 0x4
COMMAND_STATUS_TAIL		= 0x5

#------------------------------------------------------------
COMMAND_HELLO_ECHO		= 0x20
COMMAND_BEEP_ON			= 0x21
COMMAND_BEEP_OFF		= 0x22
COMMAND_DIR_ON			= 0x23
COMMAND_DIR_OFF			= 0x24
COMMAND_REL_ON			= 0x25
COMMAND_REL_OFF			= 0x26
COMMAND_PUL_SET			= 0x27
COMMAND_PUL_STOP		= 0x28
COMMAND_GOTO_HEAD		= 0x29
COMMAND_GOTO_TAIL		= 0x2A
COMMAND_GET_STATE		= 0x2B
COMMAND_GET_PULSEOUT	        = 0x2C
COMMAND_CLEAR_PULSEOUT	        = 0x2D

#------------------------------------------------------------
def lscm8cmd(cmd, cmddata):

    checksum = cmd + len(cmddata)
    for cd in cmddata:
        checksum = checksum + cd

    checksum = (checksum & 0xff) ^ 0xff

    cmdstr = b'' + byte(COMMAND_FRAME_HEAD) + byte(cmd) + byte(len(cmddata)) +\
             cmddata + byte(checksum) + byte(COMMAND_FRAME_TAIL)

#    printf(cmdstr)
    cmdport.write(cmdstr)

def lscm8hello():
    lscm8cmd(COMMAND_HELLO_ECHO, b'')

def lscm8beepon():
    lscm8cmd(COMMAND_BEEP_ON, b'')

def lscm8beepoff():
    lscm8cmd(COMMAND_BEEP_OFF, b'')

#------------------------------------------------------------
def lscm8relon(bits):
    cmd = bits.to_bytes(1, byteorder='big')
    lscm8cmd(COMMAND_REL_ON, cmd)

#------------------------------------------------------------
# bits:0:relay0, 1:relay1
def lscm8reloff(bits):
    cmd = bits.to_bytes(1, byteorder='big')
    lscm8cmd(COMMAND_REL_OFF, cmd)

def lscm8diron(bits):
    cmd = bits.to_bytes(1, byteorder='big')
    lscm8cmd(COMMAND_DIR_ON, cmd)

def lscm8diroff(bits):
    cmd = bits.to_bytes(1, byteorder='big')
    lscm8cmd(COMMAND_DIR_OFF, cmd)

#------------------------------------------------------------
def lscm8setpulse(bits, pulse):
    cmd = bits.to_bytes(1, byteorder='big') +\
          pulse.to_bytes(4, byteorder='big')
    lscm8cmd(COMMAND_PUL_SET, cmd)

def lscm8stoppulse():
    lscm8cmd(COMMAND_PUL_STOP, b'')

def lscm8gotohead():
    lscm8cmd(COMMAND_GOTO_HEAD, b'')

def lscm8gototail():
    lscm8cmd(COMMAND_GOTO_TAIL, b'')

def lscm8clearpulseout():
    lscm8cmd(COMMAND_CLEAR_PULSEOUT, b'')

def lscm8mf(steps):
    lscm8diron(3)
    lscm8reloff(3)
    lscm8setpulse(3, steps)

def lscm8mb(steps):
    lscm8diroff(3)
    lscm8reloff(3)
    lscm8setpulse(3, steps)

#------------------------------------------------------------
if __name__ == "__main__":
    time.sleep(.5)

#    lscm8diron(3)
#    lscm8reloff(3)
#    lscm8gotohead()
 #   lscm8gototail()
#    lscm8setpulse(3, 1000)
#    lscm8diron(3)

    lscm8mb(100000)

#    lscm8mf(1900000)

    tspbeep(1500, 100)
    printf('End of the command')

#------------------------------------------------------------
#        END OF FILE : LSCM8.PY
#============================================================

 
■ 相关文献链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值