找回密码
 加入地震坛
搜索
热搜: 活动 交友 discuz
查看: 29741|回复: 71

地磁监测器制作直播

  [复制链接]
匿名  发表于 2011-4-8 19:07 |阅读模式
新开一个贴吧,将全面跟踪地磁监测器制作,欢迎大家参观提建议
发表于 2011-4-8 19:10 | 显示全部楼层
忘了登陆
器件准备:液晶屏
点评回复

使用道具 举报

发表于 2011-4-8 19:18 | 显示全部楼层
图片怎么没有呵呵,有了

CPU:

自制编程器:
点评回复

使用道具 举报

发表于 2011-4-8 19:19 | 显示全部楼层
图片怎么没有呵呵,有了

CPU:

自制编程器:
点评回复

使用道具 举报

发表于 2011-4-8 19:31 | 显示全部楼层
晕,还是没有,怎么搞??
点评回复

使用道具 举报

发表于 2011-4-8 22:31 | 显示全部楼层
附上C#的USB代码,供调试:

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace EQ
{
    class myUSB
    {
        [DllImport("kernel32.dll")]
        private static extern IntPtr CreateFile(
            String lpFileName,
            UInt32 dwDesiredAccess,
            UInt32 dwShareMode,
            IntPtr lpSecurityAttributes,
            UInt32 dwCreationDisposition,
            UInt32 dwFlagsAndAttributes,
            IntPtr hTemplateFile
            );

        [DllImport("Kernel32.dll")]
        private static extern bool ReadFile(
            IntPtr hFile,
            byte[] lpBuffer,
            uint nNumberOfBytesToRead,
            ref uint lpNumberOfBytesRead,
            IntPtr lpOverlapped
            );

        [DllImport("Kernel32.dll")]
        private static extern bool WriteFile(
            IntPtr hFile,
            byte[] lpBuffer,
            uint nNumberOfBytesToWrite,
            ref uint lpNumberOfBytesWritten,
            IntPtr lpOverlapped
            );

        [DllImport("kernel32.dll")]
        private static extern bool CloseHandle(
            IntPtr hObject
            );

        IntPtr hFile;

        private const UInt32 GENERIC_READ = 0x80000000;
        private const UInt32 GENERIC_WRITE = 0x40000000;
        private const UInt32 OPEN_EXISTING = 3;
        private const Int32 INVALID_HANDLE_VALUE = -1;
        private const int USB_WRITENUM = 8;
        private const int USB_READNUM = 8;

        private byte[] m_rd_data = new byte[USB_READNUM];
        public byte[] rd_data
        {
            get { return m_rd_data; }
            set { m_rd_data = value; }
        }
        private byte[] m_wr_data = new byte[USB_WRITENUM];
        public byte[] wr_data
        {
            get { return m_wr_data; }
            set { m_wr_data = value; }
        }

        public bool OnInitUSB()
        {
            hFile = IntPtr.Zero;
            string deviceName = string.Empty;
            deviceName = "设备地址";
            
            hFile = CreateFile(
                deviceName,
                GENERIC_READ | GENERIC_WRITE,
                0,
                IntPtr.Zero,
                OPEN_EXISTING,
                0,
                IntPtr.Zero
                );

            return hFile.ToInt32() == INVALID_HANDLE_VALUE ? false : true;
        }

        public bool USBDataRead()
        {
            uint read = 0;
            return ReadFile(hFile, m_rd_data, (uint)USB_READNUM, ref read, IntPtr.Zero);
        }

        public bool USBDataWrite()
        {
            uint written = 0;
            return WriteFile(hFile, m_wr_data, (uint)USB_WRITENUM, ref written, IntPtr.Zero);
        }

        public void CloseConnection()
        {
            if (hFile.ToInt32() != INVALID_HANDLE_VALUE)
            {
                CloseHandle(hFile);
                hFile = IntPtr.Zero;
            }
        }
    }
}
点评回复

使用道具 举报

发表于 2011-4-9 12:57 | 显示全部楼层
还是没搞懂怎么直接发图,从相册转到是可以
液晶屏


CPU:


自制编程器:
点评回复

使用道具 举报

发表于 2011-4-9 13:00 | 显示全部楼层
实验板


实验板+液晶
点评回复

使用道具 举报

发表于 2011-4-9 22:28 | 显示全部楼层
8号晚上写的程序


今天做了改进,可以显示磁偏角,报警显示在第二页上,暂时还没写好,先上第一页

点评回复

使用道具 举报

发表于 2011-4-10 14:46 | 显示全部楼层
楼主还是不能从com口输出?
点评回复

使用道具 举报

发表于 2011-4-10 17:29 | 显示全部楼层
回复 10# dosxp


可以的,加个串口芯片就行了---我会加上去的

我的思路是,仪器即可以连电脑,也可以脱离电脑独立工作。这样就不用一天到晚开着电脑了,没电脑安放也容易些,仪器自带报警器,可以翻看前边报警时的时间和各轴的磁场偏差值,我觉得比较直观
点评回复

使用道具 举报

发表于 2011-4-10 18:00 | 显示全部楼层
第二页程序基本完成,现在等待磁感应模块,组装硬件,然后再进一步调试


当No为0时,显示实际时间和各轴及磁偏角的偏差,如有报警,可以功过Up和Down键翻查各报警时的时间和各轴及磁偏角的偏差
点评回复

使用道具 举报

发表于 2011-4-10 18:16 | 显示全部楼层
回复  dosxp


可以的,加个串口芯片就行了---我会加上去的

我的思路是,仪器即可以连电脑,也可以脱 ...
震初探 发表于 2011-4-10 17:29


如果考虑脱离电脑,我建议安装一个无线模块,通过无线模块24小时连接家里的无线路由器,自动上传实时数据到网上的服务器进行汇总。
这个东西的魅力在于通过网络实现大范围的分布式检测,然后对各地数据进行函数拟合,推算异常点位置。
点评回复

使用道具 举报

发表于 2011-4-10 20:34 | 显示全部楼层
恩,想法不错,可是这一整套的软件体系和网络体系实在是个大工程啊
点评回复

使用道具 举报

匿名  发表于 2011-4-11 08:42
回复 13# dosxp


    如果用无线模块,是否考虑高空系在氢气球上,[因风筝不稳定],或低一点放在树上,那样在高空监测面积大,一个大社区或一个县城,少至一个村,尤其是克服身边的家用物品如移动的汽车、摩托、空调、电视、水管的杂散信号干扰,得到纯地磁信号。
发表于 2011-4-11 09:46 | 显示全部楼层
回复  dosxp


    如果用无线模块,是否考虑高空系在氢气球上,[因风筝不稳定],或低一点放在树上,那 ...
Guest from 111.161.10.x 发表于 2011-4-11 08:42



    这个玩大了吧

网络分布式检测,本身就可以抵消周围环境的意外干扰啊,不可能全国200个检测器身边同时有一辆重型卡车经过或者一个大功率电器开启……
点评回复

使用道具 举报

匿名  发表于 2011-4-11 18:54
回复 16# dosxp


    我是搞燃气的,知道城市遥感就用科研院热气球检测,与卫星遥感相比,各有利弊,因距离近。你说得有道理,我们没有部门支持,放不了热气球。再小的地震一个城市也得动起来。用HMC1022传感片[北京65元],你再买个万用表[35元],100元你就可以看3位数的地磁X、Y]轴数了,如3.23就相当于32.3毫高斯,3。13就相当于313.5 ,虽有偏差,整体数稳定。应该能观测地磁突变,月中旬[比如15日]的6、7级地震,下旬[比如23日]的近6、7级地震你就不用看磁针了。[要精度对齐在加一级放大2级更好]。总算做个土枪,在你和震初探没完成大炮的好设备之前,我没自食其言先给你一个交代或答复。
