用UGN3503霍尔器件制作的数字指南针_电路图
本文介绍了用两个UGN3503型霍尔器件设计制作的数字指南针的设计目的、系统结构和工作原理,以及各主要器件的使用方法。本系统包括UGN3503型霍尔器件、TLC0832 A/D转换器、单片机控制、液晶显示四部分,实现了对地磁信息的采集、放大,经过模数转换和单片机处理,最终显示出用文字表示的当前所处方位。
现在机器人的控制有了很大的发展,尤其遥控机器人,但是还不能象人有自己的探索。基本上是放上摄像头人工控制,所以很大程度上没有独立工作能力,离开人和GPS还是不能工作。我们开发本系统是为了在一个恶劣的环境下为一个数字化系统提供一个原始的参考数据,或充当机器人的一个廉价的测控工具。
本着这个目的,本系统主要功能有:
1、地磁放大功能:通过内置磁铁对地磁场的反应,实现对地磁信息的放大。
2、系统辅助定位功能:通过本设备提供的串行口,既可以嵌入系统,为系统的空间定位提供参考数据;又可以作为外设,提供临时性测算。
本系统的输出方式可以采用液晶显示和语音输出两种方式,语音输出可为盲人提供方便。
整个系统的方框图如上图所示。
我们将互相垂直的两个霍尔器件固定于框架底部(如下图所示),在两个小磁铁条的N极和S极之间夹一个中空的塑料圆筒使其刚好将两霍尔器件套入而没有接触。圆筒顶部封口,从其顶部圆心处引一根塑料轴,固定于框架底部,使圆筒可绕中心轴自由转动。
通过这种方法,小磁条便可在地球磁场的作用下指示方向,由于此两磁铁之间的磁场强度比地球磁场强很多,因此霍尔器件能够探测到其周围磁场的变化,从而实现了对地磁信号的放大。

如右图所示霍尔器件A探测x方向的磁场,B探测y方向的磁场。设某一时刻磁场方向如右图所示,A、B探测到的磁场分别为-a和b。则单片机通过处理此二数据便可得到方位角θ的值,从而判定当前方位。右图中虚线箭头所指方向为磁场方向,即地磁南极方向,×轴正方向即为观察者面对的方向。
目前市面上有多种霍尔器件,但大多数灵敏度较低,考虑到地磁的磁感应强度较为微弱,我们慎重选用了UGN3503型霍尔器件。此霍尔器件灵敏度较高,而且低噪输出。由于此器件采集到的信息是连续变化的模拟量,不能被单片机直接处理,必须把这些模拟量转换成数字量后才能够输入到单片机中进行处理,因此我们选用了A/D转换器TLC 0832。TLC0832是串行通讯的8脚2路A/D转换器件,在功能上和体积上都有优势。我们还可以把51改成2051进一步缩小体积。而且串行通讯可以把它跟3503做到一起,这样数据传输不受距离限制。此转换器与处理器接口兼容性较好,同时又可以单机操作。在5V电压供应下,可以输入0~5V范围内电压。TLC0831有单一输入频道;TLC0832已经具有多重输入频道。连续的输出被配置到接口标准变化寄存器或微处理器。LCD液晶显示采用LCD1602。此液晶显示模块为2行输出,每行16个字符。
整个系统电路图如上图所示。
考虑到在实际应用时,磁场可能会由于外界抖动而在某一时间或某一位置产生不稳定的状况,我们在数据处理时,采取了在若干个数据间段点中取其平缓过渡数据的设计方法。单片机最后通过跳线选择处理结果输出方式。系统程序流程图如下图所示。
目前,大多数设备还不具备简单的方向识别功能。对于较复杂、较高档的设备,其所用定位设备专用性较强,一般不易于其它设备兼容,且设计结构较为复杂,费用较高。我们设计的小型方向定位器,可以满足一些小型的,对方向精度要求不高的设备需要。由于该设备开发成本较低,因此把该仪器应用于一些简单设备中后,可以在较小提高成本的条件下,为设备增加一项较为显着的功能,提高其性价比。


(转)
用UGN3503霍尔器件制作的数字指南针_电路图的更多相关文章
- BZOJ_1833_[ZJOI2010]count 数字计数_数位DP
BZOJ_1833_[ZJOI2010]count 数字计数_数位DP 题意: 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 分析: 数位DP f[i][ ...
- Vijos_1218_数字游戏_(划分型动态规划+环状动态规划)
描述 https://vijos.org/p/1218 给出n个数围成一个环,将其划分成k个部分,每个部分求和再对10取模,最后将每个部分的值相乘,求其最大值与最小值. 描述 丁丁最近沉迷于一个数字游 ...
- Day2_数字类型_字符串类型_列表类型_元组_字典_集合_字符编码_文件处理
数字类型: 作用:年纪,等级,薪资,身份证号等: 10进制转为2进制,利用bin来执行. 10进制转为8进制,利用oct来执行. 10进制转为16进制,利用hex来执行. #整型age=10 prin ...
- Day2_数字类型_字符串类型_列表类型
数字类型: 作用:年纪,等级,薪资,身份证号等: 10进制转为2进制,利用bin来执行. 10进制转为8进制,利用oct来执行. 10进制转为16进制,利用hex来执行. #整型age=10 prin ...
- C# 中的数字分隔符 _
编写 C# 代码时,我们时常会用到很大的数字,例如下面定义的变量: const long loops = 50000000000; 您能快速读出这是多少吗?是不是还是会有很多人把光标定位到最后一位,然 ...
- BZOJ_1833_[ZJOI2010]_数字计数_(数位dp)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1833 统计\(a~b\)中数字\(0,1,2,...,9\)分别出现了多少次. 分析 数位dp ...
- java实现登录的验证码和猜数字游戏_图形化界面
实验任务四 1,出现设计思想 (1)先定义文本框.密码框和验证码框的组件 (2)定义面板和按钮的个数 (3)定义公有的虚构方法,通过对象实例化来调用 (4)利用Random类来实现生成0-9的随机数 ...
- java实现多个数字求和_图形化界面
一,设计思想 1,通过简单的窗口实现多个数字的输入与输出. 2,可通过用户输入数字的数量来实现多个数字的求和. 3,定义整型数组变量number和字符串型数组变量integer,将输入的字符串变量赋给 ...
- 1.2python基础_数字类型_数字(Number)类型
一.整型(int型.整数) 整型 等价于C中的有符号长整型(long) 与系统的最大整型一致(如32位机器上的整型是32位,64位机器上的整型是64位), 可以表示的整数范围在[-sys.maxint ...
随机推荐
- 【无聊放个模板系列】BZOJ 3172 (AC自动机)
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...
- VO,DTO,DO,PO的划分
实体类(VO,DTO,DO)的划分 经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,VO对应 ...
- 内核request_mem_region 和 ioremap的理解
request_mem_region仅仅是linux对IO内存的管理,意思指这块内存我已经占用了,别人就不要动了,也不能被swap出去.使用这些寄存器时,可以不调用request_mem_region ...
- 【转】windows c++获取文件信息——_stat函数的使用
_stat函数的功能 _stat函数用来获取指定路径的文件或者文件夹的信息. 函数声明 int _stat( const char *path, struct _stat *buffer ); 参数: ...
- “段寄存器”的故事[转](彻底搞清内存段/elf段/实模式保护模式以及段寄存器)
http://blog.csdn.net/michael2012zhao/article/details/5554023 一. 段寄存器的产生 段寄存器的产生源于Intel 8086 CPU体系结构中 ...
- linux page cache和buffer cache
主要区别是,buffer cache缓存元信息,page cache缓存文件数据 buffer 与 cache 是作为磁盘文件缓存(磁盘高速缓存disk cache)来使用,主要目的提高文件系统系性能 ...
- js2word/html2word的简单实现
js2word/html2word的简单实现 以C#描述如下: StringBuilder sb = new StringBuilder(); sb.Ap ...
- UNIX 网络编程第五章读书笔记
刚看完 UNIX 第五章内容,我想按照自己的方式将自己获得的知识梳理一遍,以便日后查看!先贴上一段简单的 TCP 服务器端代码: #include <sys/socket.h> #incl ...
- foreach中引用 的问题
在工作中遇到 关于 php foreach 引用的一个问题 简单来说,如下代码 $arr=array('a','b','c' ,'d'); foreach($arr as $k=>&$v ...
- JDK版本1.6和6.0到底指什么
Both version numbers (1.6.0 and 6) are used to identify this release of the Java Platform. Version 6 ...