版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、全自动显微镜光度计数据采集和控制系统研制摘要本设计围绕全自动显微镜光度计产品的升级换代,对hy4型全自动显微镜光 度计的数据釆集和控制系统进行了改造。为全自动显微镜光度计捉供了新的数据 采集及控制系统及可供调用的底层软件。整个过程分为数据采集卡的选择、控制 系统的研制和模拟输出口动调零与数据采集及控制系统底层软件的开发三大部 分。数据采集卡的选择是将原自研的数据采集卡,根据全自动显微镜光度计对数 据采集、自动调零、程控增益和16路数字量输出的需耍,进行相关资料调研,最 终采用了瑞博华公司的pci总线接口的ad7200h数据采集卡。该采集卡a/d采 集精度更高、速度更快,带有d/a输出,具有程控
2、增益和16路i/o输出口。步进电机控制系统的研制,省去了原自研的步进电机控制板,改为通过数据 采集卡上的16路数字量输出口,毎四路控制一个步进电机的方案。经过设计的张 动电路分别对4个步进电机进行控制。为此又研制了与采集卡数字量输出口配套 的步进屯机功率放人驱动器。底层软件开发主要是把原dos下运行的底层软件改编成用vb编写的与新硬 件相匹配的能够在windows k运行的软件。在本设计屮只对数据采集、步进电机 控制和模拟输入自动调零模块等程序分别进行编写。关键词:数据采集;步进电机驱动器;编程abstractthe main aim of this design is to update a
3、nd improve the properties of the automatic microscope-photometric by changing the date acquisition system(daq) and controlled system of the automatic microscope-photometric of hy4 type the whole project is made up of three parts including choosing daq device and driving stepper motor and zeroing out
4、put analog .the part of choosing daq is processed according to the requires of the automatic microscope-photometric. the requires include daq, auto-zero, program-control increase and 16 way of digital i/o. after investigating , ad7200h made by ruibohua company is accepted.the order of develop of the
5、 controlled system of stepper motor is to substitute self-made control unit and use controlled stepper motor passed by 16 way of digital i/o .this update makes the device of driving stepper motor control one stepper motor by 4 way .so power-magnified device is needed to develop .the aim of the explo
6、iting of software is to change original software run in the dos into the software run in the windows the new software is edited by visual basic language.keywords: daq; the devices of driving stepper motor; programme1设计目的(1)2硬件设计方案、理论、内容(3)2.1数据采集卡(3)2.1.1方案选择(3)2.1.2方案比较(4)2.1.3采用方案(5)2.2步进屯机驱动器(6)2
7、21步进电机驱动器的原理和方案(6)2.2.2器件选择(7)2.2.3制作步进电机驱动器电路板(12)3 软件编程(16)3.1 a/d采集模块(16)3.1采集卡 a/d釆集编程原理(16)3.1.2 a/d米集模块程序流程图(18)3.2步进电机控制模块(18)3.2.1步进电机控制原理(18)3.2.2开关量输出编程原理(19)3.2.3步进电机控制模块程序流程图(21)3.3模拟输入通道自动调零模块(21)3.3.1自动调零原理(21)3.3.2读取a/d结果和控制d/a输岀编程原理(21)3.4程序界面图(22)3.5程序源代码(22)4调试(30)4.1 ad采集模块调试(30)4
8、.2 步进电机控制模块调试(30)4.2.1硕件检查(30)4.2.2软件测试(30)结语(31)致谢(31)参考文献(32)1. 设计目的hy系列全门动显微镜光度计解决了有关显微镜口动调焦、口动识别有关组分 等自动测定关键技术难题,经冶金部组织化工、煤岩、计算机、电子信息权威专 家鉴定为国际先进水平,曾获美国colby科学技术信息中心优秀论文奖,冶金部 科技进步三等奖其主要成果“全自动显微镜光度计”,替代了昂贵进口仪器,在冶 金、化工、煤炭等行业48个大中型企业与有关高校推广应用(山东济钢、甘肃酒 钢,湖北武钢、河南安钢、石家庄焦化集团等大型企业均配备2套以上供各部门 使用),占国内在用同类
9、仪器的98%,受到广泛好评,经济与社会效益显著。hy系列全自动显微镜光度计町自动测定煤岩参数,可克服人工测定煤岩参数 费时费力、测点少、误并大、测定结果因人而异,难以统一的缺点,提高测定效 率儿十倍,且测定重现性、再现性均好于人工测定。其系统包括显微镜光度计、自 动扫描物台与显微镜自动调焦系统、数据采集系统、控制系统、电源系统、计算 机、打印机、软件系统等组成。hy-4型全口动显微镜光度计为hy系列全口动显微镜光度计的最新产品。其 主要功能与技术特点:hy4型全自动显微镜光度计可自动调节仪器零点,可充分利用仪器量程。数 据采集系统分辩率为1/4096, a/d转换速度为25uso 口动物台与显
10、微镜口动调焦 系统均由步进电机控制,可精确定位并具有锁定功能。可在x、y方向按要求移动 样品,在z方向自动调节显微镜焦距。hy-4型全口动显微镜光度计软件按美国microsoft公司产品风格编制,用户界 而友好。采用标准的全屮文立体下拉式菜单,各选择项具冇完备的在线捉示,容 错与自动处理等功能,随吋提供操作指导。提供系统自检软件,用于测试系统的完 好性与故障点。但hy4型全自动显微镜光度计已跟不上it行业的迅速发展,必须对其软硕 件进行升级换代。1)a/d转换芯片的功能有了很大的提高,已有分辨率达二进制16位,转换 速度达100ksps(sample per second:采样次数/秒)以上的
11、商品,为提高hy4 型全自动显微镜光度计的数据采集系统性能,必须换成高性能的a/d转 换芯片。2)计算机的更新速度加快,致使hy4型全自动显微镜光度计的软硕件性能 指标已经不能跟上计算机更新换代的步伐,不能支持流行的商品计算机。如hy4型全自动显微镜光度计所采用的是基于isa(工业标准架构: industry standard architecture)总线的数据采集板和控制板,而现今流行的 计算机已不再保留冇isa插槽。3)hy-4型全口动显微镜光度计软件是基于直接检测端口与软件中断技术, 而只有dos系统下才支持这种软件中断方式,而现今的最常用的windows nt内核的操作系统采用多任务
12、处理的方式,e2经不支持纯dos 软件。为了适应计算机软硬件的发展,使数据采集系统分辩率更高、a/d转换速度 更快,为了给用户提供具有高性能、高兼容性的产品。为此,进行新一代产品的 研究和开发。此外,全自动显微镜光度计的控制系统是基于步进屯机工作的。步进电机是一 种作为控制用的特种电机,其特点是没有积累误差(精度为100%),广泛应用于各种 开环系统。可以控制脉冲个数来控制角位移量,从而带到准确定位的目的。同时通 过控制脉冲的频率来控制屯机转动的速度和加速度,从而达到调速的目的。所以步 进电机在数控机床、医疗器械、仪器仪表等自动或半自动设备屮得到了广泛应用。2. 硬件设计方案、理论、内容设计分
13、为数据采集系统、步进电机控制系统和计算机程序设计系统。总的原理框图见图lo计算机pci接口数据控制计算机 调零程 序步进电 机驱动 器脉冲功率步进电机图1:金口动显微镜光度计的数据采集、口动调零和控制系统原理框图2.1数据采集卡2.1.1方案选择(1)总线接口的选择根据现今计算机主流主板常用的接口类型,通过在互联网上查找资料,找到两 种可供选择的数据采集板接口类型:-种是pci总线接口。pci插槽是主板常用的插槽,它是32bit总线,工作在 33mhz频率之下,传输带宽达到了 133mb/s。在最近期内都不会淘汰。而isa是 8/16bit的系统总线,最大传输速率仅为8mb/s,已经被pci总
14、线取代,intel从i810 芯片组开始,已不再提供对isa接口的支持。另一种是usb接口。usb是一些pc大厂商,如microsoft. intel等为了解 决日益增加的pc外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通 信的标准,自1995年在comdex上亮相以来至今已广泛地为各pc厂家所支持。 现在生产的pc几乎都配备了 usb接口,microsft的windows98、nt以及macos、 linux、freebsd等流行操作系统都增加了对usb的支持。具有速度快、设备安装 和配置容易、易于扩展、能够采用总线供电、使用灵活等优点。usb为多点数据 采集提供了很大的便利,利用u
15、sb可以实现较传统方式更有效、更经济、点数更 多的数据采集。数据采集卡参数的选择由于hy4型全自动显微镜光度计原使用的a/d卡为自研的,采样精度为二 进制12位,分辩率为1/4096,刚刚满足采集需要。为了提高采样精度选择使用二 进制16位精度的a/d采集卡,分辨率为1 /65536。同吋因为采样电压范围很小, 为了捉高分辨率的冇效利用率,需耍选择带程控增益的a/d输入电压范围在 010v的采集卡。采集所使用的是单通道采集,所以采集卡必须冇m端通道,且单端通道采集 速度要达到1 ookspso由于电子热运动等致使光电倍增管在没有光的情况下也会产生喑电流,经放 大后占用一定的量程,降低了数据采集
16、系统的分辨率。为了抵消这个暗电流,充 分利用采集系统的量程,提高采集卡分辨率的利用率,要求采集卡还必须带有d/a 转换。把d/a输出接到a/d输入端形成负反馈,在程序控制下选择适合的值去抵 消暗屯流,以达到调零的廿的。因为在采集的同时还要控制步进电机,这就要求采集卡需带有数字量输出口, 而月耍控制4个步进电机能独自和同时转动,那么数字量输出口的个数至少需要 16个。2.1.2方案比较经过联网查找产品资料,满足的方案有三个:美国ni公司的usb-6009。采用usb接口,14bit模拟输入分辨率,8个 单端采样通道,每通道电压输入范围为±10v,采集速度为48kspso北京瑞博华有限公
17、司的ad8221ho ad8221h是usb2.0总线兼容的数据采 集器,该采集器以usb电缆线与计算机相连。实际通过的总采集速度looksps, 也就是采样频率可以达到100000次/秒。a/d采样精度为16-bit,电压输入范围为 ±5v/0-10v,带有16个数字量输出端口。北京瑞博华有限公司的ad7200ho采样pci总线接口,a/d采样精度为 16-bit,电压输入范围为±5v/0-10v,单通道采集速度达到looksps,带冇16个数 字量输出端口,且有4通道的12-bit 度的d/a输出。从表1可以看出ni公司的usb-6009产品虽然冇质量和技术上的优势,但
18、同 价位下的产品相对另外两个功能较差。特别是单通道最人模拟电压范围为±10v,在采用010v范围输入时,14位仅能占一半。而北京瑞博华公司的两款产品都各 有千秋。ad8221h虽然没有模拟输出通道,但它是usb接口,更能适应以后的发 展,使用户使用更方便。ad7200h虽然在价格和功能上都是最适合选择要求的, 但它所用的pci总线,不能脱离计算机使用,不如usb接口方便。表1:三种采集卡的参数比较ni usb-6009rbhad8221hrbh ad7200h模拟输入单通道数83232模拟输入分辨率14bit16bit16bit最大模拟输入采样率48ksps1 ooksps1 ook
19、sps单通道最大模拟电压范围±10v±5v 或 0 10v±5v 或 0 -10v模拟输出通道2无4模拟输出分辨率12bit无12bit数字i/o输出端1 1121616数字量输出控制延时时间100nsims<lus接口usb 接口usb 接口pci总线接口价格245美元2800人民币2000人民币2.1.3釆用方案以适应长期发展的标准来衡量,显然usb接口的采集卡更适合,但两块usb 采集卡都冇缺陷,不能满足条件。开始时选择了 ad8221h,因为它的参数基本满 足条件,又是usb接口。但当调试的过程屮发现步进电机转动的速度很慢,找了 很长时间才发现问题原
20、来是它的数字量输出接口的输出控制延迟时间是lms,所 以输出脉冲频率很低,致使步进电机的转速很慢。并且usb接口的采集卡的底层 编程很复杂,所以很难通过编程去改变采集卡的底层驱动,不能达到设计的要求。最后,只有ad7200h最适合 方案,所以的最终方案是北京瑞博华公司的 ad7200h采集卡。2.2步进电机驱动器由于数拯采集卡的数字量(i/o)输出口只提供数字输出,没有欤动步进电机 所需的功率,所以必须研制配套的步进电机驱动器保证步进电机正常工作。2.2.1步进电机驱动器的原理和方案hy-4型全自动显微镜光度计屮使用的步进电机是感应子式的,型号为 28byj48o详细参数见表2。表2:步进电机
21、28byj48参数表特性参数特性参数特性参数电压dc.v12步距角5.626°减速比1/64电阻(25 °c)q 相±7%130q绝缘介电强度ac.600v.lmas无击穿 或飞弧绝缘电阻d c.500v>50mq牵入转距mn.m>40自定位转距mn.m>40空载牵入 频率hz>700空载牵岀频率hz> 1100温升k<50噪音 db(a)<30(1)步进电机驱动器的原理步进电机驱动器是把控制系统发出的脉冲信号,加以功率放大以驱动步进电 机。功率放犬是驱动系统重要的部分。步进屯机在一定转速下的转矩取决丁它的 动态平均电流而
22、非静态电流(而样木上的电流均为静态电流)。平均电流越大电机 力矩越大,要达到平均电流大这就需要驱动系统尽量克服电机的反电势。 步进电机驱动器的方案方案一:使用多个功率放大器件驱动电机。通过使用不同的放大电路和不同参数的器件,可以达到不同的放大的要求, 放大后能够得到较大的功率。如杲直接用分立元件如三极管连接而成,由于需耍 对16路信号分别进行放大,致使用的器件过多、占用的空间过大,而放大电路很 难做到完全一致,当电机的功率较大时运行起来会有不稳定现象,容易发生问题。 所以经过杳找资料得知一些专用的功率放大芯片可以克服这个问题。方案二:使用专用驱动芯片驱动屯机。l298n芯片为专用步进电机驱动芯
23、片,可以驱动两个二相电机,也可以驱动 一个四相电机,输出电压最高可达50v,可以直接通过电源来调节输出电压;可 以直接用采集板i/o 口提供信号;而且电路简单,使用比较方便。虽然方案二更专业更简单,但考虑到实际需要和设计的目的,选择了方案一。 因为在全自动显微镜光度计控制器屮,不需要考虑步进电机的精确度,也不需要 细分驱动,只需考虑驱动的功率放犬能否满足要求,所以还是使用功率放犬器件 驱动电机比较适合。隔离对控制输入端的影响功率电路对其输入端应有良好的信号隔离,防止有高电压大电流进入主控电 路,这口丁以用高的输入阻抗或者光电耦合器实现隔离。为了把模拟电路和数字电 路从电路上隔离,防止有高电压大
24、电流倒灌回计算机造成损坏和保护功率放大电 路,所以选择使用光电耦合器来实现信号隔离。2.2.2器件选择功率放大器件的选择功率电了电路大多要求具有大电流输出能力,以便于驱动各种类型的负载。 功率驱动屯路是功率电子设备输出电路的一个重要组成部分。如果直接用分立元 件如三极管连接而成,由于张动的路数多,致使用的器件过多、占用的空间过大, 而且电路不稳定,容易发生问题。所以经过查找资料得知冇一些专用的功率放大 芯片可以克服这个问题。根据木课题要求可选用芯片有两种:一种是toshiba (东芝)公司新出产的 tlp627-4 (电路原理见图3)达林顿管输出的4路光电耦合器。tlp627-4的达林顿管 输
25、出能够满足设计的要求,而ii还有光电耦合器功能,这样就会省去了专门的光 电耦合器芯片,电路就会变的非常简单,但由于技术问题致使这个方案没能试验 成功;另一种是美国texas instruments公司生产的uln2803 (电路原理见2)。 uln2803可控大功率器件由8组达林顿晶体管阵列和相应的电阻网络以及钳位二 极管网络构成,具有同吋驱动8组负载的能力,为单片双极型大功率高速集成电 路。tlp627-4图3 tlp627-4管脚连接图图2 uln2803管脚连接图uln2803电路具冇电流增益高、带负载能力强、工作温度范围宽和输出电压 高等特点。其参数特性见表3、表4。表3: uln28
26、03最大额定值(25°c)额定值符号值单位输出电压vo50v输入电压vi30v集电极电流连续ic500ma基极电流ib25ma工作环境温度范围ta20 85°c保存温度范围tstg65150°c表4: uln2803参数特性(25°c)(说明:表格中的图片标号是图4中的号)特性测试条件符号mintypmax单位输岀漏电流(图1)vce = 50 v,l! = 0oicex-50集电极发射极饱和电压(图2)ii =250 ma, ic= 100 mavce-0.91.1vii =350 ma, ic = 200 ma-11.3ii =500 ma, ic
27、= 350 ma-1.31.6输入电流截至状态(图3)vce = 50 v, ic = 500 mata = 70il(off)5065-ma输入电流导通状态(图4)vi = 3.85 v【i(on)-0.931.35ma输入电压导通状态(图5)vce = 2vic= 100 mavi(on>-2.4vic = 200 ma-2.7ic = 350 ma-3直流电流增益(图2)vce = 2 v, ic = 350 mahfe1000-输入电容vi = 0 v, f = 1 mhzci-1525pf箝位二级管漏电流(图6)vr = 50 vir-50a箝位二级管止相电压(图7)lf=35
28、0mavf-1.72v导通延迟时间vs = 50 v, rl= 163 w cl =15 pftplh-130-ns截止延迟时间vs = 50 v,1/0=300 matphl-20-ns测试图(见电气特性表中图号)开路 vqe图4.o 开路uln2803测试图(2)光电耦合器的选择光电耦合器选择toshiba (东芝)公司生产的最常用的4路光电耦合器tlp521-4 (电路原理见图5);tlp521-4图5 tlp521-4管脚图tlp521-4的详细参数特性:见表5、表6。表5:最大额定值(ta=25°c)特性符号额定值单位led驱动电流if50ma脉冲止向电流ifp1a反向电压
29、vr5v三级管集发极电压vceo55v集电极电流ic50ma表6:推荐工作条件(ta=25°c)特性符号mintyp.max单位驱动电压vcc-524v&通电流if-1625ma输出电流ic-110ma工作温度tqpr-25-85°c由表6可知tlp521-4光耦一般需要16ma左右的驱动电流才能工作在最优状态下,由于数据采集卡的i/o输出电流只冇0.8毫安,故需要前接74ls245 (八同 相三态总线收发器)或者接一个三极管增加驱动能力。而74ls245的高电平驱动 能力为15ma,所以选择74ls245连接在光耦前增加张动能力。2.2.3制作步进电机驱动器电路板
30、选用altium公司的protel dxp 2004 sp2电子设计系统软件来进行电路板的设 计制作。altium protel 2004是第一套完整的板卡级设计系统,真正实现在单个应 用程序屮的集成oprotel 2004让用户可以选择最适当的设计途径来按自己想要的方 式工作cprotel 2004 pcb线路图设计系统完全利用了 windows xp和windows 2000 平台的优势,具有改进的稳定性、增强的图形功能和超强的用户界面。(1)画原理图原理图(见图6)前部分为信号隔离电路,芯片741s245为tlp5214提供工作 所需的屯流驱动。后半部分为功率放犬和屯机保护屯路,芯片ul
31、n2803为步进电 机止常工作提供了足够的功率放大,而且在达林顿管的c极和电源的止极z间接 一个耐流为2a的二极管,这样在关断电源后,可以让电机放电。这样既可以保证 步进屯机的准确性又防止屯机线圈产生的自感屯动势影响前面的驱动器屯路。步进电机的电源使用外接12v电源供电,而芯片741s245为tlp521-4所需的 5v电源则通过7805稳压芯片将12v电源转换到5vo制作原理图步骤:1)创建一个新的pcb项口2)创建一个新的原理图图纸3)放置器件4)连接电路(2)画pcb图在pcb设计屮,布线是完成产品设计的重要步骤,在整个pcb 'p,以布线的 设计过程限定最高,技巧最细、工作量最
32、大。布线的方式也有两种:口动布线及 交互式布线。由于本设计的电路相对简单,所以选择使用单面板且用交互式布线 既手工布线。而单面板设计的难点是如何减少跳线情况下把线路布通,此次设计经过合理放置元件和多次改进,最后终于克服一切困难,在没有跳线的情况下把线路布通。 达到了设计的目标。而且由于7805的散热量很大,经过反复思考设计出不用散热 片,而直接用板上剩余空间的大而积附铜来给7805散热的方案。(见图7) 口 耳 曇e口e夢e洋e 品flaioonu nmi be图7驱动器pcb图pcb布线原则:1)电源、地线的处理电源、地线的处理不好会引起干扰,使产品的性能下降,有时甚至影响到产 品的成功率。
33、所以对电、地线的布线耍认真对待,把电、地线所产生的噪音干扰 降到最低限度。在电源、地线z间加上去耦电容,滤除噪音干扰。 尽量加宽电源、地线宽度,最好是地线比电源线宽,它们的关系是:地线 电源线信号线,对数字电路的pcb可用宽的地导线组成一个冋路,即 构成一个地网来使用(模拟电路的地不能这样使用)。用大面积铜层作地线用,在印制板上把没被用上的地方都与地相连接作为 地线用。或是做成多层板,电源,地线各占用一层。2)数字电路与模拟电路的共地处理现在有许多pcb不再是单一功能电路(数字或模拟电路),而是由数字电和模 拟电路混合构成的。因此在布线时就需要考虑它们之间互相干扰问题,特别是地 线上的噪音干扰
34、。数字电路的频率高,模拟电路的敏感度强,对信号线来说,高频的信号线尽 可能远离敏感的模拟屯路器件,对地线來说,整个pcb对外界只有一个结点,所 以必须在pcb内部进行处理数、模共地的问题,而在板内部数字地和模拟地实际 上是分开的,只是在pcb与外界连接的接口处(如插头等),数字地与模拟地冇一 点短接,这在设计时必须考虑,只有一个连接点。也有在pcb上不共地的,这由 系统设计來决定。(1)设计规则检查(drc)布线设计完成后,需认真检查布线设计是否符合设计者所制定的规则,同时 也需确认所制定的规则是否符合印制板生产工艺的需求,一般检查有如下几个方 面: 线与线,线与元件焊盘,线与贯通孔,元件焊盘
35、与贯通孔,贯通孔与贯通 孔之间的距离是否合理,是否满足生产要求。 电源线和地线的宽度是否合适,电源与地线之间是否紧耦合(低的波阻抗), 在pcb屮是否还冇能让地线加宽的地方。 对于关键的信号线是否采取了最佳措施,如长度最短,加保护线,输入线 及输出线被明显地分开。 模拟电路和数字电路部分,是否有各自独立的地线。 后加在pcb中的图形(如图标、注标)是否会造成信号短路。制作电路板 打卬pcb图。打印时注意打印层的设置,还有要保留焊盘孔,方便后面的 钻孔。 曝光感光板。把打印纸的正面向下平放在感光板上,用玻璃压紧,然后在 白炽灯下照射大约12分钟。 感光板显像和蚀刻 钻孔、插元器件、焊接3. 软件
36、编程3.1 a/d采集模块3.1.1采集卡a/d釆集编程原理瑞博华公司提供的驱动程序或软件模块均以dll方式提供,由dll驱动再调 用相应的各种内核驱动程序(vxd、386、sys等)。用户程序直接调用dll提供的 函数即可完成所有的功能。下面所调用的函数都市a/dcard.dll提供。adcard驱动程序实现了采集卡在后台的实时、高速采集模拟信号,应用程序 只需在必要时取采集结杲即可,可以实现数据的实时采集、连续显示与处理、采 集与取数、显示的同步,而且可以很简单、方便地实现。1 采集卡初始化函数dllrbhjnit运行dllrbhjnit函数,就可以设置模拟采集的通道数,采集的起始通道号,
37、程控 放人器的放人倍数。函数成功返回true,失败返回falseo函数在vb屮的定义:declare function dllrbh lnit lib "adcard.dh'1 alias ”_rbh_init12” (byvai adnumchn as integer, byvai adbegchn as integer, byvai adampgain as integer) as integer其中:adnumchn:是模拟通道数,从1开始,如4通道,则该数就是4。adbegchn:是起始通道号,从0开始,如第二通道,则adbegchn=kadampgain:程控增益控
38、制数,该数有4档,对应0,1,2,3.分别对应程控放大倍数 1/2/4/8 或 l/10/100/1000o2.启动采集函数dllrbh_adresult模拟量采集函数,只要运行dllrbh_adresult函数,就可以采集采集板的模拟 量输入。函数成功返回true,失败返ihlfals氏函数在vb中的定义:declare function dllrbh adresult lib ”adcard.dll” alias ”_rbh_adresult8” (byvai adchn as integer, byref adresult() as integer) as integer其屮:adchn
39、是模拟通道数,从1开始,如4通道,则该数就是4。采集的结杲放置在数组adresult()数组中,该数据是全局变量,在模块中定义, 定义类型是长整型数。采集结果存放的通道对应是0-31通道,对应数组元素 adresult(0)-adresult(31 )。数据编码方式:采用偏移二进制码,如16位的a/d,最大值是65535,最小值是0。 此外,通过adcard.dll提供的一序列函数,还可以实现两种方式的实时信 号采集、缓冲数据管理方式:一种是多缓冲区方式,或称为块fifo方式。采集卡初始化后,用 dllrbh_startintr()函数启动此工作模式,最后用dllrbh_stopintr()函
40、数停止。此方 式下,系统(驱动程序)内部开冇numlnnerbuf个缓冲区(块),形成先进先出的fifo 结构,存取采集结果的最小单位为1个缓冲区(块)。每个缓冲区可存放numchn 个通道、每通道samppcrchn个a/d采样结果,这些缓冲区大小值、缓冲区的个 数均可由应用程序自己指定,从而可能在性能、资源使用量方面得到最优的平衡。 a/d釆集的结果实时、顺序地存放在各缓冲区中,dllrbh_adresult()函数就顺序 地取出(最先)一个放满采样结杲的缓冲区的内容(进行过此操作后此缓冲区又可接 收新的采集结果),和标准的fifo工作模式完全一样。而dllrbh_adresultrece
41、nt() 函数直接取最后(新)一个缓冲区的内容(进行过此操作后所有缓冲区乂可重新接收 新的釆集结果)。在这种方式下,存放有a/d釆集结果的缓冲区数目可用 dllrbh_querybuf()函数进行查询。而 11,通过使用 dllrbh_registernotify()l| 数, 可设置在每一个缓冲区满吋会给用户程序发送消息,用户可通过此消息及吋、高 效地取得a/d结果,且是不丢点、连续的a/d采集结果,而不用等待、查询。当 然,若用户程序没有及时从缓冲区取采样结果,而使所有缓冲区都满时,此后a/d 采样结果就将丢失,直到有缓冲区被 dllrbh_getadresult()或 dllrbh_ge
42、tadresultrecent()释放、可存放新的采样结果为止。此工作方式适宜于 连续记录a/d采集结果。连续两次成功地dllrbh_gctadrcsult()取得的a/d结果 在吋间上不会重叠,之间是否丢失采样结果,要看返回结果的序列号(结果数组的 第一个值,为无符号短整数)是否递增加一(注意,oxffff加一后会变成0)。只增 一,说明两缓冲区在时间上是连续的。在采样率较低时,通过多缓冲区方式,有 可能连续地记录、处理、保存长时间的a/d结果。另一工作方式为单缓冲区方式,采集卡初始化后,用dllrbh_startsnapshot() 方法启动,最后用dllrbh_stopintr()停止。
43、在此模式下,系统(驱动程序)维护一个 人的缓冲区,硬件始终不断地往缓冲区中存放a/d结果,缓冲区大小为numchn 个通道,每通道sampperchn个点,大小也可由用户自由指定。用 dllrbh_getsnapshot()函数从此缓冲区中得到所有通道、最新指定个点(点数在方法 的参数中指定)的采集结果(的快照)。此工作方式适宜丁示波器方式,可随时得到 最新的采集结果(的快照)。但两次dllrbh_getsanpshot()取得的结果在时间上口j能 有重叠或丢失,相对吋间关系不能确定,或者通过函数dllrbh_getsnapshot()返冋 的sampptr值和返回的adbuf第一个元素所代表
44、的系列号来求岀。用户还可通过dllrbh_channelfrq()数计算实际每通道的采样频率。通过 dllrbh_configinfo()函数查询驱动程序的设置。口j通过 dllrbh_registernotify()is置 多缓冲区模式下每缓冲区满时下应用程序发的消息。3.1.2 a/d采集模块程序流程图图8 a/d采集模块程序流程图3.2步进电机控制模块3.2.1步进电机控制原理步进电机的驱动电路根据控制信号工作,控制脉冲信号由计算机通过向采集 卡发送数据产生。其基本原理作用如下:1)控制换相顺序通电换和这一过程称为脉冲分配。四和步进电机的通电顺序可以有儿 种:a,b,c,d(4 相 4
45、拍);ab,bc,cd,d/a(4 相双拍);a,ab,b,bc,c,cd,d,d/a(4 相 8 拍)。 为了兼顾稳定性,转矩和功耗,选择采用4相8拍方式。步进电机工作在四相八拍模 式(即正转的输入信号为 1000-> 1100->0100->0110->0010->0011 ->0001 -> 1001-1000),对应每个步进电机要有四个信号输入端。见表7。表7:步进电机的脉冲发送顺序与导线的关系接线端序 号导线颜色分配顺序123456781红电源2橙110000013黄011100004粉000111005xl00000111用二进制表示100
46、01100010001100010001100011001用a、b、c、d表示aabbbcccddd/a2) 控制步进电机的转向如果给定工作方式正序换相发送脉冲,步进屯机正转,如果按反序换相发送 脉冲,则电机就反转(即 1001f0001f0011f0010f0110f0100f 1100f 1000) o3) 控制步进电机的速度步进电机的转速与脉冲信号的频率成正比,控制步进脉冲信号的频率, 可以对电机精确调速;两个脉冲的间隔越短,步进电机就转得越快。调整 计算机发出的脉冲频率,就可以对步进电机进行调速。4) 控制步进电机的转动角度电机的总转动角度由输入脉冲数决定。3.2.2开关量输出编程原理
47、首先,因为软件要独立控制硬件,这就需耍了解硬件的物理地址,以便于实 现口j靠地控制和采集功能。由返回指定卡号的pci卡的资“getl/obasebycardw 函数,实现对板卡口地址与中断的查询及编程工作。getl/obasebycardno 在 vb 下的定义:declare function dllgetl/obasebycardno lib "locatepci.dll" alias n_gcti/obascbycardno 12n (byvai cardno as integer, byrcf i/obasc as integer, byref irqnum as
48、integer) as long本函数读取pci卡的口地址与中断号。该函数返冋的结果是0时,表示失败, 返冋的结果是1时,表示返冋的结果成功。输入参数:cardno:卡号,该卡号由pcicard.exe软件设置,在一台计算机 中,卡号不能重复,卡号范围015。输出参数:i/obase,口地址,该参数是一个16位的整数,在vb屮显示的是负数, 用16进制显示才是正确的。输出参数:irqnum:中断号。然后,确定16路开关量输出的口地址。开关量输出 do0-do7: i/obase+13。开关量输出 do8-dol5: i/obasc+4。最后,用按字节写硬件端口 dlloutportb函数把所需
49、要传送的数据按位写入 开关量输出口odlloutportb在vb下定义方式:declare sub dlloutportb lib "a/dcard.dll" alias ,_outportb8,' (byvai port as integer, by vai value as integer)port指通道组号,8路为一组。do0-do7为第一组,组号为0; do8-dol5为 第二组,组号为1。value指所需耍输入的数据,为一个字节,共计8位,每位控制一个开关量输 ibo当对应的每一位输出如果是1吋,对应的针脚输出高电平;当对应位的输出 是0时,对应的针脚输出
50、低电平。3.2.3步进电机控制模块程序流程图开始 :图9:步进屯机控制模块程序流程图3.3模拟输入通道自动调零模块3.3.1自动调零原理由于电子热运动等致使光电倍增管在没有光的情况下产生暗电流,致使采集 输入通道初始化后不为零,为了去除这个干扰,可以通过程序控制d/a输出负反 馈抵消这个电压,而输出的反馈值取自a/d采集值。所以首先经过a/d转换取 得干扰信号的采集值,然后转换成电压值,再用d/a输岀和它相等的负电压值去 抵消掉原有干扰,达到调零口的。述应考虑如果干扰木身是很微小负电压时,这 时a/d的采集值是0,干扰没有显现出值。为了解决这种现象,还要把d/a输出 的负电压值加上0.5v,保
51、证采集的准确性。3.3.2读取a/d结果和控制d/a输出编程原理(1)读取a/d结果的方法adl:采集结果低8位地址,iobase+4。adh:采集结杲高8位地址iobase+5inportb(iobase+4) / 读取结果低 8 位inportb(iobase+5)/读取结果高 8 位控制d/a输出的方法dal是da输出的低8位,其口地址是iobase+8odah的低4位是da输岀的高4位,与dal共同合成12位da输岀。dah的 d4,d5决定da输出的通道号。dah的丨i地址是:iobase+9。当为dao通道时,d4=0,56=0;当da1通道时,d4=l,d5=0;当da2通道吋,
52、 d4=0,56=l;当da3通道时,d4=1,d5=1。当设定了对应通道的da值后,要使该值生效,必须运行以下生效命令: outportb(iobase+10,0);例如,设定da1为中间电压输出,da2为最大电压输出的程序如门outportb(iobase+&0xff); 送 da1 的低 8 位outportb(iobase+9,ox 17);/送 da 1 的高 4位,并选中通道 1 outportb(iobase+10,0);/ 使设定值生效outportb(iobase+8,oxff); 送 da2 的低 8 位outportb(iobase+9,ox2f); 送 da2
53、的高4位outportb(iobase+10,0);/ 使设定值生效3.4程序界面图3.5程序源代码option explicitdim dj fxdim dj num, dj_timesdim dodata(8) as integerdim totalbuf as integerdim ad_chn(32) as long咯个通道,齐个时刻点的采集值,注意,这里定义的是整型数dim v_chn(32) as singledim iobase '采集卡i i地址dim chnstr(32) as stringdim di(32) as integerdim adresult(32) a
54、s integer 'longsub djnum(dj num),根据电机号确定发送脉冲进程if dj num = 1 or 3 then 4和3号电机分别由各组的低8位控制dodata(o) = &h8dodata(l) = &hcdodata(2) = &h4dodata(3) = &h6dodata(4) = &h2dodata(5) = &h3dodata(6) = &h 1dodata(7) = &h9elself dj_num = 2 or 4 then 2、4 号电机由高 8 位控制dodata(o) = &
55、amp;h80dodata(l) = &hc0dodata(2) = &h40dodata(3) = &h60dodata(4) = &h20dodata(5) = &h30dodata(6) = &h10dodata(7) = &h90end ifend subsub dj_z(dj_num, dj_fx)控制电机转动方向和速度进程dim f, nf = val(textendtime.text)if dj num = 1 or 2 thenifdj_fic = 0 thenfor n = 0 to 7dlloutportb iobasc + 13, dodata(n)'电机正转delay fnextelself dj_fx = 1 thenfor n = 7 to 0 step 1dlloutportb iobase + 13, dodata(n)'电机反转delay fnextend ifelself dj num = 3 or 4 thenif dj fx = 0 thenfor n = 0 to 7dlloutportb iobase + 4, dodata(n) delay fnextelself dj_fx = 1 thenfor n = 7 to 0 step
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论