现代物理实验信号测量和分析 Labview

其他AD卡

Labjack U12介绍、相关下载

说明书

— 推荐先看一下labjack U12 中文说明书 labjack u12快速指南 wiki版 。相关的驱动程序慢慢上传。

—以上是数据采集卡usb-1208fs的一些相关文档

驱动相关

usb-1208fs

  • ul.rar 包含InstaCal和Universal Library,以及各编程语言所需头文件和例子
  • ulforlabview.rar Universal Library for LabView
另有一张cd包含 InstaCal TracerDAQ SoftWIRE,后面两个好象是卡自带的应用程序,一共大小是422M,没有上传.

DSO-2150

LJ-U12卡在Matlab中的使用

安装

  • 执行安装盘u12\new\setup.exe ,并将u12目录下的LJMATLAB解压。启动matlab后必须将current directory的目录置于刚才解压的LJMATLAB目录下。(比如解压路径为:\xxxx\LJMATLAB,则将该路径复制到matlab工具栏的current directory框中即可)。在matlab中调用u12的相关程序均在此文件夹内,切换currentdirectory后将无法在调用这些函数。
  • 完成驱动程序安装后,还会自动附带LJ开发的一些测试与样本程序。这些程序的相关使用都可以在中文版的说明手册中查到。(这些程序本身是英文版的,不过相应的中文版在安装盘“U12应用程序”文件夹下可以找到)。其中比较重要的是LJtest程序,它用以测试卡是否正确连接,测试时不要再连接其他外部设备,(不要勾选test fixture installed 与continuous)。正常情况下所有项目都会显示Passed。(如Passed是黄色背景,按说明书提到的,可能需要做一次自校准)。
  • 在matlab、labview或其他平台开发u12卡时,安装程序自带的LJscope等,可以作为一个不错的参考。— 许文仪 2007/06/14 15:41

模拟信号的测量

eanalogout函数

  • 这是AOUpdate 的简化版本,它用来输出两个模拟输出通道的电压。

其执行时间为20 毫秒或更少(在Windows 下其典型值为16 毫秒)。如果要输出的值小于0,DLL 将输出上次的输出值。这样就可以只改变一个通道的电压值。注意当DLL 刚刚载入时,它并不知道原先的值是什么,它只能认为它们都是0伏。同样当LabJack不是被DLL复位的情况下,DLL记忆的原先的电压值可能不是0,而实际的值却已经为0。

  • MATLAB调用格式:[idnum,errocode]=eanalogout(idnum,demo,AO0,AO1)
  • 输入:
  • idnum – 设备号,系列号或-1(所能找到的第一个设备)
  • demo – 正常操作时为0,大于0时为演示模式。演示模式允许用户在没有
  • AO0 – 要输出到AO0的0.0到5.0伏的电压。
  • AO1 – 要输出到AO1的0.0到5.0伏的电压。
  • 输出:
 默认返回值: LabJack 的错误码,无错时为0。
 • idnum – 返回设备号或-1(如果没有找到LabJack的话)
  • 注意:此调用在cpp和matlab中可用,若使用其他语言编译环境,需要适合对应语言的dll文件,否则出现内部错误,若有需要可登录labjack网站下载谷雨 2007/07/30 15:14

eanalogin函数(适合于单值测量)

analogin

上面提供一个样本,相比原文件作了改动与说明(下载的m文件可以直接运行) — 许文仪 2007/06/14 15:42

  • 函数调用格式:[voltage overvoltage errorcode idnum]= eanalogin(idnum,demo,channel,gain)
  • 比如:volts = eanalogin(-1,0,9,7);
  • % -1指接通默认的第一个labjack设备;0为非demo模式;9指使用AI2与AI3差分输入;7代表差分放大倍数为20倍
  • idnum–设备号,如果只连接了一台labjack仪器,请直接输入-1(表示最先发现的lj设备)。
  • demo–输入>0的任意数,会选区演示模式,不接信号也能有输出;一般直接输入0即可。
  • channel–选取信号的输入端口,输入0-7,即分别按顺序指代8个单端输入口(AI0-AI7);\\输入8-11,分别按顺序指代4组差分输入(AI0&AI1;AI2&AI3;AI4&AI5;AI6&AI7;);
  • gain–差分输入时的放大倍数。输入0-7,分别对应放大倍数为:1、2、4、5、8、10、16、20
    如单端模式下输入非零数,或输入值为0~7之外的数,或差分模式下放大倍数过大(超 过20v),则显示出来的电压值将发散。
  • 函数的输出量:完整模式下为一个4元素数组:[voltage overvoltage errorcode idnum]
  • voltage–读到的电压值
  • overvoltage–默认不显示,如显示为大于零,表示信号过载。
  • errorcode-默认不显示,如输出非零数表示设备出错。
  • idnum–设备号,默认不显示。