匿名  发表于 2011-4-11 20:19
回复 17# Guest from 121.18.127.x


    非常感谢你,另外你能做个实验吗?

请参照测震人老师做个磁针,拿个小磁铁,慢慢靠近磁针,看偏转1~5度时的距离,再用你做的仪表做同样的实验,看下灵敏度能否达到要求。
这数据对我选型比较有直接的参考,谢谢。

另外,你万用表最好用4位半的,3位半的就浪费了1022的80微高斯灵敏度
发表于 2011-4-11 21:38 | 显示全部楼层
回复  dosxp


    我是搞燃气的,知道城市遥感就用科研院热气球检测,与卫星遥感相比,各有利弊,因距 ...
Guest from 121.18.127.x 发表于 2011-4-11 18:54


46572d8cf635ced01883df0a6e287f69.jpg

呵呵。电子这方面你们是行家,我是学文科的,业余。好消息是,我找的重庆的一个电子行家,已经把磁传感器的USB板子搞出来了,大概200多块,接电脑。他正在完善,然后交给他的做软件的朋友写驱动和应用软件,我也会同步来搞应用软件。

在这里问一下,这里有没有精通matlab的兄弟,最好擅长多元多次拟合、图像小波变换。

另外,有没有哪位有free的国内双线服务器可以提供呢?
点评回复

使用道具 举报

匿名  发表于 2011-4-12 01:42
回复 18# Guest from 222.93.74.x
你说的实验条件不一致.测震人的装置很不错,用几百高斯的釹铁硼做针,地球0.5高斯.几毫高斯的弱磁使自由摆动的强磁发生作用,已经是很灵敏了.当针不一样大时,长短不一样时你是不知道多大具体数值的.测震人用的方式无法与地磁指数表示的方式一致,这可能是条条道路通罗马,不管用黑猫白猫,能抓准大耗子的是冠军猫.而准确做到四要素:时间地点震级深度在960万平方公里的中国大地上相对精度的不漏报不误报才是真冠军.所以不管是冠亚军你在路上拼搏大家就会为你喝彩.不管是鸟枪还是大炮,把日本鬼子赶出中国的人历史永不忘记.
匿名  发表于 2011-4-12 01:53
回复 19# dosxp


    祝大炮早日成功.能否做出地磁指数曲线观察一下全变化过程,用以摸出地震与地磁曲线的关系?这可是自己的一手数据.
发表于 2011-4-12 09:36 | 显示全部楼层
回复  Guest from 222.93.74.x
你说的实验条件不一致.测震人的装置很不错,用几百高斯的釹铁硼做针,地球0. ...
Guest from 117.79.69.x 发表于 2011-4-12 01:42



    我想,18楼的意思并非要跟测振人比个冠亚军吧,灵敏度是一个关键数据,大家不可能不关注这个对不对。

至于磁铁和磁传感器的优劣,我想应该是不言而喻的,磁铁属于模拟定性设备,磁传感器属于数字定量设备,成本上当然磁铁胜,性能上毫无疑问磁传感器胜。

另外,数字化之后最大的优点是可以网络分布式拟合,磁铁无法实现。
点评回复

使用道具 举报

发表于 2011-4-12 12:01 | 显示全部楼层
回复  Guest from 222.93.74.x
你说的实验条件不一致.测震人的装置很不错,用几百高斯的釹铁硼做针,地球0. ...
Guest from 117.79.69.x 发表于 2011-4-12 01:42


正如20楼所说的,你理解错了,我的意思是;
  测震人老师的东西已经有实际检验了,而我们试想的东西还没有真正的测试过,到底要多少的灵敏度才能感知到地震前地磁场的变化呢?1mGuass,100uGuass,10uGuass,还是很粗的10mGuass,100mGuass,我们不知道,也就是说 测震人老师的东西能感知到多少的地磁场变化而偏转呢?我们不知道。

所以这个实验很重要,如果磁针偏转了,而我们的仪表不跳或者只有最后一位数有变化,那就说明我们的灵敏度还不够,不要说数字的一定比机械的好或者说灵敏,那不一定的。
点评回复

使用道具 举报

发表于 2011-4-12 12:07 | 显示全部楼层
回复 19# dosxp


    很好,祝早日成功
点评回复

使用道具 举报

匿名  发表于 2011-4-12 12:19
回复 22# dosxp
我的意思是冠军不是指日可得的,真正的冠军是使我们人类不再出现日本几万人,汶川几万人,唐山几十万人不幸去世的悲剧.这也可能是地震局,[他们有各地地磁即时数据,卫星各种数据....].也可能来自民间,因他们不易此谋生,以最大的无思想束缚的热情投入.但有一点,只要敬业\爱业,有伟大的心去拼搏都是好样的人.愿每一位奋斗的人为这灿烂的目标添一块耀眼的砖,亮丽的瓦.望我们共同的愿望早日实现,但千里之行始于足下.望你的设备早日面世,你的观测\联网愿望早日实现,提前向你道一声祝贺,问候一声辛苦了.
匿名  发表于 2011-4-12 19:27
测震人,dosxp ,震初探,你们都是我学习的榜样,执着\热情\坦诚.但我觉得,当成功的预测了一次地震固然证实了自己努力的价值,感到欣慰,但一次大震自己漏掉了,或报了一次震离三要素差得远,甚至没震,不管你用什么方法预测,我们是否问了自己还有多大差距,自己还要作更大努力?今天,我买了地震地磁观测与研究的期刊.其实,我们的土造还有很大提升空间.对地震最有力的前兆反应,我想要震的地方首先是地应力的改变,无力推它,它不会震,它不会是一次大爆炸,因地震后的裂缝有平移甚至几米的交错.如果做个应力棒深插地下,那检测的相关性最强.测震人让我做的实验,我苦于没有[不要说1微高斯了]甚至1毫高斯的信号源都没有无法标定.如差10高斯以上,就精度太差了.所以计量设备在无精度之前只能进一步自己观察.我只能告诉你,一颗针靠近我用10几根皮筋挂的钕铁硼细棒和磁阻传感器旁,差异不大.两者比较难做一致.
匿名  发表于 2011-4-12 22:08
26楼本人补充说明:上文的10高斯我又打字敲错了,是差10毫高斯就精度太差了.实际情况是一根中等粗细缝衣针,靠近钕铁硼细棒或1022磁阻传感[比如5 公分]都能使他们动起来[数动\棒动].剩下的是想花多少钱做实验的事了,钱多容易一步到位,细波也能观察,钱少可能是地震反映相差一级吧.有了磁铁针或磁度计,仅是有了一样武器,尽管可能是土枪,成为出色的阻击手弹无虚发又是另一码事.其实还是人对地震观察\分析\认识深度和综合统筹的直觉加上付出的心血多少决定的.
匿名  发表于 2011-4-13 12:21
震初探,我是1022试验者.请教2问题.1标定源[如1公斤可用1立方分纯水近似标定]如何解决.2 如果解决不了,我买了厂家的电子罗盘[带xy轴数据的],你看怎样解决地磁指数曲线的实现,硬件软件都行.dosxp的方案很好,经济实惠,但需要时间等待.我想自己先买一个厂家的了,先做个属于自己的地磁指数曲线,做不成就当个场强级吧.等将来DOSXP联网加进去就是了.你如用磁阻传感器也会面临此问题,除非你们单位有或你计量院有人帮你.因我买过磁传,厂家答应给我这2次用户450元一个.这用1022做的,几年后坏了过保修期自己修也很容易.
发表于 2011-4-13 15:32 | 显示全部楼层
回复 28# Guest from 111.161.10.x


   我觉得 定标最好有个高斯计了,找朋友借个,或者嘿嘿,找个卖高斯计的店,然后准备一个磁性非常弱的小磁铁固定在一个塑料盒中,再用高斯计测几个面的值,记录下来,回去再用来校准你的仪器,注意地磁场的干扰,就是对准地磁场为0的方向测,呵呵。我将采用带数字输出的传感器,里面带了自动校准功能,比较方便。
  对于地磁的监控,正是我目前在做的东西,但我不知道你买的电子罗盘的输出的信号是什么格式的,采用什么样的通讯协议,如并口,串口,USB口,I2C,SPI,所以很难说清楚,我现在做的是串口的(呵呵,水平有限,串口比较简单),也可以通过串口转USB口,正在等传感器,另外PC软件也在写,当然我的目标是既可以连电脑工作,也可以脱离电脑,所以加了液晶显示,报警功能和按钮来设置工作参数
