虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

脉宽<b>可调</b>

  • 声纳信号发生器通信控制模块的设计

    文中针对某型声纳维修训练系统的通信需求,结合声纳信号发生器的特点,提出了基于C/S模式的通信控制模块设计方案。模块采用Winsock网络编程技术实现了客户机与服务器间高速局域网通信,服务器响应客户机的请求后,输出数字控制量并利用PCI-1711的12位D/A转换功能,将数字控制量转换为模拟信号,从而实现声纳信号发生器任意波形产生。该信号发生器输出信号的幅度、频率、脉宽、持续时间等参数均可通过网络通信方式设置,并易于调节。本系统控制灵活,具有较高的实用价值。

    标签: 声纳 信号发生器 通信控制 模块

    上传时间: 2013-10-10

    上传用户:hanbeidang

  • 0~±10V/0~±20mA 双向模拟信号隔离放大器

    双向直流(电压/电流)信号隔离转换器是一种混合集成电路。产品主要用于工业控制系统中模拟信号输入输出控制,系统内部通过dsp、plc的da转换输出信号来显示和控制其它装置的可调输出,现场工作电压、电流和各种运行参数的监测及系统外部增加4-20ma(0-20ma)/0-5v标准信号接口等。该ic为标准sip12 pin符合ul-94的阻燃封装,占用pcb板面积少,装入仪器内部可以并联安装实现多路信号的监测、隔离和转换。ic在同一芯片上集成了一个多隔离的dc/dc变换电源和一组模拟信号隔离放大器,输入及输出侧宽爬电距离及内部隔离措施使该芯片可达到3000vdc绝缘电压。sunyuan iso em系列产品使用非常方便,免零点和增益调节,无需外接调节电位器等任何元件,即可实现工业现场信号的隔离转换功能。

    标签: 10 20 mA 模拟信号

    上传时间: 2013-10-21

    上传用户:windgate

  • 采用A3955和PIC16C621A的步进电机驱动器设计

    摘要: 本文介绍了利用A3955对步进电机实现控制的方法及其电路设计。关键词: 步进电机;PIC16C621A; A3955;脉宽调制 步进电机广泛应用于对精度要求比较高的运动控制系统中,如机器人、打印机、软盘驱动器、绘图仪、机械阀门控制器等。目前,对步进电机的控制主要有由分散器件组成的环形脉冲分配器、软件环形脉冲分配器、专用集成芯片环形脉冲分配器等。分散器件组成的环形脉冲分配器体积比较大,同时由于分散器件的延时,其可靠性大大降低;软件环形分配器要占用主机的运行时间,降低了速度;专用集成芯片环形脉冲分配器集成度高、可靠性好,但其适应性受到限制,同时开发周期长、需求费用较高。 步进电机控制步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机制。步进电机可分为反应式步进电机(VR)、永磁式步进电机(PM)和混合式步进电机(HB)。 步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。就转动一个角度,因此非常适合于单片机控。

    标签: A3955 621A C621 16C

    上传时间: 2013-12-05

    上传用户:lionlwy

  • labview中文教程

    第八章 labview的编程技巧     本章介绍局部变量、全局变量、属性节点和其他一些有助于提高编程技巧的问题,恰当地运用这些技巧可以提高程序的质量。   8.1 局部变量 严格的语法尽管可以保证程序语言的严密性,但有时它也会带来一些使用上的不便。在labview这样的数据流式的语言中,将变量严格地分为控制器(Control)和指示器(Indicator),前者只能向外流出数据,后者只能接受流入的数据,反过来不行。在一般的代码式语言中,情况不是这样的。例如我们有变量a、b和c,只要需要我们可以将a的值赋给b,将b的值赋给c等等。前面所介绍的labview内容中,只有移位积存器即可输入又可输出。另外,一个变量在程序中可能要在多处用到,在图形语言中势必带来过多连线,这也是一件烦人的事。还有其他需要,因此labview引入了局部变量。

    标签: labview 教程

    上传时间: 2013-10-27

    上传用户:xieguodong1234

  • Arduino学习笔记4_Arduino软件模拟PWM

    注:1.这篇文章断断续续写了很久,画图技术也不精,难免错漏,大家凑合看.有问题可以留言.      2.论坛排版把我的代码缩进全弄没了,大家将代码粘贴到arduino编译器,然后按ctrl+T重新格式化代码格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脉宽调制波,通过调整输出信号占空比,从而达到改 变输出平均电压的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 个8 位精度PWM 引脚,分别是3, 5, 6, 9, 10, 11 脚。我们可以使用analogWrite()控 制PWM 脚输出频率大概在500Hz 的左右的PWM 调制波。分辨率8 位即2 的8 次方等于 256 级精度。但是有时候我们会觉得6 个PWM 引脚不够用。比如我们做一个10 路灯调光, 就需要有10 个PWM 脚。Arduino Duemilanove 2009 有13 个数字输出脚,如果它们都可以 PWM 的话,就能满足条件了。于是本文介绍用软件模拟PWM。 二、Arduino 软件模拟PWM Arduino PWM 调压原理:PWM 有好几种方法。而Arduino 因为电源和实现难度限制,一般 使用周期恒定,占空比变化的单极性PWM。 通过调整一个周期里面输出脚高/低电平的时间比(即是占空比)去获得给一个用电器不同 的平均功率。 如图所示,假设PWM 波形周期1ms(即1kHz),分辨率1000 级。那么需要一个信号时间 精度1ms/1000=1us 的信号源,即1MHz。所以说,PWM 的实现难点在于需要使用很高频的 信号源,才能获得快速与高精度。下面先由一个简单的PWM 程序开始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 这是一个软件PWM 控制Arduino D13 引脚的例子。只需要一块Arduino 即可测试此代码。 程序解析:由for 循环可以看出,完成一个PWM 周期,共循环255 次。 假设bright=100 时候,在第0~100 次循环中,i 等于1 到99 均小于bright,于是输出PWMPin 高电平; 然后第100 到255 次循环里面,i 等于100~255 大于bright,于是输出PWMPin 低电平。无 论输出高低电平都保持30us。 那么说,如果bright=100 的话,就有100 次循环是高电平,155 次循环是低电平。 如果忽略指令执行时间的话,这次的PWM 波形占空比为100/255,如果调整bright 的值, 就能改变接在D13 的LED 的亮度。 这里设置了每次for 循环之后,将bright 加一,并且当bright 加到255 时归0。所以,我们 看到的最终效果就是LED 慢慢变亮,到顶之后然后突然暗回去重新变亮。 这是最基本的PWM 方法,也应该是大家想的比较多的想法。 然后介绍一个简单一点的。思维风格完全不同。不过对于驱动一个LED 来说,效果与上面 的程序一样。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,这段代码少了一个For 循环。它先输出一个高电平,然后维持(bright*30)us。然 后输出一个低电平,维持时间((255-bright)*30)us。这样两次高低就能完成一个PWM 周期。 分辨率也是255。 三、多引脚PWM Arduino 本身已有PWM 引脚并且运行起来不占CPU 时间,所以软件模拟一个引脚的PWM 完全没有实用意义。我们软件模拟的价值在于:他能将任意的数字IO 口变成PWM 引脚。 当一片Arduino 要同时控制多个PWM,并且没有其他重任务的时候,就要用软件PWM 了。 多引脚PWM 有一种下面的方式: int brights[14] = {0}; //定义14个引脚的初始亮度,可以随意设置 int StartPWMPin = 0, EndPWMPin = 13; //设置D0~D13为PWM 引脚 int PWMResolution = 255; //设置PWM 占空比分辨率 void setup() { //定义所有IO 端输出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //随便定义个初始亮度,便于观察 brights[ i ] = random(0, 255); } } void loop() { //这for 循环是为14盏灯做渐亮的。每次Arduino loop()循环, //brights 自增一次。直到brights=255时候,将brights 置零重新计数。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是计数一个PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每个PWM 周期均遍历所有引脚 { if(i < brights[j])\   所以我们要更改PWM 周期的话,我们将精度(代码里面的变量:PWMResolution)降低就行,比如一般调整LED 亮度的话,我们用64 级精度就行。这样速度就是2x32x64=4ms。就不会闪了。

    标签: Arduino PWM 软件模拟

    上传时间: 2013-10-08

    上传用户:dingdingcandy

  • 基于Xilinx FPGA的温控风扇的设计(原文设计、源代码及视频地址)

      本设计的整体思路是:以XILINX FPGA作为控制中心,通过提取热释电红外传感器感应到的人体红外线信息,并利用温度传感器DS18B20检测环境温度并直接输出数字温度信号给FPGA 进行处理,在LED数码管上显示当前环境温度值以及预设温度值。通过独立键盘输入预设温度值,其中预设温度值只能为整数形式,检测到的当前环境温度可精确 到小数点后一位。同时采用PWM脉宽调制方式来改变直流风扇电机的转速。并通过两个按键改变预设温度值,一个提高预设温度,另一个降低预设温度值。系统结 构框图如下:

    标签: Xilinx FPGA 温控 地址

    上传时间: 2013-11-12

    上传用户:cjf0304

  • 伺服与变频的异同

    伺服与变频:伺服与变频的一个重要区别是: 变频可以无编码器,伺服则必须有编码器,作电子换向用. 一、两者的共同点:     交流伺服的技术本身就是借鉴并应用了变频的技术,在直流电机的伺服控制的基础上通过变频的PWM方式模仿直流电机的控制方式来实现的,也就是说交流伺服电 机必然有变频的这一环节:变频就是将工频的50、60HZ的交流电先整流成直流电,然后通过可控制门极的各类晶体管(IGBT,IGCT等)通过载波频率 和PWM调节逆变为频率可调的波形类似于正余弦的脉动电,由于频率可调,所以交流电机的速度就可调了(n=60f/2p ,n转速,f频率, p极对数)   二、谈谈变频器:    简单的变频器只能调节交流电机的速度,这时可以开环也可以闭环要视控制方式和变频器而定,这就是传统意义上的V/F控制方式。现在很多的变频已经通过数学 模型的建立,将交流电机的定子磁场UVW3相转化为可以控制电机转速和转矩的两个电流的分量,现在大多数能进行力矩控制的著名品牌的变频器都是采用这样方 式控制力矩,UVW每相的输出要加摩尔效应的电流检测装置,采样反馈后构成闭环负反馈的电流环的PID调节;ABB的变频又提出和这样方式不同的直接转矩 控制技术,具体请查阅有关资料。这样可以既控制电机的速度也可控制电机的力矩,而且速度的控制精度优于v/f控制,编码器反馈也可加可不加,加的时候控制 精度和响应特性要好很多。 三、谈谈伺服:   驱动器方面:伺服驱动器在发展了变频技术的前提下,在驱动器内部的电流环,速度环和位置 环(变频器没有该环)都进行了比一般变频更精确的控制技术和算法运算,在功能上也比传统的伺服强大很多,主要的一点可以进行精确的位置控制。通过上位控制 器发送的脉冲序列来控制速度和位置(当然也有些伺服内部集成了控制单元或通过总线通讯的方式直接将位置和速度等参数设定在驱动器里),驱动器内部的算法和 更快更精确的计算以及性能更优良的电子器件使之更优越于变频器。   电机方面:伺服电机的材料、结构和加工工艺要远远高于变频器驱动的交流电机 (一般交流电机或恒力矩、恒功率等各类变频电机),也就是说当驱动器输出电流、电压、频率变化很快的电源时,伺服电机就能根据电源变化产生响应的动作变 化,响应特性和抗过载能力远远高于变频器驱动的交流电机,电机方面的严重差异也是两者性能不同的根本。就是说不是变频器输出不了变化那么快的电源信号,而 是电机本身就反应不了,所以在变频的内部算法设定时为了保护电机做了相应的过载设定。当然即使不设定变频器的输出能力还是有限的,有些性能优良的变频器就 可以直接驱动伺服电机!!! 四、谈谈交流电机:   交流电机一般分为同步和异步电机   1、交流同步电机:就是转子是由永磁材料构成,所以转动后,随着电机的定子旋转磁场的变化,转子也做响应频率的速度变化,而且转子速度=定子速度,所以称"同步"。    2、交流异步电机:转子由感应线圈和材料构成。转动后,定子产生旋转磁场,磁场切割定子的感应线圈,转子线圈产生感应电流,进而转子产生感应磁场,感应 磁场追随定子旋转磁场的变化,但转子的磁场变化永远小于定子的变化,一旦等于就没有变化的磁场切割转子的感应线圈,转子线圈中也就没有了感应电流,转子磁 场消失,转子失速又与定子产生速度差又重新获得感应电流。。。所以在交流异步电机里有个关键的参数是转差率就是转子与定子的速度差的比率。   3、对应交流同步和异步电机变频器就有相映的同步变频器和异步变频器,伺服电机也有交流同步伺服和交流异步伺服,当然变频器里交流异步变频常见,伺服则交流同步伺服常见。  

    标签: 伺服

    上传时间: 2013-11-17

    上传用户:maqianfeng

  • 5位数微电脑型盘面式电表(小功率的)(24*48mm)

    特点: 精确度0.05%满刻度±1位數 可量测交直流电流/交直流电压/电位计/Pt-100/热电偶/荷重元/电阻等信号 热电偶SENSOR输入种类J/K/T/E/R/S/B可任意规划 显示范围-19999-99999可任意规划 小数点可任意规划 尺寸小,稳定性高 CE认证

    标签: 24 48 mm 微电脑

    上传时间: 2013-10-31

    上传用户:wsq921779565

  • LED升压器 QX5305 中文资料

    QX5305 是一款高效率,稳定可靠的高亮度LED灯驱动控制IC,内置高精度比较器,off-time控制电路,恒流驱动控制电路等,特别适合大功率,多个高亮度LED灯串恒流驱动。 QX5305采用固定off-time控制工作方式,其工作频率可高达2.5MHz,可使外部电感和滤波电容、体积减少,效率提高。 在DIM脚加PWM信号,可调节LED灯的亮度。 通过调节外置的电阻,能控制高亮度LED灯的驱动电流,使LED灯亮度达到预期恒定亮度,流过高亮度LED灯的电流可从几毫安到2安培变化。 方框图: 管脚排列图: QX5305的特性 可编程驱动电流,最高可达2A  高效率:最高达95%  宽输入电压范围:2.5V~36V  高工作频率:2.5MHz  工作频率可调:500KHz~2.5MHz  驱动LED灯功能强:LED灯串可从1个到几十个LED高亮度灯 亮度可调:通过EN端PWM,调节LED灯亮度 QX5305应用范围 干电池供电LED灯串  LED灯杯  RGB大显屏高亮度LED灯  平板显示器LED背光灯 恒流充电器控制  通用恒流源。 工作原理简述: QX5305 采用峰值电流检测和固定off-time控制方式。片内的R-S触发器分别由off-time定时器置位和CS比较器、FB比较复位,它控制外部MOSFET管并和功率电感 L、LED、肖特基二极管共同构成一个自振荡的,连续电感电流模式的升压型恒流LED驱动电路(参见图1)。 除了固定off-time控制这点外,QX5305的工作方式和普通的电流模式PWM控制型DC/DC升压电路非常相似。当工作在连续电流模式下时,流过功率电感的电流IL如图所示:

    标签: 5305 LED QX 升压器

    上传时间: 2013-10-26

    上传用户:TF2015

  • Arduino学习笔记4_Arduino软件模拟PWM

    注:1.这篇文章断断续续写了很久,画图技术也不精,难免错漏,大家凑合看.有问题可以留言.      2.论坛排版把我的代码缩进全弄没了,大家将代码粘贴到arduino编译器,然后按ctrl+T重新格式化代码格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脉宽调制波,通过调整输出信号占空比,从而达到改 变输出平均电压的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 个8 位精度PWM 引脚,分别是3, 5, 6, 9, 10, 11 脚。我们可以使用analogWrite()控 制PWM 脚输出频率大概在500Hz 的左右的PWM 调制波。分辨率8 位即2 的8 次方等于 256 级精度。但是有时候我们会觉得6 个PWM 引脚不够用。比如我们做一个10 路灯调光, 就需要有10 个PWM 脚。Arduino Duemilanove 2009 有13 个数字输出脚,如果它们都可以 PWM 的话,就能满足条件了。于是本文介绍用软件模拟PWM。 二、Arduino 软件模拟PWM Arduino PWM 调压原理:PWM 有好几种方法。而Arduino 因为电源和实现难度限制,一般 使用周期恒定,占空比变化的单极性PWM。 通过调整一个周期里面输出脚高/低电平的时间比(即是占空比)去获得给一个用电器不同 的平均功率。 如图所示,假设PWM 波形周期1ms(即1kHz),分辨率1000 级。那么需要一个信号时间 精度1ms/1000=1us 的信号源,即1MHz。所以说,PWM 的实现难点在于需要使用很高频的 信号源,才能获得快速与高精度。下面先由一个简单的PWM 程序开始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 这是一个软件PWM 控制Arduino D13 引脚的例子。只需要一块Arduino 即可测试此代码。 程序解析:由for 循环可以看出,完成一个PWM 周期,共循环255 次。 假设bright=100 时候,在第0~100 次循环中,i 等于1 到99 均小于bright,于是输出PWMPin 高电平; 然后第100 到255 次循环里面,i 等于100~255 大于bright,于是输出PWMPin 低电平。无 论输出高低电平都保持30us。 那么说,如果bright=100 的话,就有100 次循环是高电平,155 次循环是低电平。 如果忽略指令执行时间的话,这次的PWM 波形占空比为100/255,如果调整bright 的值, 就能改变接在D13 的LED 的亮度。 这里设置了每次for 循环之后,将bright 加一,并且当bright 加到255 时归0。所以,我们 看到的最终效果就是LED 慢慢变亮,到顶之后然后突然暗回去重新变亮。 这是最基本的PWM 方法,也应该是大家想的比较多的想法。 然后介绍一个简单一点的。思维风格完全不同。不过对于驱动一个LED 来说,效果与上面 的程序一样。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,这段代码少了一个For 循环。它先输出一个高电平,然后维持(bright*30)us。然 后输出一个低电平,维持时间((255-bright)*30)us。这样两次高低就能完成一个PWM 周期。 分辨率也是255。 三、多引脚PWM Arduino 本身已有PWM 引脚并且运行起来不占CPU 时间,所以软件模拟一个引脚的PWM 完全没有实用意义。我们软件模拟的价值在于:他能将任意的数字IO 口变成PWM 引脚。 当一片Arduino 要同时控制多个PWM,并且没有其他重任务的时候,就要用软件PWM 了。 多引脚PWM 有一种下面的方式: int brights[14] = {0}; //定义14个引脚的初始亮度,可以随意设置 int StartPWMPin = 0, EndPWMPin = 13; //设置D0~D13为PWM 引脚 int PWMResolution = 255; //设置PWM 占空比分辨率 void setup() { //定义所有IO 端输出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //随便定义个初始亮度,便于观察 brights[ i ] = random(0, 255); } } void loop() { //这for 循环是为14盏灯做渐亮的。每次Arduino loop()循环, //brights 自增一次。直到brights=255时候,将brights 置零重新计数。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是计数一个PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每个PWM 周期均遍历所有引脚 { if(i < brights[j])\   所以我们要更改PWM 周期的话,我们将精度(代码里面的变量:PWMResolution)降低就行,比如一般调整LED 亮度的话,我们用64 级精度就行。这样速度就是2x32x64=4ms。就不会闪了。

    标签: Arduino PWM 软件模拟

    上传时间: 2013-10-23

    上传用户:mqien