aiburst函数(短时连续读入)

aiburst函数使用的是采集卡的内置计数器,相比eanalogin函数,它没用循环结构导致的采样频率失真问题。

函数调用格式: [voltage stateIOout scanrate overvoltage errorcode idnum]=
aiburst (idnum,demo,stateIOin,updateIO,ledon,numchannels,channels,gains,scanrate,diablecal,trigerIO,triggerstate,numscans,timeout,transfermode)

先对输入的参数做一下说明

  • idnum–仍然可以用-1作为输入,表示选取默认的第一个lj设备。一般如机器上没用连接其他labjack设备,idnum就是0。也可以使用“listall”指令来查看所用设备的编号
  • demo–输入0。详细说明见enanlogin指令。
  • stateIOin–设置IO3与IO4口状态量(IO口可处于读入、高电位输出、低电位输出三种状态),单纯的模拟量读入无需该参数,置0即可。
  • updateIO–该参数>0时,处于读取状态的IO被读到的数据赋值;否则,IO口不会被赋值。(IO功能有待进一步的研究)
  • ledon–该参数> 0时,采集卡在读取模拟量时指示灯会闪烁。赋0时,指示灯暗掉不亮。由于采集卡的电源恒定,而指示灯会消耗一部分电流,因此在有些情况下需要关闭指示灯来做采集。一般建议将指示灯打开。
  • numchannels–选择要读取的通道数。采集卡除了单通道读取外,还可以同时读取2个或4个通道。故该参数可设为1、2、4(??)
  • channels–具体选择哪几个通道被读取。0-7为7种单端输入,8-11为4种差分输入。如numchannels为1,则channels就是一个数。如numchannels为2或4,则channels应为一个2元或4元数组。
  • gains–放大倍数,仅差分模式下有效,具体参见enanlogin指令。同样,根据numchannels的大小,它也可以是一个数组。
  • scanrate–扫描频率,单位hz,最高4096。
  • diablecal–一般置0,读取的模拟量会经过校正常数cal校正。>0是不经行校准。
  • trigerIO–从4个IO中选取一个作为触发器的信号端(置1-4),或不采用触发模式(置0)。(有待进一步的研究)
  • triggerstate–该参数>0,当trigerIO选择的那个触发端处于高电位时,将会触发AD卡经行采集。
  • numscans–单一通道所要采集的数据量。AD卡的总采集量=numchannels(通道数) * numscans 。总采集量最小值为1,最大为4096(AD卡的内存上限)
  • timeout–单位为秒(必须大于等于1),在timeout所规定的时间内没有获得读数的话,采集将中止并且报错。
  • transfermode–永远置0。

aiburst函数的输出量

  • voltage–电压值(单位伏特),aiburst函数输出的一般是一个很长的数组。
  • stateIOout–返回的IO状态参量,也是一个数组。
  • scanrate–真实的扫描频率,一般与预设的频率会有微小出入。
  • overvoltage–该输出量>0时表示测量的信号已经超量程。
  • errorcode–顾名思义,错误码。可以使用函数“geterrorstring(errorcode)“来查看出错的原因。
  • idnum–设备号,这是另一种查看采集卡设备号的方法。 — 许文仪 2007/06/14 15:43

Aistreamstart-Aistreamread-Aistreamclear

aistreamread
这组指令用来测量连续信号,其基本功能相当于一个数字示波器,利用matlab丰富的数据处理功能,我们可以自己设计出超级示波器。上面提供的下载就是在matlab中利用simulink工具包所完成的示波器的雏形。下面分别介绍三个指令及其用法。