点评回复

使用道具 举报

匿名  发表于 2011-4-13 17:35
回复 29# 震初探
450元的是串口,是2轴可显示地磁的那种,不能生成地磁指数曲线.报警我还不需要,因为12号地磁大跳水仅对应日本6.1级,没大跳反而在缅甸发生7.4级.所以我只想看看自己的地磁指数曲线,因截图是安徽中国科技大的,地点不详.可能如DOXP怀疑,不知有无后修正或和谐了.如果地磁大跳大震,小跳小震那1938年以后就出现不了唐山汶川玉树悲剧了,可能测震还需多种指标配合.地磁指数它只是盲人摸象摸到一个指标.摸出全部才能判定大象是啥样子.
匿名  发表于 2011-4-14 09:26
回复 30# Guest from 221.194.177.x
地磁仪和地磁指数不尽一样。如果业余自制一个自己好用的的地磁指数曲线图,应选最小灵敏度10微高斯的探测传感器做探头。否则你只能观测大震。因指数反映变化量,举例来说,磁针指南,但强度增加多少减少多少低精度罗盘或磁针是反映不出来的。较远的地震也很难定位,比如智利地震。但作为当地的一种检测,还是不错的选择。
发表于 2011-4-14 10:25 | 显示全部楼层

10微高斯灵敏度要求太高了吧,探头难找,不知道要多少米,仪器放置也是个问题,模数转换器至少需要16位的,最好18位以上

先做个1毫高斯的试试再说吧,正在写角度计算的程序,单片机的运算能力实在不行啊,头疼ing...
点评回复

使用道具 举报

匿名  发表于 2011-4-14 13:57
回复 32# 震初探
The change in output of the transducer is converted to a 16-bit digital value using an internal A/D converter and microprocessor.
The output of the HMR is a digital serial.Measurement range, +2 Gauss with less than 1% error
• Resolution of 70μG/LSB
• Fast response time
• High sensitivity
• Data output serially using the RS-485 or RS-232
standard for serial input to most personal computers.The device is easy to use and has a user-selectable range of 9600 or 19200 baud.
的确需要16位,[用485或232.]1毫高斯的精度可就是100纳特了。地磁指数-50了,是50纳特吧,变化率地磁减了-50纳特[500微高]。所以你设计精度低了以后用1002磁传时还得改。说实在的,价值1000-至2000多元的磁场计自制是很费时间的,但你做好是很值的,买磁传原厂的7000多元。汇编我不灵,帮不了你,你辛苦了,电子罗盘与磁场计根本不在一个精度水平,你别看三轴的USB接口5843芯片仅150元,要注意它的精度可不是微高级,它是3毫高[300NT]!只能当电子罗盘。最后,标定是最初的定位,不要小视。很小磁铁都在高斯级,可能的用磁粉了。
匿名  发表于 2011-4-14 22:49
回复 33# Guest from 111.161.10.
震初探:
    传感器检验心得:当接好单正压12伏[电压高些幅度大,但极限12伏,别再高了,否则毁了磁传。]稳压电源时[+12伏-0伏]保证电压一直不变,你的磁阻传感器接4位半万能表,[不接线时表示数0一直不变],接上电以后,表示数的为数在4到9之间变化,与1到12之间变化,你要选1到12之间变化的,因数的距离越大,精度越高,变化范围很小,你不要用。就好像做的2个磁针,摆幅大的灵敏度高一样。只有选好的磁传,你才能得到好用的地磁指数曲线,否则大震才管用,小些的不管用就真不如用磁针了。
匿名  发表于 2011-4-14 22:54
回复 34# Guest from 121.18.127.x
不是为数是尾数。[更正]
发表于 2011-4-15 11:35 | 显示全部楼层
回复 34# Guest from 121.18.127.x


   谢谢你提供的数据,很有用,目前我500微高斯的传感器已经到了,作成1毫高斯灵敏度应该可以的,先试试再说了,另外软件和硬件部分以后可以移植到高精度系统中去,所以先搞出来,再慢慢提高
点评回复

使用道具 举报

匿名  发表于 2011-4-15 16:33
请别介意,北京中关村1022双轴单只卖[80微高斯]65元。如不理想你不妨把它做Z轴,要三轴已买不理想也没关系,可作个指南罗盘[粗精度大震也好用]。干这些免不了交学费,我就交了不少呢,回想起来毕竟比以前老练了。软件搞出来可自身的实力提高了,那最值。
匿名  发表于 2011-4-20 08:20
回复 36# 震初探
传感正常工作了吗,我把Z轴用低精度,X、Y轴用高精度已有结果,指数图上行2大格我的X、Y数也增加了整数2,我没算变化的小数。希望你做好这一步与科技大的地磁指数预报对照,只要曲线一致,那就成功了。自己做的最大优势就是可及时调整不断完善。软件可模仿并作适当修改你一定知道,一句句写太费时了,等你的好消息。
匿名  发表于 2011-4-20 20:45
回复 38# Guest from 111.161.10.x


    刚做完电路板的设计,我放弃了HMC5843,灵敏度太低了,5毫高斯,拿个小磁铁要接近1尺左右才有变化,远不如磁针灵敏,白买了
现在又买了几块高灵敏度的,和16位精度的数摸转换器,希望能提高到10uG以下,如果不行再用24位数摸转换器,不过电路板就更难设计了,
放张图吧,是我这一个多星期的劳动果实

地磁PCB.png
匿名  发表于 2011-4-20 23:22
回复 39# Guest from 222.93.74.x
不错,注意1你别忘了把消磁的置复位电路加上,否则像我一样用电容充电消磁那可就麻烦了。2不要用磁铁试,你要不停的消磁。亦可缝衣针,最大也别大过无磁小螺丝刀。电流大了我担心消磁铝带烧了。3因是直流低通把50HZ工频滤掉。
匿名  发表于 2011-4-24 18:21
回复 39# Guest from 222.93.74.x
土造测地磁装置,下一步设法生成有用的曲线。
javascript:;javascript:;
土造地磁仪一0001.JPG
土造地磁仪二0001.JPG
匿名  发表于 2011-4-24 22:34
非常不错,老兄电路做的好整洁啊,

我马马乎乎焊了下,正在调试呢,AD7705Z怎么两个通道读到的数值是一样的呢?

下面是我做的印刷板,有部分没作好,凑合下算了,过孔也不会,那位会的兄弟教下,不胜感激

024.JPG

反面

