B题:金属物体探测定位器
摘要
本设计主要采用STC89C51以及STM32单片机实现了金属物体探测定位器。探测装置由数据采集发送、数据接收处理两大模块构成。其中下位机数据采集装置,以51单片为核心,而上位机—数据接收处理装置的MCU则采用的是STM32单片机。数据采集金属物体探头采用TI公司电感/数字转换器LDC1000,该探头在水平和竖直两组步进电机的驱动下实现在50cm*50cm的水平玻璃板上自动扫描,检测到金属后,给出定位指示和声光报警。 关键词:金属探测;LDC1000;步进电机;
i
1 系统方案
系统方案框图如图1-1所示。
串口接收数据LDC1000采集数据 MCU串口发送MCULCD显示RS232串口数据采集发送模块带动Y轴螺纹杆I/0口数据接收处理模块移动Y轴电机控制X轴螺纹杆X轴电机
图1-1系统方案框图
本设计方案的主体由数据采集发送模块、数据接收处理模块两大部分构成。如图1-1所示,上位机模块,也就是数据接收处理模块控制步进电机移动螺纹杆,而螺纹杆上的下位机,即数据采集模块,就会在50 cm*50 cm的玻璃板上移动,而在移动的同时,数据采集模块在采集数据,同时不断将数据发送给上位机进行处理。
数据采集发送装置的设计:数据采集模块在电机驱动下扫描玻璃板,并通过探头检测金属。探测器采用TI公司的LDC1000电感/数字转换评估板。该器件采用是非接触式的无磁芯技术—电感式感测,它提供了16位的谐振阻抗和24位的电感值,从而在位置感测应用中实现亚微米的分辨率。当LDC1000接近金属时,阻抗数值就会单调变化。发送装置的MCU只负责采集数据,并将数据通过串口发送给上位机进行处理,以判别是否接近金属并检测圆心。
数据接收处理模块的设计:数据接收部分主要采用STM32为核心。该模块主要任务为:接收采集模块发送的数据;对所接收数据进行处理判断;控制步进电机转动,然后步进电机带动螺纹杆,从而控制LDC1000探头移动。根据LDC1000的响应特性,在LDC1000靠近金属时检测数值会变大,这时上位机的MCU会根据数据做出判断,并发送具体的数据给步进电机做出相应的反应。通过算法找到金属圆心,并通过LED和蜂鸣器进行声光报警等。
1.1 步进电机驱动方案
方案一:恒电压驱动:单电压驱动是指在电机绕组工作过程中,只用一个方向
1
电压对绕组供电,多个绕组交替提供电压。该方法的优点:电路简单,元件少、控制也简单,实现起来比较简单。但同时它还有很明显的缺点:必须提供足够大的电流的三极管来进行开关处理,步进电机运转速度比较低,电机震动比较大,发热大。
方案二:采用成品的驱动电路驱动器ZD-8731-D,双轴步进电机驱动器,该方法简单,并且可同时驱动两台电机,但它必须有12V的电压以及较大的电流进行驱动,并且因为它是成品,所以花费较大。
综合以上两种方案,利用方案二,采用双轴步进电机驱动器ZD-8731-D,虽然说该方案花费较大,但实验室有完整的ZD-8731-D成品。而且方案一是一种比较老的驱动方式,现在基本不用。因此我们采用第二种方案来实现步进电机的驱动。需要注意的是因为方案二的ZD-8731-D不仅仅需要12V的电压,而且需要较大电流驱动,所以普通的12V电压源无法满足大电流的要求,所以这里采用是成品12V的开关电源—NES-35-12进行驱动。
1.2 显示部分设计方案
方案一:采用八位共阴极LED数码管进行显示,利用单片机串行口的移位寄存器工作方式,外接MAX7219串行输入共阴极显示驱动器,每片可驱动8个LED数码管。
方案二:采用点阵字符型LCD5110液晶显示,可以显示多行数字与阿拉伯字母等字符,随着半导体技术的发展,LCD的液晶显示越来越广泛的应用于各种显示场合。
综合以上两种方案,数码管显示驱动简单,但显示信息量少,I/O口使用量大;利用液晶显示可以工作在低电压、低功耗下,显示界面友好、内容丰富,综合考虑,选用LCD5110来实现显示功能。
2 部分硬件电路设计
2.1 扫描及数据采集部分
数据采集部分如图2-1所示,四个电机配合四根螺杆,带动数据采集板在50 cm*50cm的区域里移动,采集板放在3,4号螺杆上。具体的过程如下:电机1与电机2以相同的转速转动,带动螺杆1和螺杆2转动,因为1号螺杆和2号螺杆的转动,架在1,2螺杆上的3,4号螺杆所以也跟随移动,因此,采集板可以沿y轴上下移动。与此同时,随着,3,4号螺杆上电机3号和4号以相同转速转动,带动的采集板沿x轴运动。因此,便可做到采集板在区域内自动移动。
2
电机1数据采集板P-2S-1电机2螺杆3螺杆4S-3S-2S-4E-9电机3X轴S-2Y轴50cm*50cm区域S-5S-1
图2-1 扫描及数据采集部分
2.2 步进电机驱动电路
下图为步进电机完整驱动电路。ZD-8731-D为双轴步进电机驱动器,其可同时驱动两个电机,但需要12V电压,同时需要大电流。S-25-12为12V开关电源,输出电流可达到3A左右,满足ZD-8731-D驱动的需求。如图2-2所示,只需将步进电机的四线分别接入A+,B+,A-,B-,然后单片机在脉冲端输入脉冲波,在方向端输入1或者0(1为正转,0为反转)即可控制运动模式。
3
图 2-2 步进电机驱动电路
3 软件程序设计
下位机主要负责采集LDC1000所发送回来的数据和串口发送给上位机,波特率为9600。上位机的任务较多,控制着步进电机的转动,串口数据接收与处理和LCD显示控制,并进行声光报警。
3.1 下位机程序
图3-1为下位机发送端程序流程图:MCU首先对串口,定时器等等数据进行初始化,其次发送给LDC1000命令使其开始采集数据,并接收LDC1000返回的数据,与此同时,将数据通过串口发送给上位机吗MCU。
开始初始化接收LDC返回的数据通过串口发送LDC返回的数据结束
图3-1发送端程序流程图
4
3.2 上位机程序
下位机的程序较为复杂,如图3-2,首先,我们把50cm*50cm的区域虚拟成X轴,Y轴组成的二维区域,当STM32控制电机移动螺杆带动采集板移动时,就相当于在这个二维区域中移动,每当采集板移动到某个位置时,就会把坐标存入Flash。当按下按键,也就标志位置为启动位时,电机开始移动扫描。当MCU接收到串口发送的数据时,就会进入中断读取数值,然后判断数值。数值判断,我们主要设置固定的阀值,当数值超过阀值的时候,MCU则会控制步进电机进行搜索,定位。对于提供给电机脉冲,,由定时器进行计数,进中断进行I/O口翻转,然后输出对应脉冲。
开始电机定时中断进入串口中断进入初始化对应I/O口翻转存储坐标读取串口数值脉冲计数启动标志位判断串口中断退出启动不启动定时器中断退出启动电机硬币扫描程序
图3-2下位机程序流程图
4 测试方案与测试结果
测试环境
时间:2014年8月15日 温度:250C 测试仪器
电源,秒表,量尺 测试结果
5
(1) 1角硬币探测:探头按指定方式进入后,两分钟内可以完成定位,发出声光
报警,探头可定位于硬币边缘内部。
(2) 1元硬币探测:探头按指定方向进入后,两分钟内可以完成定位,发出声光
报警,探针与硬币圆心距离小于3毫米。
(3) 铁环探测:探头由按指定方式进入后,三分钟内可以完成定位,发出声光
报警,探针与硬币圆心距离小于5毫米。 综上,实现了题目要求的功能。
6
5 附录
上位机具体电路
、
图5-1 上位机电路原理图
7
图5-2 探测接收电路原理图
8
因篇幅问题不能全部显示,请点此查看更多更全内容