1.Aistreamstart指令,运行后AD卡开始采集数据,并将采集到的数据存放于其内存中(4096),等待下一步的读取指令aistreamread
函数指令格式: [scanRate errorcode idnum] = AIStreamStart(idnum, demo, stateIOin, updateIO, ledOn, numChannels, channels, gains, scanRate, disableCal, readCount)
输入量说明:

  • idnum--同前,可为-1。
  • demo--同前。
  • stateIOin--设置IO0-IO3口的状态(读入、低电平、高电平)。
  • updateIO --大于0时,如果IO口被设为读入状态,那么在完成读入的同时该端口还会被赋值;=0时只读入数据不赋值。
  • ledon--同前,一般设为>0,以助于判别采集卡是否在正常工作。
  • numChannels--同AiBurst指令。
  • channels--同AiBurst指令。
  • gains--同前。
  • scanRate--扫描频率,注意这里与AiBurst不同的是,扫描频率scanRate与numChannels的乘积必须在200~1200Hz之间(AiBurst则是400~8192Hz)
  • disableCal--同前,一般设0,经行数据校准。
  • readCount--尚未作具体研究,从字面解释来看,该参数一般设0。如设为>0的数,那么模拟量的输入自动设为单通道,其余三通道用来返回计数器的计数值,通道2返回0~11位,通道3返回12~23位,通道4返回24~31位。(计数器总计数量32位)

输出量说明:

  • scanRate--真实的扫描频率,会与设计值有微小出入。
  • errorcode--错误码,再次提醒,对错误码使用geterrorstring指令查看是十分必要的。
  • idnum--设备号

2.AistreamRead指令:读取AD卡内存中的数据 函数指令格式 :[voltages stateIOout LjScanBacklog overVoltage errorcode] = AIStreamRead(localID, numChannels,numScans, timeout)
输入量说明:

  • localID--注意这里不再是idnum,必须输入当前设备号而不是-1(可以用listall指令或从aistreamstart的输出量中得到)。
  • numChannels--同前。
  • numScans--设置计算机从AD卡读取数据的数量,aistreamread指令在读取到numScans个数据后自动停止。顺便提一下,数据由AD卡到计算机的过程中,AD卡是不做采集的。另外,numChannels与numScans的乘积应在4096之内,并且最好大于64。(计算机是以每64个数据为单位从卡中获取数据的)
  • timeout--同AiBurst(>=1s),超过这个时间没有读到数据,采集自动停止。

输出量说明:

  • voltages--电压(数组形式)
  • stateIOout--IO口的状态参数(也是数组)
  • LjScanBacklog--AD卡内存中残留的未读取的数据数量。
  • overVoltage-->0表示信号超过量程。
  • errorcode--错误码。

原英文说明书关于这个指令的参量说明有误,请以此处为准。

3.Aistreamclear:停止读取 函数指令格式:[errorcode] = AIStreamClear(localID) 这里还是要注意localID不是-1,而是默认的设备号(一般为0) 使用aistreamstart与aistreamread指令后,请记得用aistreamclear停止读数,否则内存会很快溢出。
这组指令的调用格式一般为aistreamstart-aistreamread-aistreamread-aistreamread…-aistreamclear 其中,aistreamstart一旦启动后,数据流就会不断的存入AD卡内存中,此时应使用aistreamread将之读入到计算机中,否则很快就会使卡的内存溢出。对于高频读取,手动操作整个过程是不现实的,应当使用脚本文件自动控制这一流程。(考虑到计算机切换对象所需的时间,这可能就是为什么aistreamstart的扫描频率要比aiburst低的原因。) 此外,在这整个过程中,matlab是无法调用其他指令的。 — 许文仪 2007/06/17 12:13

数字信号输入输出

Edigitalin函数

  • 这是DigitalIO 的简化版本。 它是用来读取一个数字输入口的状态。它还把指定的口设置成输入口并保持它的输入方向。
  • 其执行时间为20 毫秒或更少(在Windows 下其典型值为16 毫秒)。
  • 注意:该函数可以对所有20个数字口进行操作。DLL 总是记住当前的数字口的输入输出方向并保持所有输出口的状态。所以该函数只对某个口进行操作而不改变其它口的情况。但是当DLL 刚刚载入时,它并不知道方向和状态,所以只能认为所有口的方向是输入,在所有口上的电平为低。
  • Matlab语法: [state errorcode idnum] = EDigitalIn(idnum, demo, channel, readD)
  • 函数参量
  • 输入参数列表:
  idnum:设备号,系列号;或-1(所能找到的第一个LJ设备)。
  demo: 正常操作时为0,大于0时为演示模式。演示模式允许在没有LabJack的情况下调用该函数。
  channel: 要读取的数字口号。IO口是0-3,D口是0-15。
  readD: 大于0时读取D25端口,否则读取IO端口。
  • 输出参量列表:
  state:非零值表示高电平,0 表示低电平。
  errorcode: 错误代码,0表示无错误。
  idnum: 返回设备号或-1(如果没有找到LabJack的话)
  • 备注: 此函数用于单次读入,连续读入示例见上传的digital_sample.txt文件,将后缀名改为.m即可实现在matlab中调用。