025.JPG
匿名  发表于 2011-4-25 12:01
回复 42# Guest from 117.81.140.x
首先将贴片电子芯片转换成管脚直插方式便于试验。法1,用转接插座,28针90元,16针45元,如常买还便宜不少,我是第一次。法2,用小钻在覆铜板打孔细心刀刻焊黄铜针或老电阻引线效果更好,因无铁磁。最多2小时搞定。然后在多孔试验板根据原理图布局点锡焊。第一次就实验也用印刷版以后调整还要再作,电脑制图是最终定型后再制版。只要了解直流放大电路,任何一款差分集成片子就会正常工作。如不太熟悉,就严格按成熟原理图几款中选一款自己喜欢且简洁的试就一定能成功。
匿名  发表于 2011-4-25 22:12
回复 42# Guest from 117.81.140.x
●符合RS-232标准,可进行单点读数。

    2.2 输入命令
三轴智能数字磁场计HMR2300可用来检测磁场的强度和方向,并可与计算机直接通讯以输出X、Y、Z三个轴分量。HMR2300采用三个独立的桥路来定向检测磁场的X、Y、Z在个分量,电桥输出端相应电压的变化可通过一个16位AD转换器转换为数字量。可输入命令组态数据(包括采样速率、输出格式、平均读数和零点偏移)。可利用电路板上的EEPROM来存储任意一项组态变化以便为下一次通电作准备。HMR2300的其它输入命令包括波特率设置、装置的ID号码设置和系列号码设置等,同时可选择50Hz和60Hz数字滤波器来抵消环境磁场造成的干扰。
HMR2300可以通过简单的命令与磁场计进行通讯,这些命令可通过标准键盘和任何通讯软件(如Windows中的超级终端)输入。表2为HMR2300的输入命令集。

表2 HMR系列智能磁阻传感器输入命令集
命  令        输   入        响  应        解    释
格式        *ddA
*ddB        ASCII ON
二进制 ON        ASCII输出读数BCD ASCII格式(出厂时默认)
输出格式为带符号的16位二进制数
输出        *ddP
*ddC
ESC        (X、Y、Z读数)
(X、Y、Z数据流)
(数据流停止)        输出一采样点的数据(出厂时默认)
按固定采速率连续输出数据
停止连续采样
采样速率        *ddR=nnn        OK        设置采速率:nnn=10,20,25,30,40,50,60,100,123,154
点/秒(出厂时默认为20bps)
置位/复位模式        *ddT
SPACE        S/R ON或S/R OFF
SET
RST        ON:自动的S/R脉冲(出厂时默认)
OFF:手动的S/R脉冲
空格键:单一形式的S/R:SET为置位脉冲
                       RST为复位脉冲
装置的ID号        *99ID
*ddWE*ddID=nn        ID=nn
OK        读装置的ID号(出厂时默认ID=00)
设置装置的ID,nn可从00至98
波特率        *ddWE
*99!BR=F        OK
波特率=9600
OK
波特率=19200        设置波特率为9600bps(出厂时默认)
设置波特率为19200bps
零点读数        *ddZR        零点ON后零点OFF        零点读数将存储现有读数,将其作为反向偏置,读取输出零磁场;下一次ZR命令将关闭这一命令(出厂时默认设置为OFF)
平均读数        *ddV        平均值ON或平均值OFF        按下式对当点X(N)进行平均:Xavg=X(N)/2+X(N-1)/4+X(N-2)/8+X(N-3)/16+...每次输入该命令将执行与上一次相反的命令(出厂时默认设置为OFF)
询部设置        *ddQ                 读设置参数(ASCII、POLLED、S/R ON、ZERO OFF、AVG OFF、ID=00、20bps)
注意:1.所有输入必须带回车,大小字母均接受,器件编号是十进制数00到99,99是通用编号,对所有器件均起作用;2.只有当COM设置为9600或19200波特率、1位停止位、无奇偶校验以及8位时,HMR2300才会响应。
2.3 数据格式
HMR2300的X、Y、Z三轴输出均为16位数字量,输出数据格式可以是带符号的16位数(符号位+15位数字),也可以是BCD ASCII码。通过“ddA”命令可选择ASCII格式;而通过“ddB”命令则可选择二进制格式。
按二进制格式输出的顺序是:X hi、X lo、Y hi、Y lo、Z hi、Z lo、回车。二进制格式只需传输7个字节。而BCD,ASCII格式虽然便于用户理解,但每次读取数据均需传送28个字节,这对采样速率有一跟制,表3所列是几种格式的参数选择方式。

表3 参数选择表
采样速率bps        ASCII码        二进制码        F3dB(Hz)        陷波频率(Hz)        命令输入速率(ms)
        9600        19200        9600        19200                       
10        yes        yes        yes        yes        17        50/60        20
20        yes        yes        yes        yes        17        50/60        20
25        yes        yes        yes        yes        21        63/75        16
30        yes        yes        yes        yes        26        75/90        14
40        数据无效        yes        yes        yes        34        100/120        10
50        数据无效        yes        yes        yes        42        125/150        8
60        数据无效        数据无效        yes        yes        51        150/180        7
100        数据无效        数据无效        yes        yes        85        250/300        4
123        数据无效        数据无效        yes        yes        104        308/369        3.5
154        数据无效        数据无效        数据无效        yes        131        385/462        3
HMR2300的二进制格式如下:(7字节)
XH XL YH YL ZH ZL(cr)
其中:XH表示X轴高字节,带符号;XL表示X轴低字节;(cr)为输入键,二进制码0D。二时制码在显示器上显示的是一些不可辨认的符号,但如果采用计算机进行读数,这种格式则是最佳格式。
ASCII格式如下:(28字节)
SH X1 X2 X3 X4 X5 SP SP SN Y1 Y2 Y3 Y4 Y5 SP SP SN Z1 Z2 CM Z3 Z4 Z5 SP SP<cr>
ASCII码在显示器上的显示为可阅读的带符号的十进制数,因此,ASCII码格式对用户读数是最佳格式。
在ASCII格式中,<cr>为输入键,其二进制码为0D;SP为空格键,二进制码为20;SN表示符号,如为负,二进制码为2D;如为正,则为20;CM为逗号:如果开始数不为零,其二进制码为2C;如果开始数为零,二进制码为20。

    2.4 输出采样速度及命令开绍
对于不同的输出采样速率,参数选择也有所不同,表3所列为HMR2300的参数选择表。
采样速率可通过“R=”命令在10~154bps之间设定。每一次采样输出的X、Y、Z读数可以采用二进制码或ASCII码输出,并可通过表2来综合选择数据格式和波特率。注意:当HMR2300以较高数据输出速率出现误读数时,可选择较低的数据速率。但用高速采样速率时,建议设置终端优先状态,因为这样可防止换行信号(LF)加入到人站数据中来,但同时它也将延缓数据接收速率,并有可能不能和输入数据流同步。
(1)输入信号衰减
被测的磁信号将根据采样速率的不同产生不同的衰减,表3中间时给出了不同采样速率对应的带宽(定义为3dB点),出厂时设定的20bps,对应的带宽为17Hz。HMR2300内部的数字滤波器包括带阻滤波器和低通滤波器,可以提供线性相应的响应,其传递函数具有陷波点(零点)。

    (2)命令输入速率
