为啥74lvc14通入呼吸灯pwm波形形时输出一直为高电平

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
电压型四象限PWM整流器设计与实现.pdf 69页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
电压型四象限PWM整流器设计与实现
你可能关注的文档:
··········
··········
traditional
non-controlled
phase-controlled rectifier, which may pollute the power grid by injecting large amounts of
harmonics and reactive power, that it has been difficult to meet the requirements of green
electricity.
Four-quadrant
electronic field due to its remarkable advantages
such as sinusoidal input current, steady
output voltage, bin-directional energy flow and can run at unity power factor. This paper
focuses on the the design and realization of voltage-source four-quadrant PWM rectifier.
In this thesis, the topological structure and the working principle of the voltage-source
four-quadrant
mathematical
established based on coordinate transformation and feedforward decoupling method. Then,
modulation
conversion
current are analyzed. The dual-loop control strategy of the system and the parameters of PI
controller
phase-locked
technology
introduced,
different synchronization methods of voltage and current are compared with simulation.
thesis, the
experimental
voltage-source
four-quadrant
designed. Various
parameters
The hardware and
software of control system are designed based on TMS320F28035. A
series of experiments are designed to test the steady-state and dynamic performance of the
system. The
experimental results show that the system can operate
rectifier or
inverter with good performance, which verifies the correctness of the system design.
正在加载中,请稍后...(正在供货)
六路施密特触发反向器
&(英文內容)
In English
日本語表示
描述与参数
工具与软件
质量与封装
支持与培训
相关终端应用
These Schmitt-trigger devices contain six independent inverters. They perform the Boolean function Y = A. Because of the Schmitt action, they have different input threshold levels for positive-going (VT+) and for negative-going (VT–) signals. These circuits are temperature compensated and can be triggered from the slowest of input ramps and still give clean, jitter-free output signals. They also have a greater noise margin than conventional inverters.
2-V to 6-V VCC Operation Inputs Accept Voltages to 6 V Max tpd of 9.5 ns at 5 V
查看更多内容
Technology Family
F @ Nom Voltage
ICC @ Nom Voltage
tpd @ Nom Voltage
Schmitt Trigger
Operating Temperature Range
Pin/Package
Automotive
-55 to 125
-40 to 125
其它合格版本 SN74AC14
获 QML 认证,用于军事与国防应用
Q100 适用于追求零缺陷的高可靠性汽车电子应用的器件单片机、电路板
连接器、接插件
其他元器件
74LVC14A-2
74LVC14A-2
【用 途】&&&&
【性能 参数】
【互换 兼容】
【用 途】&&&&
【性能 参数】
【互换 兼容】
资料下载排行榜
型号/产品名
华强电子网测试账号-huangxiaobo
华强电子网测试账号-huangxiaobo
华强电子网测试账号-鹏程微电子
华强电子网测试账号-huangxiaobo
深圳市特成电子商行查看: 51339|回复: 35
Arduino学习笔记A4 - Arduino软件模拟PWM以及提高软PWM效率
本帖最后由 Ansifa 于
22:23 编辑
Arduino软件模拟PWM以及提高软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。
通过调整一个周期里面输出脚高/低电平的时间比(即是占空比)去获得给一个用电器不同的平均功率。
1.png (17.68 KB, 下载次数: 486)
16:02 上传
如图所示,假设PWM波形周期1ms(即1kHz),分辨率1000级。那么需要一个信号时间精度1ms/1000=1us的信号源,即1MHz。所以说,PWM的实现难点在于需要使用很高频的信号源,才能获得快速与高精度。下面先由一个简单的PWM程序开始:
[pre lang=&arduino& line=&1& file=&PWM1.ino&]
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来说,效果与上面的程序一样。
[pre lang=&arduino& line=&1& file=&PWM2.ino&]
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有一种下面的方式:
[pre lang=&arduino& line=&1& file=&PWM3.ino&]int brights[14] = {0}; //定义14个引脚的初始亮度,可以随意设置
int StartPWMPin = 0, EndPWMPin = 13; //设置D0~D13为PWM引脚
int PWMResolution = 255; //设置PWM占空比分辨率
void setup()
& & //定义所有IO端输出
& & for(int i = StartPWMP i &= EndPWMP i++)
& && &&&pinMode(i, OUTPUT);
& && &&&//随便定义个初始亮度,便于观察
& && &&&brights[ i ] = random(0, 255);
void loop()
& & //这for循环是为14盏灯做渐亮的。每次Arduino loop()循环,
& & //brights自增一次。直到brights=255时候,将brights置零重新计数。
& & for(int i = StartPWMP i &= EndPWMP i++)
& && &&&if((brights++) == PWMResolution) brights = 0;
& & for(int i = 0; i &= PWMR i++) //i是计数一个PWM周期
& && &&&for(int j = StartPWMP j &= EndPWMP j++) //每个PWM周期均遍历所有引脚
& && && && &if(i & brights[j])
& && && && &{
& && && && && & digitalWrite(j, HIGH);
& && && && && & delayMicroseconds(2);
& && && && &}
& && && && &else
& && && && &{
& && && && && & digitalWrite(j, LOW);
& && && && && & delayMicroseconds(2);
& && && && &}
这个程序比较简单,但是能演示基本的PWM功能。我们看loop(){}段,里面第一个for循环是做亮度渐增的,跟上面程序一样,每次循环自增,然后到255就置零重来。下面的for循环是外层循环组成一个PWM周期的,每个周期用255次循环完成。就是说,PWM精度255级。
看内层for循环,每个PWM周期都包含由StartPWMPin到EndPWMPin的遍历。就是说,按照brights数组里面的元素去设置每个引脚的PWM值。由于每个PWM周期都要遍历14个引脚,所以我们使用的delayMicroseconds); 延时要降低到2us左右。每个PWM周期就是2usx14只脚=28us左右,在加上代码执行时间误差。大概与原来的30us接近了。
四、提高PWM速度
由上面可以看出,多引脚PWM的周期大致为
每引脚PWM周期=每引脚判定后延时*要PWM的引脚数*每周期PWM判定次数(PWM精度)
上面的代码不包括指令执行时间,大概是2us x 14 x 255≈7ms=一个周期,频率142Hz。如果使用Arduino Mega 2560这样的大板,我们或者会用更多的引脚,比如32个。周期就变成2us x 32 x 255≈16ms一个周期,频率就是62Hz了。大概实验可以看到,如果周期超过12ms以上,驱动LED我们会看到明显的闪烁。所以必须降低三个值中的随便一个加快PWM速度。
未标题-1.png (31.26 KB, 下载次数: 478)
16:02 上传
所以我们要更改PWM周期的话,我们将精度(代码里面的变量:PWMResolution)降低就行,比如一般调整LED亮度的话,我们用64级精度就行。这样速度就是2x32x64=4ms。就不会闪了。
(1.09 KB, 下载次数: 901)
21:51 上传
点击文件名下载附件
原来我只能+威望,不能++贡献
&&学习了··
实际上应该慢好多。
因为 digitalWrite 非常耗时,这是我对Arduino不爽的地方。
牺牲 运行速度 换取 编写速度&&,arduino的IO操作特点。
这个跑单片机主频,频率越高越快。。。digitalWrite 可以直接用PORTC=0x01之类的代替,不过不适合菜鸟而已&
要好好學習
有辨法透過軟體pwm控制多個伺服電機麻?
我想在在一塊arduino 上控制超過8個servo
软PWM+74HC595=屌爆了!
重新复习了一次PWN波,谢谢楼主分享
请教各位大师,用Arduino自带的PWM接口,使用analogWrite输出,有办法降低LED闪烁吗?
ewx_boy 发表于
请教各位大师,用Arduino自带的PWM接口,使用analogWrite输出,有办法降低LED闪烁吗?
降低delay值,或者改成delayMicroseconds
用PORTD=0x01之类的直接驱动语句代替digitalWrite
降低PWM分辨率,比如原来255级分辨率会闪烁,改成64就好了
Ansifa 发表于
降低delay值,或者改成delayMicroseconds
用PORTD=0x01之类的直接驱动语句代替digitalWrite
降低PWM分辨 ...
谢谢版主回复,
在下刚开始接触,小白中,多问问,
1、PORTD=0x01有没有详细的讲解,或看哪方面知识?
2、降低分辨率到64好像简单些,具体是哪个语句?
我试了这个程序,为什么灯是一闪一闪的?
zhangsiyan12134 发表于
软PWM+74HC595=屌爆了!
为啥呀?难道软PWM还能透过595到输出脚上去吗?
为什么要delay?计算好指令运行的时间,提高扫描的频度岂不是更好?delay不是让控制器白白的浪费吗?没看懂,求讲解。。。。
长长牙齿 发表于
为啥呀?难道软PWM还能透过595到输出脚上去吗?
可以的哦!具體參見ShiftPWM庫
我做的8*8RGB LED矩陣就是用的這個原理
ewx_boy 发表于
谢谢版主回复,
在下刚开始接触,小白中,多问问,
1、PORTD=0x01有没有详细的讲解,或看哪方面知识?
同求怎么配置10k频率的PWM波?????????????
Powered by豆丁微信公众号
君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
DSP的PWM信号输出接口设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 pwm波形发生的原理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信