(PS:对这个系统不太熟,不知道上传后保存到哪里去了……) 谷雨 2007/06/16 00:42
已经修正,在最上面列出了。 — YuXi 2007/06/16 10:59

计数器使用

Ecount函数

  • 这是AOUpdate 的简化版本,它用来读取计数器或复位计数器。
    调用该函数会使STB被禁用(STB 被禁用是默认的状态)。
    其执行时间为20 毫秒或更少(在Windows 下其典型值为16 毫秒)。
  • 选用信号发生器的TTL的输出端,接在LJ的CNT端口上。
  • 用法为 [count ms errorcode idnum] = ECount (idnum, demo, resetCounter)

输入:

  • idnum – 设备号,系列号或-1(表示所能找到的第一个设备)。该值一般设为-1。
  • demo – 正常操作时为0,大于0时为演示模式。
  • 演示模式允许用户在没有 LabJack的情况下调用该函数。该值一般设为0。
  • resetCounter – 如果它大于0, 计数器则在读取计数后复位。

输出:

  • count – (被复位前的)计数值。
  • 该值应为从上次复位直至当前的时间,乘以信号发生器的频率。
  • ms – 读取计数器时的时间。该事件是Windows毫秒定时器的时间,单位是毫秒。
  • 请注意:该Windows毫秒定时器每50天循环一次。
  • 一般来说该毫秒计数器在计算机重启后会重新从0开始计数。可以说,该数值除以1000,就大致表示电脑已经开了多少秒
  • errorcode – 返回LJ的出错码,没有错误则为0。
  • idnum – 返回设备号或-1(如果没有找到LabJack的话)。
  • LJ的计数器在将信号发生器接上CNT端口时就开始一直工作了,调用一次本函数,则读取计数器当前累计存储的数值。
    • 如果调用时resetCounter这个参数设得大于0,则在读出计数器数值后,计数器清零,并且马上重新从零开始计数;
    • 如果调用时resetCounter这个参数设得不大于0,则在读出数值后,计数器不清零,继续计数,数值累计上去。

测试中的问题

30mv左右用单端只能看到噪声,差分模式经过20倍放大还能看到正弦信号,电压再小用差分加放大也看不到信号了,全是噪声。基本可以排除是接地不良的问题,测试过gnd口与信号发生器地线是等势的。怀疑是测试中提到需要自校准的原因:cal校准常数与单端输入的test都是黄色背景的”passed”。
应该说,测量时候应该考虑量程问题。20VPP的量程对于30mVPP的信号来说太大了,背景比信号大也是很正常。如果测量信号过于小的话,还是应该考虑采用前置的放大器,将信号调节到适合的量程再来测量为好。
YuXi 2007/06/14 12:12

Labview的使用案例

简介

  • labview是一种图形化语言,可以用电脑上的虚拟面板实现真实仪器的功用,因此广泛用于信号的采集处理等方面。
  • 相比于普通的文字形式的语言(如c),优点包括:简单易学,直观,调用硬件方便(用c调用labjack的函数需要填入所有变量,而LabVIEW只要连出必要的参数,其它自动输入普通需要的值)等。缺点包括不易控制变量,很难实现递归等特殊结构等。但其中的“公式节点”让熟悉c的人方便处理变量。(初学者的一家之言)

安装

  • ftp://ftp.ni.com/evaluation/labview/pc/labview_82_chs.exe 这个是8.2版本。最新好像是8.5。543mb,大概要两个小时。这么大传到内网可以吗?
  • 免注册的办法在这里免注册文件(可能只适用于8.2版本)
  • 运行setup.exe即可。
  • 安装labjack驱动程序后(上面有),在labview的程序面板中的函数面板选择“选择vi”,然后在LabJack目录下找drivers\labview\vi.lib\addons\LabJack\ljackuw.llb,有labjack编好的36个函数可用。具体方法上面和说明书上都有。 — 孙梦超 2007/10/01 20:51
内网应该有:

ftp://10.21.120.1/Vol01/_Engineering/NI/LabView85/[NI.LabVIEW图形化开发环境].TLF-SOFT-NI.LabVIEW.v8.5.ISO-TBE.bin

大家到ycul.org查一下即可。我朋友做的校内搜索。 — YuXi 2007/10/10 10:34
keygen8.5.rarlabview8.5的算号器