HMR2300限定了在不同采样速率下接收命令字节的时间。表3也给出了从发送命令到HMR2300正确地接收到命令的时间。合作键盘输入命令不会存在问题,但如果是从计算机程序中发出的命令,那么,时间过快可能会存在一些问题。
(3)置位/复位命令和平均值命令
置位/复位功能将产生一个4A的脉冲,这相录于100Oe的磁场,该磁场可以使每一个玻膜合金传感器重新确定磁化方向,以提供最大的输出灵敏度。这一电流脉冲由HMR2300内部产生,其典型耗电电流超过1mA,置位/复位命令(*ddT=S/RON)用于触发内部的开关电路以产生置位或复位脉冲。这一功能可用来消耗温度漂移所造成的影响,以保证传感器工作在最敏感的区域,但执行这个功能会带来其它噪声,可用取平均数的命令来消除或减弱(*ddV-AVG=ON)。取平均数功能相当于一个低通滤波器,能减少由于S/R的开关动作和环境磁场干扰产生的噪声,测量磁场强度不需要切换置位/复位电路。一个置位(或复位)单脉冲可将最大的灵敏度输出保持数月甚至数年。如果要关闭这种内部开关功能,可再次执行置位/复位命令(*ddT=S/R OFF)。这时传感器既可接受置位脉冲,也可接受复位脉冲,如果传感器暴露在强磁场下(大于20高斯),那么将需要再次复位以保证获得最大的输出灵敏度。
(4)装置的ID号
设定装置ID号的命令(*99ID=nn)将改变HMR2300的ID号,在执行这条命令之前需先允许写入命令(=ddWE)。在使用RS-485进行通讯时,该命令非常用,因为在网络上有不止一个HMR2300。ID=99是统一地址,可以同时和网络上的所有单元进行对话。
(5)零点读数命令(*ddZR)
该命令可将读取的一个磁场数值存入单片机中,该值将作为一个偏置量在进行以后的读数时被减去。零点读数命令可由另一次*ddZR命令或系统掉电来终止。当需要建立参考方向或在进行异常检测前将磁场调零时,这条命令非常实用。
(6)波特率命令
波特率命令(*dd! BR=F/S)主要用来设置高速(19200bps)或低速(9600bps)波特率。在执行该指令前需先执行写入命令(*ddWE)。

    (7)默认值设置命令和存储设置命令
默认值设置命令(*ddD)可以将HMR2300的所有参数强制设置为出厂参数。执行完该指令后再执行存储参数命令才可永久性地改变。使用存储设置命令(*ddRST)可将所有参数存入EEPROM。
(8)数据通讯
RS232信号是可同时进行单端单方向的发送和接收的全双工通讯信号。它的一路信号从PC(Tx)至HMR(Rx),另一路则从HMR(Tx)至PC(Rx)。当传送逻辑“1”时,Tx线和Rx线将驱动相对于地-7V的电压。而当传送逻辑“0”时,则将驱动+7V电压。由于这种信号的传磅依赖于绝对电压值,同时线路噪声和信号衰减也将使得传输距离受到限制,通常的传输距离为60英尺。
RS485信号是平衡的差动信号。当传送逻辑1时,Tx将比Rx线高1.5V;当传送逻辑0时,Tx将比Rx低1.5V。差动信号传输不是依赖于绝对电压而是依赖于电压差,因此,它将使信号对噪声具有较强的抑制能力。其总线长度可达4000英尺。需要说明的是,因为是平衡接口,因此在总线的两端都要接12Ω的终端电阻。
未命名.bmp 未命名.bmp
zhenchutan:以上清楚,是否可以不用编程了?
匿名  发表于 2011-4-25 22:49
回复 44# Guest from 20
    我明白了,AD 转换完以后,用串行接口还得接入单片机。可能你选的转换器带放大,就不用采集之前放大了。你先用表量一下,不接放大1011应在10毫伏输出,如果接上以后不行,是否需要信号阻抗或功率匹配,不行加级放大,这样脱离电脑电池供电就是便携地磁计。我又查了一下地震系统终端只要在一毫伏以下地磁探测就接近各县级的地震部门地磁检测灵敏度了,当初选高精度的方向还是明智之举。由于你是做工控接口,肯定很辛苦。不用太着急。现在中科院的地磁指数需专业老用户才可察看,可能怕大家议论纷纷,所以不太多的破费,实现8000元的设备还是很值的。祝你天天有收获。
发表于 2011-4-26 09:31 | 显示全部楼层
回复 44#
回复 45#

看你上面的图中就有单片机,所以首先要对单片机编程,这样才能使系统正常工作,然后是单片机和PC的通讯,PC软件得到单片机传来的数据绘制成图表
传上我的原理图,一起截看不清楚,分成4部分

传感器部分

传感器部分


AD转换+USB接口

AD转换+USB接口


单片机+液晶

单片机+液晶


按钮+报警

按钮+报警
点评回复

使用道具 举报

发表于 2011-4-26 09:41 | 显示全部楼层
HMC1002太贵了,250大洋啊,
电路基本能工作了,拿个小螺丝刀靠近HMC1002,数据变化很大,
不过不知道是不是电器干扰,最后一位数总是变化,继续调整看看
点评回复

使用道具 举报

匿名  发表于 2011-4-26 11:07
回复 47# 震初探
带连线的多孔板[像筛子一样],不用打孔试验好用。过孔手电钻或把螺丝刀烧退火磨尖再火上烧红迅速在凉水里沾火后就自制成钻孔三棱锥,都可以在覆铜板上做孔。不用螺丝刀去试1002,我只要偏1度角数值就变3个数,螺丝刀磁力变化太大了,用缝衣针也行。1002你再买应不高于205元,商家卖贵了。注意烙铁焊之前用试电笔或表量一下,220伏很容易击穿芯片,最好烙铁接一根地线到3相插头可靠地端,试电笔无显示为可靠。
匿名  发表于 2011-4-26 11:19
回复 48# Guest from 121.18.127.x 把磁阻XY所输出的连线每根用一个0.1-1缪电容接地在放大或带放大的模数芯片输入端,可别让它的连线自激,我用放大就在反馈电阻并列入一个0.1谬的电容,这样稳定得多,因我们取信号接近直流,频率不高。
发表于 2011-4-26 11:54 | 显示全部楼层
回复 48# Guest from 121.18.127.x


    我说的过孔是孔的金属化,双面缚铜板两面都有导线,经过孔的金属化把两面需要连接的导线连接起来,
没有元件的地方到可以用铜丝上下都焊起来,有元件的地方可就不好焊了

  洞洞板连接少点的元件还可以,东西多了麻烦了,飞线一大堆,
现在印刷板作好了,基本也焊好,晚上上个图

并电容可以试试,谢谢
点评回复

使用道具 举报

发表于 2011-4-26 23:38 | 显示全部楼层
你们的电子技术和单片机c语言都写的很好!  地磁只是研究前兆的单方面, 试想有收音机会用霍耳元件来做接收磁棒天线吗? 如果你对中波调幅收音机很了解的话.  为何有些动物对前兆有反应?  我们应该从前兆有哪些现象去研究, 之前我也用霍耳元件做过,效果不好, 温飘和接收反映速度跟不上, 前兆有时是一瞬间的. 线圈,磁,电三者是形影不离的,也是最真实的反应,无源器件,特别是要让空气流畅,前兆反应才明显.
点评回复

使用道具 举报

发表于 2011-4-28 08:01 | 显示全部楼层
回复 51# xiangdan


"试想有收音机会用霍耳元件来做接收磁棒天线吗? ",没理解是什么意思,要接收的是什么信号,要得到的是什么信号,用霍耳元件来做接收磁棒天线有什么好处?   霍耳元件很便宜,但灵敏度能达到要求吗,一般灵敏度为1~5mV/高斯,对于弱磁场来说好象响应不够好。
    一起探讨,愿为地震事业出点力
点评回复

使用道具 举报

匿名  发表于 2011-4-28 09:44
回复 51# xiangdan霍尔元件既当不了磁棒也当不了磁阻传感器。它对强磁有效,对空间电磁波和地磁检测无用,仅用于自动化,仅用于自控、强电传感。磁阻的特长是测磁[接收磁信号],磁棒的特长是提高螺线管的Q值用于感应电磁波。前者是法拉第本质的应用,后者是麦克斯韦本质的应用。动物异常主要是震前地磁、地声、地热引起。电磁波是慢性致癌物,君不见电视发射塔周围的人无惊恐出逃想象么。地磁检测怕磁屏蔽,电磁波怕导电体屏蔽。冬天窗户密闭的室内不影响接收,和空气流通无关,和遮挡有关。不知XIANGDAN是否满意此答案。顺便问一下二位高手,频率1赫兹的时长/电压幅度图电脑声卡不能无损记录并显示,不用模数采集卡原理只能用钟表齿轮式记录仪吗,有无廉价省事方法可替代?震初探能否用MP3内的改动开发?因你对模数、微处理很在行。
发表于 2011-4-28 13:09 | 显示全部楼层
因为一般声卡都是一个交流设备,它并不能正确地输出和录入直流信号,而且一般声卡在20Hz以下就有严重衰减。即使像8738这样低频特性好的声卡,还是不能直接录制直流信号,因为它的输出输入端都含有隔直电容。
  实验表明8738的内核是支持直流信号处理的(其它常见的声卡都不支持),在WIN98下可以正确处理直流信号(不过在WIN2000和WINXP下一般信号的录制都有问题,更别提直流了。笔者至今尚未找到在WIN2000和WINXP下反应良好的驱动)。只要将其输出输入端的隔直电容换成100欧电阻,然后将地端断开接到1/2VCC电压,即可输出和输入直流信号。改接前后的电路如图所示,为了简便,只画出一声道。

  改接前(如下图)
1.jpg

  改接后(如下图)

2.jpg


  这是改动前的8738声卡录制的0.5Hz三角波。(如下图)

3.jpg

  这是改动后的8738声卡录制的0.5Hz三角波。(如下图)

4.jpg

  能够正确处理直流信号,就可以对一些变化缓慢的信号进行测控,例如直流电压、温度、湿度、位置、压强、压力……等等,只要用合适的传感器将变换后的电信号输给声卡即可。这样可以极大地扩展该虚拟仪器系统的用途。
点评回复

使用道具 举报

匿名  发表于 2011-4-28 14:54
回复 54# xiangdan
谢谢XIANGDAN的无私奉献。为什么对1赫兹以下的信号关心,源于西方地震理论有地震时地球自由振荡一说,甚至验证用智利大地震检测出绕了地球3圈的次声波。波长早已超过几秒。接近直流信号。北京昌平次声三点阵专业观测台和天津静海专业地磁观测台都有震前预兆的收获。其实我们不难看出,专业队的不再论坛发表不等于专业队不行。他们为正式预报地震三要素的指标要求困扰。他们不能预报不等于预测没有收获。所以我们的有质量装置多些是有必要的。
发表于 2011-4-28 17:00 | 显示全部楼层
磁阻可以接收磁场的缓慢变化,但次声波怎么接收呢?话筒我想肯定是不行的
点评回复

使用道具 举报

发表于 2011-4-28 17:48 | 显示全部楼层
回复 56# 震初探


    你好!我在网看到用"单片机制作的高精度数显计数器的图",还有源码, 做出来就是没显示,不工作. 想请你帮忙看看哪里出问题了?

电路图是这样的,单片机复位9脚我也接了,图中是没有标明9脚。还有就是31脚?接高或接低,我试过都不行。

aaa.jpg


源码我生成了HEX文件,没有提示错误,烧写好后装上电路中,LED还是没有显示。

------------------------------------

;6位数显计数器源程序
;计数脉冲从Int0端输入,
         org 0000H
  ajmp main
  org 0003h
  ajmp into
  org 0013h
  ajmp int01
  org 001bh
         ajmp tt0
  org 0020H
tt0:     mov th1,#26h
         mov tl1,#0fch
         inc 3ah
         mov a,#05h
         cjne a,3ah,ttk
  cpl f0
  mov 3ah,#00h
ttk:     reti
int01:   clr ex0
         mov slaw,#0a0h        ;将计数值、设定值、倍率值共15个数据写入AT24C04以
                               ;20H单元开始的15个单元中
         mov subadr,#20h
         mov numbyt,#15
         lcall wrnbyt
return:  ajmp $
         reti
into:    clr ex0               ;关int0中断
  push psw
  push acc
com:     clr c
         mov a,55h
  subb a,50h
  jz km1           ;设定值与计数值最高位相等,转KM1比较下一位
         jnc kk           ;设定值最高位大于计数值最高位,转KK计数值累加
         sjmp km3         ;设定值最高位小于计数值最高位,转KM3计数停止,输出位P0。0有效
km1:     mov a,56h
  subb a,51h
  jz km2
  jnc kk
  ajmp km3
km2:     mov a,57h
         subb a,52h
  jz km3
  jnc kk
km3:     clr p0.0         ;使输出位有效
         clr 20h          ;使计数到标志位为零
         pop acc
  pop psw
  reti             ;中断返回
         ajmp main1
kk:      mov r7,#5h
         mov r0,#50h
  mov r1,#5ah
BCDA:    MOV A,R7             ;多字节BCD码加法,计数值与倍率值相加
         MOV R2,A
         ADD A,R0
         MOV R0,A
         MOV A,R2
         ADD A,R1
         MOV R1,A
         CLR C
BCD1:    DEC R0
         DEC R1
         MOV A,@R0
         ADDC A,@R1
         DA A
         MOV @R0,A
         DJNZ R2,BCD1
  pop acc
  pop psw
         setb ex0                ;开int0中断
  reti                    ;中断返回
  org 0090h
       vsda equ p0.7
         vscl equ p0.6
         mtd equ 50h
         mrd equ 50h
         slaw equ 3fh
         slar equ 4fh
         numbyt equ 3eh
         subadr equ 4eh
main:    mov slaw,#0a0h       ;将AT24C04中20H单元开始的计数值、设定值、倍率值共15个字节数据读出,
                              ; 放在单片机以50H为首址的15个单元中
         mov slar,#0a1h
         mov subadr,#20h
         mov numbyt,#15
         lcall wrnbyt
         mov sp,#60H              ;设置堆栈指针
  mov tmod,#10H            ;初始化T1为定时器,工作于方式1
  mov th1,#26h
  mov tl1,#0fch
  setb it0                 ;it0=1 ,INT0为边沿触发方式
  SETB IT1                 ;it1=1 ,INT1为边沿触发方式
  mov ip,#01h              ;px0=1 INT0定义为高优先级
  SETB F0
         setb 20h
  mov ie,#8dh              ;Ex0=1,ex1=1,et1=1,ea=1
         mov 3ah,#00h             ;T1定时倍数清零
  mov 3bh,#00h          ;键码清零
  mov 3ch,#00h          ;AN4键序清零
  mov 3dh,#00h          ;AN3键序清零
  mov 39h,#0ffh         ;第二位小数点灭
main1:   mov 30h,50h           ;计数值显示程序
         mov 31h,51h
         mov 32h,52h           ;装载计数值
         mov 3dh,#00h
         acall chanf
         acall disp            ;调用显示子程序,显示计数值
         mov a,#04h
         cjne a,3bh,an1        ;AN4键未被按下
  lcall keyw
         inc 3ch               ;AN4键序加1
         ajmp main2
an1:     mov a,#01h
         cjne a,3bh,main1      ;AN1键未被按下,继续显示计数值
         lcall keyw            ;AN1键被按下,计数值清零
         mov 50h,#0h
         mov 51h,#0h
         mov 52h,#0h
         mov 53h,#0h
         mov 54h,#0h
         jb 20h,an11
  setb ex0                ;开中断
  setb p0.0               ;置P0。0为高电平
  setb 20h
an11:    ajmp main1
main2:   SETB TR1                ;开启定时器1
         mov 30h,55h             ;显示设定值
         mov 31h,56h
  mov 32h,57h
         mov 3dh,#01h
         acall chanf             ;调用BCD码地址分配程序
main2a:  acall disp              ;调用显示子程序
         mov a,#04h
  cjne a,3bh,dx0         ;AN4键第二次被按下吗?没有,转DX0
  lcall keyw
  inc 3ch
  ajmp main3             ;AN4键第二次被按下,转倍率设定程序
dx0:     mov a,#03h
         cjne a,3bh,set1
  lcall keyw             ;AN3键被按下
  inc 3dh                ;AN3键序加1
  mov a,#07h
  cjne a,3dh,set1
  mov 3dh,#01h
set1:    acall dset
         ajmp main2a
main3:   mov a,48h        ;把设定值以BCD码形式存入55H、56H、57H
         swap a
  orl a,47h
  mov 57h,a
  mov a,4ah
  swap a
  orl a,49h
  mov 56h,a
  mov a,4ch
  swap a
  orl a,4bh
  mov 55h,a
         mov 30h,5ch        ;倍率设定程序
         mov 31h,5dh        ;装载倍率值
         mov 32h,5eh
         mov 3dh,#02h       ;AN3键序初始化为02
  mov 39h,#7fh            ;第二位小数点亮
         acall chanf
main3a:  acall disp
         mov a,#04h
         cjne a,3bh,dxx0       ;AN4键第三次被按下吗?没有,转DXX0
         lcall keyw
         inc 3ch
  ajmp main4            ;AN4键第三次被按下,转数据存贮程序
dxx0:
         mov a,#03h
         cjne a,3bh,set2
  lcall keyw           ;AN3键被按下
  inc 3dh              ;AN3键序加1
  mov a,#07h
  cjne a,3dh,set2
         mov 3dh,#02h
set2:    acall dset
         ajmp main3a
main4:   mov 39h,#0ffh    ;第二位小数点灭
         clr tr1          ;关定时器1
  setb f0           ;置F0为1
         mov a,48h        ;把倍率值以BCD码形式存入5aH--5EH
         swap a
  orl a,47h
  mov 5eh,a
  mov a,4ah
  swap a
  orl a,49h
  mov 5dh,a
  mov a,4bh
  mov 5ch,a
  mov 5bh,#0h
  mov 5ah,#0h
         mov slaw,#0a0h        ;将50H-5EH共15个数据写入AT24C04以20H单元开始的15个单元中
         mov subadr,#20h
         mov numbyt,#15
         lcall wrnbyt
         ajmp main1
chanf:   mov a,32h             ;BCD码显示用地址分配程序
  anl a,#0FH
  mov 47h,a
         mov a,32h
  swap a
  anl a,#0FH
  mov 48h,a
         mov a,31h
  anl a,#0FH
  mov 49h,a
         mov a,31h
       swap a
  anl a,#0FH
  mov 4ah,a
         mov a,30h
  anl a,#0FH
  mov 4bh,a
         mov a,30h
  swap a
  anl a,#0Fh
  mov 4ch,a
  ret
disp:                          ;显示子程序
         mov dptr,#tab
         mov a,47h                  ;显示左起第6位(个位)
         mov r3,3dh
  cjne r3,#06h,dd1           ;AN3键序不为6,直接显示该位值
dk1:     jb F0,DD1                  ;F0为1,显示该位值
  mov a,#0ffh                ;F0为0,该位不显示,以达到该位闪烁效果
  sjmp dd2
dd1:     movc a,@a+dptr
dd2:  mov p1,a                 ;送段码
  clr p2.0                 ;开个位
  jb p2.7,dsp1             ;未按键转下一位(十位)
  acall del1
  jb p2.7,dsp1
         ajmp key1                ;按键转置AN1键码
dsp1:  acall dll
d1:  setb p2.0
         mov a,48h                ;显示左起第5位(十位)
         mov r3,3dh
         cjne r3,#05h,dd3
dk2:     jb F0,DD3
  mov a,#0ffh
  sjmp dd4
dd3:     movc a,@a+dptr
dd4:  mov p1,a
  clr p2.1
         jb p2.7,dsp2
  acall del1
  jb p2.7,dsp2
  ajmp key2
dsp2:  acall dll
d2:  setb p2.1
         mov a,49h
         mov r3,3dh
         cjne r3,#04h,dd5
dk3:     jb F0,DD5
  mov a,#0ffh
  sjmp dd6
dd5:  movc a,@a+dptr
dd6:  mov p1,a
  clr p2.2
         jb p2.7,dsp3
  acall del1
         jb p2.7,dsp3
  ajmp key3
dsp3:  acall dll
d3:  setb p2.2
         mov a,4ah
         mov r3,3dh
  Cjne r3,#03h,dd7
dk4:     jb F0,DD7
  mov a,#0ffh
  sjmp dd8
dd7:     movc a,@a+dptr
dd8:  mov p1,a
  clr p2.3
         jb p2.7,dsp4
  acall del1
  jnb p2.7,key4
dsp4:  acall dll
d4:  setb p2.3
         mov a,4bh
         mov r3,3dh
  cjne r3,#02h,dd9
dk5:     jb F0,DD9
         mov a,#0ffh
  sjmp dd10
dd9:  movc a,@a+dptr
dd10:  anl a,39h
         mov p1,a
  clr p2.4
  acall dll
  setb p2.4
  mov a,4ch
  mov r3,3dh
  cjne r3,#01h,dd11
dk6:     jb F0,DD11
  mov a,#0ffh
  sjmp dd12
dd11:  movc a,@a+dptr
dd12:  mov p1,a
  clr p2.5
  acall dll
  setb p2.5
  ret
key1:    mov 3bh,#01h           ;保存AN1键码
         ajmp d1
key2:    mov 3bh,#02h
         ajmp d2
key3:    mov 3bh,#03h
         ajmp d3
key4:    mov 3bh,#04h
         ajmp d4
keyw:    mov 3bh,#00h             ;键等待释放程序
         lcall disp
         mov a,3bh
         jnz keyw
         lcall disp
         mov a,3bh
         jnz keyw
         ret
dset:    mov r3,3dh                ;设定子程序
         cjne r3,#01h,dx2          ;AN3键序不为1,转DX2
         mov r4,3bh
         cjne r4,#02h,dx11         ;AN3键序为1,但AN2键未被按下
         lcall keyw                ;AN2键被按下,等待键释放
         inc 4ch                   ;第一位的数值被更改(加1)
         mov r5,4ch
         cjne r5,#0ah,dx11         ;使该位的数值可在0--9之间随意设定
         mov 4ch,#00h
dx11:  ajmp dx
dx2:     mov r3,3dh
         cjne r3,#02h,dx3
         mov r4,3bh
         cjne r4,#02h,dx12
         lcall keyw
         inc 4bh
         mov r5,4bh
         cjne r5,#0ah,dx12
         mov 4bh,#00h
dx12:  ajmp dx
dx3:     cjne r3,#03h,dx4
         mov r4,3bh
   cjne r4,#02h,dx13
  lcall keyw
  inc 4ah
         mov r5,4ah
  cjne r5,#0ah,dx13
  mov 4ah,#00h
dx13:  ajmp dx
dx4:     cjne r3,#04h,dx5
         mov r4,3bh
   cjne r4,#02h,dx14
  lcall keyw
  inc 49h
         mov r5,49h
  cjne r5,#0ah,dx14
         mov 49h,#00h
