现代物理实验信号测量和分析 Labview
其他AD卡
- iUSBDAQ – U120816 USB 全速多功能数据采集
- 电话: 杨先生: 021-28202809 何先生: 13959191448
- 锐选自动化科技(上海)有限公司
- 上海市东诸安浜路231号金龙大厦1105室
Labjack U12介绍、相关下载
说明书
- labjack U12 中文说明书 本版本翻译都不错,确实值得看下
- labjack u12快速指南 wiki版 本版本翻译不行,大家勉强看,希望大家帮助完善。
— 推荐先看一下labjack U12 中文说明书 和labjack u12快速指南 wiki版 。相关的驱动程序慢慢上传。
—以上是数据采集卡usb-1208fs的一些相关文档
驱动相关
- labjackv1074_driversonly.rar Labjack安装,仅USB驱动
- labjackv107.rar Labjack安装程序
- ljmatlab.zip 调用dll 实现Matlab控制的例子
- labjack_example_delphi.zip 调用ocx 实现delphi控制的例子
- delphidll.zip 调用dll 实现delphi控制的例子
- u12setupv120a.zip最新的labjack驱动,支持vista
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函数(适合于单值测量)
上面提供一个样本,相比原文件作了改动与说明(下载的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中调用。
计数器使用
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
内网应该有:
大家到ycul.org查一下即可。我朋友做的校内搜索。 — YuXi 2007/10/10 10:34keygen8.5.rarlabview8.5的算号器
模拟信号的测量
电压单值测量
- 单值测量可以调用函数EAnalogIn,测量一次电压值。使用循环语句则可以实现低频率的电压连续测量。
短时连续读入
- 一次性快速读入数据可以调用函数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; }
用步进马达驱动小车
步进马达接线示意图
马达特性说明
- 电源:驱动电源为12v,信号电源为5v方波信号。可再接5v电压使反转。
- 马达失步频率:在脉冲周期低于32ms(31hz)时,马达经常失步;在周期为35ms时,偶尔失步;在周期为40ms时,基本不失步。
- 脉冲次数与转动角度:每两个完整方波马达转动一次;每40个完整方波马达转动一圈,即平均每个方波可转动9度;不失步时,转动角度与信号频率无关。
- 发热:接通电源后马达发热情况严重。估计可达近百度。