模拟信号的测量

电压单值测量

  • 单值测量可以调用函数EAnalogIn,测量一次电压值。使用循环语句则可以实现低频率的电压连续测量。

eanalogin示例.rar

短时连续读入

  • 一次性快速读入数据可以调用函数AIBurst(最高扫描频率为8192Hz)。下面是Labjack中自带的程序ljscope。这个程序比较复杂,设计也比较严谨,可实现在一个或者两个模拟通道快速读入数据(最多为4096个),然后显示电压—时间图表和电压有效值—频率图表,并可以将时间与电压值存入文件。ljscope.rar


此vi中,在最左方用下拉列表输入测量要求参数,包括是否使用差动测量,将所有数据捆绑为簇后输入AIBurst子函数(按名称组合簇,故可以清楚看到AIBurst所需要的参数及顺序),同时准备了一个默认的簇,当用户输入参数缺省时使用这个默认值。AIBurst测量结束后返回一个所用频道数(行)*每通道所得数据(列)的二维数组,实际测量频率,以及是否出错,超量程等信息。将电压值作为Y轴,实际采集频率的倒数作为X轴的缩放比例,从而得到电压—时间的曲线图。从两组电压值分别得到功率图作为Y轴,然后用(实际采集频率/采集数据个数)作为X轴,从而得到电压有效值-频率的曲线图。将原始的二维数组转置(变为每频道数据*频道数),添加每个值的序号乘以实际采样频率(即每个数据所得的估计时刻)作为第一行,然后可以将这个3*N的数组以八位有效数字保存在文件中。

持续信号测量

  • 函数AIStreamStart, AIStreamRead,AIStreamClear连用可以实现持续信号的测量。数据先是存放在LabJack 的缓冲区内,然后同时传送到计算机的内存中。调用AIStreamStart后必须不断调用AIStreamRead,最后调用AIStreamClear。 注意在连续采集的过程中,LabJack 是不可能作任何其它工作的。如果调用除了AIStreamRead 外的函数,连续读操作会被终止。下面是一个简单的例子。ai_stream_example.rar


此函数要求测量参数以簇的形式整体输入(例子中的Analog Input Commands一项)。在中间的while循环中有一个顺序结构,分别进行计时,延时,读取数据(调用AIStreamRead)三个步骤。在得到二维数组形式的电压后并未进行处理。处理方法可以参看上个例子。 — 孙梦超 2007/10/22 20:55

数字信号输入输出

  • 可以实现数字输入输出的函数有EDigitalIn,EDigitalOut,AOUpdate,DigitalIO等,其中功能最全的是DigitalIO,可以读写所有20个IO数字端口(D端口0~15共16个,IO端口0~3共四个)。下面是一个简单的例子,基本实现所有可能的功能(如更改任意端口的方向和状态,读取任意端口状态等)。io.rar


命令参数输入是一个由4个布尔数组组成的簇。两个数据输出的类型都是由2个布尔数组组成的簇。这样的优点是连线简单,缺点是更改其中某个数据困难。如果只需更改或读取一个端口的状态,用这个函数反而麻烦,此时可选用EDigitalIn和EDigitalOut。 — 孙梦超 2007/10/22 22:10

计数器使用

  • 使用计数器可调用函数Counter。使用例子如下ljcounter.rar。本函数可以实现延时,计数,计算频率,写入文件等功能。


本函数设计严谨。循环开始前调用clock函数得到时间。while寻含开始后用一个没有实际意义的顺序结构(只有一格)来实现延时的功能,即可以在指定秒数之后再开始计数。读数结束后再次计时,从而可以用计数除以时间得到频率。用户可以选择显示所得计数或者计算所得频率。使用专门的文件写入函数(LJcounter data file write.vi)可以写入计数,频率,计时等数据。 — 孙梦超 2007/10/22 22:09

应用:XY记录仪

  • 基于labjack做的XY记录仪。现在有两个程序,一个连续高频扫描但只记录一次的数据;一个低频连续扫描记录所有数据。界面较为完善。可导出各种类型的图片或文字文件。用两个100hz的正弦波得边缘不齐的里萨如图形(改天传)。这是源文件。xy记录仪_v1.0.rar


扫描频率50hz,信号频率1hz。图像完好。

扫描频率50hz,信号频率10hz。初始信号不好,之后图形完好。

扫描频率512hz,信号频率10hz。图形完好。

