作者:卓晴博士,清华大学自动化系
更新时间:2020-07-29 Wednesday  

01测量一款电磁铁的磁场分布


电磁铁是由电流产生磁场的一种磁铁,在通电状态下可产生强劲吸附力,把它安装在设备中可对被吸附物体起到停止或移动作用。根据安培定律,导线种的电流产生导线周围的磁场。为了将磁场集中,在电磁铁中电线被卷绕成一个线圈,许多线并排排列。线圈的所有磁场通过线圈的重心,在那里形成一个强大的磁场。电磁铁磁铁能持续吸附1公斤重量的铁磁体。电磁铁模块使用简单,紧靠控制信号线的高低电平即可控制电磁铁的通断。

▲ 直流吸盘式电磁铁模块 DC5V微型数字信号电磁铁传感器模块

  • 关键参数:

(1)尺寸:2540mm
(2)重量:24g
(3)固定孔尺寸:33
18mm
(4)接口类型:3P传感器防插反接口,舵机线序
(5)信号类型:数字信号
(6)引脚定义:G:负极 V:正极 S:信号
(7)工作温度:-20至80℃
(8)负载可达:1KG
(9)连接线:3P传感器连接线、杜邦线

02磁铁周围磁场


1.轴线上垂直距离磁场分布

▲ 随着距离增加,HALL测量磁场强度变化

2.垂直于轴线磁场分布

  • 距离5mm

    ▲ 水平平移与HALL输出之间的关系

  • 距离2mm

    ▲ 水平平移与HALL输出之间的关系

  • 距离10mm

    ▲ 水平平移与HALL输出之间的关系

03测量软件


#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST4.PY                     -- by Dr. ZhuoQing 2020-07-26
#
# Note:
#============================================================from headm import *
import lscm8
from tsmodule.tsstm32       import *
gifid = 9val1dim = []
val2dim = []
val3dim = []distdim = linspace(0, 40, 100)tspgiffirst(gifid)
for i in range(100):lscm8.lscm8mb(400)stm32cmd('adc')time.sleep(.1)val = stm32memo(1)tspgifappend(gifid)val1dim.append(val[0])val2dim.append(val[1])val3dim.append(val[2])printf(val)tspsavenew('Measure', val1=val1dim, val2=val2dim, val3=val3dim)
#plt.plot(distdim, val1dim)
plt.plot(distdim, val2dim)
#plt.plot(distdim, val3dim)
plt.xlabel("Distance(mm)")
plt.ylabel("Value")
plt.grid(True)
plt.legend(loc='upper right')
plt.tight_layout()
plt.show()#------------------------------------------------------------
#        END OF FILE : TEST4.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        = 0x65COMMAND_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 + cdchecksum = (checksum & 0xff) ^ 0xffcmdstr = 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
#============================================================

一种电磁铁磁场分析测量相关推荐

  1. C#中判断空字符串的3种方法性能分析【月儿原创】

    C#中判断空字符串的3种方法性能分析 作者:清清月儿 主页:http://blog.csdn.net/21aspnet/           时间:2007.4.28  3种方法分别是:string ...

  2. Android AsyncTask两种线程池分析和总结

    转自:http://bbs.51cto.com/thread-1114378-1-1.html Android AsyncTask两种线程池分析和总结 (一)    前言 在android Async ...

  3. python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...

    今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...

  4. Android之AsyncTask两种线程池分析和总结

    Android AsyncTask两种线程池分析和总结 (一)    前言 在android AsyncTask里面有两种线程池供我们调用 1.    THREAD_POOL_EXECUTOR, 异步 ...

  5. matlab的灰色关联,五种灰色关联度分析matlab代码

    <五种灰色关联度分析matlab代码>由会员分享,可在线阅读,更多相关<五种灰色关联度分析matlab代码(3页珍藏版)>请在人人文库网上搜索. 1.灰色邓关联分析% p12- ...

  6. perclos嘴巴_一种基于视频分析的疲劳状态检测方法及装置与流程

    本发明涉及疲劳检测领域,特别是涉及一种基于视频分析的疲劳状态综合检测方法及装置. 背景技术: 疲劳状态检测技术在交通运输.生产安全.教育培训等许多领域应用广泛.目前,疲劳状态检测的方法一般可分为接触式 ...

  7. omwin密立根油滴实验数据处理程序_哈工程最新大物实验报告29——磁场的测量...

    哈工程大物实验包含以下内容: 电位差计实验 分光计实验 光纤通信实验 测量透明薄片的折射率 自组电桥测电阻实验 光纤传感器实验 弗兰克-赫兹实验 太阳能电池的特性测量实验 光的偏振实验 液体变温粘滞系 ...

  8. 【数据分析】2022 年将占据主导地位的 3 种数据和分析趋势

    到 2022 年,供应链的可见性.准确评估数据产品以及利用数据实现可持续性和优化将变得至关重要. 数据分析是一个不断发展的领域.2020 年初,很明显组织将继续大力投资分析以支持其数字化转型.COVI ...

  9. C#中判断空字符串的3种方法性能分析 1

    C#中判断空字符串的3种方法性能分析 作者:杨义贤 主页:http://blog.csdn.net/lucky_yyx       时间:2007.4.29  3种方法分别是:string a=&qu ...

最新文章

  1. SQL语句技巧:查询时巧用OR实现逻辑判断
  2. if函数中的android,java - 我需要帮助将IF语句方法更改为Android Studio中的SWITCH情况 - 堆栈内存溢出...
  3. STC单片机高速下载电路改进
  4. SevOne将SD-WAN监控扩展到VMware NSX
  5. mac你没有权限打开应用程序_苹果mac卡顿怎么解决呢?轻松几招让你Mac流畅如新
  6. 关于AppCompatDelegate的使用
  7. 联想昭阳k29轴拆机步骤图_UG8.5编程加工之固定轴曲面轮廓铣削加工方法
  8. 《银狐》:对自然精神的尊重与回归
  9. 【CSS 技能提升】 :before和:after的使用
  10. Ajax解决浏览器的缓存问题
  11. ENVI Flaash大气校正与6S大气校正(TM为例)
  12. office 在线编辑 java_JAVA调用PageOffice在线打开、编辑Word文档
  13. WordPress目录解析
  14. H236各个版本的区别总结
  15. secureCRT 下载使用
  16. 单机游戏数据库探讨(MySQL嵌入式服务器的使用)(未完)
  17. clang 中英文帮助手册
  18. mysql 性能优化,减轻数据库的压力。(减少数据库查询的次数)
  19. [问题解决] socket 10053
  20. [BZOJ3928/4048]Outer space invaders

热门文章

  1. c#算两个火星坐标的距离(高德or百度)
  2. nginx 负载均衡示例
  3. Android BaseAdapter 例子
  4. uni-app 页面数据无法渲染原因总结
  5. Django之ModelForm验证
  6. Angular路由--模块预加载
  7. Java使用正则表达式
  8. Hacker(十)----常用入侵工具
  9. Ubuntu(Linux) 下 unzip 命令使用详解
  10. vijos 1030 重叠的方框