dx14:  ajmp dx
dx5:     cjne r3,#05h,dx6
         mov r4,3bh
   cjne r4,#02h,dx15
  lcall keyw
  inc 48h
         mov r5,48h
  cjne r5,#0ah,dx15
  mov 48h,#00h
dx15:  ajmp dx
dx6:     cjne r3,#06h,dx
         mov r4,3bh
   cjne r4,#02h,dx16
  lcall keyw
  inc 47h
         mov r5,47h
  cjne r5,#0ah,dx16
  mov 47h,#00h
dx16:  ajmp dx
dx:  acall disp    ;调用显示子程序
         ret
dll:     MOV R7,#01fH
DL1:     MOV R6,#1fH
DL2:     DJNZ R6,DL2
         DJNZ R7,DL1
  RET
DEL1:    MOV R7,#0aH
DEL1A:   MOV R6,#2eH
DEL1B:   DJNZ R6,DEL1B
         DJNZ R7,DEL1A
         RET
DEL2:    MOV R7,#0AH
DEL2A:   MOV R6,#2DH
DEL2B:   DJNZ R6,DEL2B
         DJNZ R7,DEL2A
         RET
tab:     DB 0C0H,0F9H,0A4H,0B0H
        DB 99H,92H,82H,0F8H
        DB 80H,90H
StA:    setb vsda     ;I2C读写程序模块,启动I2C总线
        SETB  VSCL
        NOP
        NOP
        CLR VSDA
        NOP
        NOP
        CLR VSCL
        RET
STOP:   CLR VSDA     ;停止I2C总线
        SETB VSCL
        NOP
        NOP
        SETB VSDA
        NOP
        NOP
        CLR VSCL
        RET
MACK:   CLR VSDA     ;快速应答位
        SETB VSCL
        NOP
        NOP
        CLR VSDA
        SETB VSCL
        RET
MNACK:  SETB VSDA     ;发送非应答位
        SETB VSCL
        NOP
        NOP
        CLR VSCL
        CLR VSDA
        RET
CACK:   SETB VSDA      ;应答位检查
        SETB VSCL
        CLR F0
        MOV C,VSDA
        JNC CEND
        SETB F0
CEND:   CLR VSCL       ;子程序结束,使VSCL=0
        NOP
        RET
WRBYT:  MOV R0,#08H     ;发送一个数据字节
WLP:    RLC A
        JC WR1
        AJMP WR00
WLP1:   DJNZ R0,WLP
        RET
WR1:    SETB VSDA
        SETB VSCL
        NOP
        NOP
        CLR VSCL
        CLR VSDA
        AJMP WLP1
WR00:   CLR vsda       ;发送“0”程序段
        SETB VSCL
        NOP
        NOP
        CLR VSCL
        AJMP WLP1
RDBYT:  MOV R0,#08H     ;从SDA线上读取一个数据字节,8位数据长度入R0
RLP:    SETB vsda       ; 置 VSDA为输入方式
        SETB VSCL       ; 使VSDA上数据有效
        MOV C,vsda
        RLC A
        CLR VSCL        ;使VSCL=0,可继续接受数据位
        MOV R2,#10H
        DJNZ R2,$
        DJNZ R0,RLP     ;8位读完否?未完转RLP
        RET
WRNBYT: MOV R3,NUMBYT    ;发送几个字节数据
        LCALL STA
        END
点评回复

使用道具 举报

发表于 2011-4-28 21:23 | 显示全部楼层
回复 57# xiangdan


    你好,我只会C语言,汇编看了就头大,我帮你用C语言编个,还有电路总觉得怪怪的,我画个再贴上来,
你也可以留个联系方式,便于交流
点评回复

使用道具 举报

发表于 2011-4-28 22:02 | 显示全部楼层
89C52的复位必须接10K电阻到地,接10uF电容到VCC,
31脚必须接VCC

为了便于编程用独立按键,分别接89C52的P3.4,P3.5,P3.6,P3.7,

计数器.jpg
点评回复

使用道具 举报

发表于 2011-4-28 22:41 | 显示全部楼层
回复 59# 震初探

看了你发给我的图,很好! 你有真材实料, 佩服! 人才啊! 下面是我的邮箱. 有空多多交流!   白天我要上班,晚上8:00 才能到家.
    xiangdan2012@qq.com
点评回复

使用道具 举报

匿名  发表于 2011-4-29 01:38
回复 56# 震初探
次声波传感器有3种形式,1电容式,2光纤式3电感式。可惜业余自制我们难以实现。探测0.01赫兹的次声必须要有好的材料。成品价格上万。话筒好的极品也在20赫兹以上。所以次声和可听到的声差别挺大。
发表于 2011-4-29 08:59 | 显示全部楼层
实际上,只要后续的放大电路采用直流放大器,次声波是可以用电容话筒检测到的。倒是超声波,频率太高,极片的振动速度跟不上声压的变化速度,很难用普通话筒检测到。  我做过试验,用一本书来回慢慢扇动,都能看到波形,人的移动也能看到波形,空气有变化也能看到波形,对环境的要求很高,才能看到我们想要的次声波。
点评回复

使用道具 举报

匿名  发表于 2011-4-29 20:09
焊接完芯片
226.JPG
匿名  发表于 2011-4-29 20:12
接上液晶屏
227.JPG
匿名  发表于 2011-4-29 20:15
接上电源,呵呵数据出来了,未校准的地磁强度,
228.JPG
发表于 2011-4-29 23:56 | 显示全部楼层
祝贺+恭喜试验成功! 费了不少功夫啊!心情一顶很欣喜!
点评回复

使用道具 举报

匿名  发表于 2011-4-30 00:30
回复 65# Guest from 117.81.134.x

16为转换器发挥了作用,5位数。祝早日成功。
匿名  发表于 2011-4-30 01:00
回复 62# xiangdan [/b你看到的煽动如已用频谱仪显示出稳定的频谱,还要远离它做实验。因电路不是可靠的多阶低通滤波0.01-20赫兹,会有干扰。幻象电源的1000元保证质量的专业话筒,它的频响曲线实测20赫兹都要衰减百分之15。5赫兹就剩不到百分之10信号,1赫兹就没有了,不妨再分析一下。如果你显示的是20赫兹刚刚无法听的高频点次声还有可能。自制次声传感器有材料也许可能。它的电容材料表面积应不小于一块月饼,电感式的应像新疆音乐伴奏的手鼓那么大,这才能考虑1赫兹以下的次声波。心脏传感属震动传感不是次声,1赫兹没问题。所以测实震都用加速度传感。
匿名  发表于 2011-5-7 00:52
回复 67# Guest from 221.194.177.x

补充说明,做到这一步最好能和数字存储示波器公用一板实现双功能,这样就成了热门的东西了,就是自用也很方便。好东西总会有好用场。
匿名  发表于 2011-5-20 23:50
回复 57# xiangdan
我买了STC12C5410AD芯片,你如接触过,我请教如何使用电脑串口对它直接编程,STC好掌握吗?不了解就不麻烦了。
匿名  发表于 2015-6-21 00:28
还是11年5月的帖子,不知道现在情况怎么样了,我已经采用新方法监测地磁了,方法更简单,也更精确
发表于 2015-6-21 01:22 | 显示全部楼层
回复 71# Guest from 221.178.189.x


    那就介绍介绍啊。
不要告诉大家,你的新方法怎么准确。这里就是大家讨论而已。
点评回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入地震坛

本版积分规则

Archiver|小黑屋|地震坛 ( 京ICP备14033744号 )

GMT+8, 2024-5-3 09:52

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表