扫描频率512hz,信号频率100hz。单次信号不好,但多个周期共同采样后图形内缘形成椭圆。
更正:上图应说“外缘”形成椭圆。因为几次测量都没有调节电压,因此X轴变化范围都是-1.2到0.8。不难看出图像失真是由于采样频率过小。

labjack在c/c++中使用简介

  • 将文件“(labjack安装目录)\drivers\ljackuw.h”拷至所用编译器include文件夹下,在编译预处理中包含ljackuw.h和wtypes.h两个文件,即可调用如下函数:EAnalogIn,EAnalogOut,ECount,EDigitalIn,EDigitalOut,AISample,AIBurst,AIStreamStart,AIStreamRead,AIStreamClear,AOUpdate,BitsToVolts, VoltsToBits,Counter,DigitalIO,GetDriverVersion,GetErrorString,GetFirmwareVersion,GetWinVersion,ListAll,LocalID,NoThread,ReEnum,Reset, ResetLJ,Watchdog,ReadMem,WriteMem.各函数用途说明在这里labjack U12 中文说明书。参数设置可参看ljackuw.h中的声明。下面是一个例子。
   //---------------------------------------------------------------------------
  //
  //  ljcstream.c
  //  
  //  Simple example starts a stream and reads 250 scans/second from 4 channels
  //  for 5 seconds.   
  //
  //  Requires LabJack U12 DLL V1.05 or later.
  //
  //  support@labjack.com
  //  1/2002
  //----------------------------------------------------------------------
  //
 
  #include <stdio.h>
  #include <wtypes.h>
  #include "ljackuw.h"
 
  void initArrays(float (*voltages)[4],long *stateIOout);
 
  main()
  {
	long error;
	long id=-1,*idnum=&id;
	long localID=-1;
	long demo=0,numChannels=4,disableCal=0;
	long transferMode=0;
	long channels[4]={0,1,2,3};
	long gains[4]={0,0,0,0};
	float sr=250.0F,*scanRate=&sr;
	long numScans=250,timeout=10;
	float voltages[4096][4]={0.0F};
	long stateIOout[4096]={0};
	long ljb=-1,*ljScanBacklog=&ljb;
	long ov=-1,*overVoltage=&ov;
	long numIts = 5;
	long i;
	long junk;
 
 
	id=-1;
	error = AIStreamStart(idnum,demo,0,0,1,numChannels,channels,gains,scanRate,disableCal,0,0);
	localID = *idnum;
	printf("\nAIStreamStart error = %d\n",error);
	printf("Local ID = %d\n",localID);
	i=0;
	while((!error)&&(i<numIts))
	{	
		initArrays(voltages,stateIOout);
		junk=0;
		error = AIStreamRead(localID,numScans,timeout,voltages,stateIOout,0,ljScanBacklog,overVoltage);
		printf("\nAIStreamRead error = %d\n",error);
		printf("1st Scan:  V1=%f, V2=%f,V3=%f, V4=%f\n",voltages[0][0],voltages[0][1],voltages[0][2],voltages[0][3]);
		printf("LabJack Scan Backlog = %d\n\n",*ljScanBacklog);
		i++;
	}
	error = AIStreamClear(localID);
	printf("\nAIStreamClear error = %d\n",error);
 
 
	printf("\nPress Enter\n");
	getchar();
 
  }
 
 
  void initArrays(float (*voltages)[4],long *stateIOout)
  {
	long j,k;
 
	for(j=0;j<4096;j++)
	{
		for(k=0;k<4;k++)
		{
			voltages[j][k]=0.0F;
		}
	}
	for(j=0;j<4096;j++)
	{
		stateIOout[j]=0;
	}
 
	return;
  }

用步进马达驱动小车

步进马达接线示意图

马达特性说明

  1. 电源:驱动电源为12v,信号电源为5v方波信号。可再接5v电压使反转。
  2. 马达失步频率:在脉冲周期低于32ms(31hz)时,马达经常失步;在周期为35ms时,偶尔失步;在周期为40ms时,基本不失步。
  3. 脉冲次数与转动角度:每两个完整方波马达转动一次;每40个完整方波马达转动一圈,即平均每个方波可转动9度;不失步时,转动角度与信号频率无关。
  4. 发热:接通电源后马达发热情况严重。估计可达近百度。

步进电机参考资料

labview教学演示工具箱

 
exp/labjack.txt · 最后更改: 2013/09/26 12:23 由 whyx
 
除额外注明的地方外,本维基上的内容按下列许可协议发布:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki