<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PWM的單片機產(chǎn)生

          PWM的單片機產(chǎn)生

          作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
          在上次說的直流電機調(diào)速的項目中,用了S52單片機的T2定時器產(chǎn)生PWM波信號,用于控制直流電機的轉(zhuǎn)速,雖然電機的平均速度與占空比不是嚴格的線性關(guān)系,但是在調(diào)節(jié)占空比可以明顯的看出電機轉(zhuǎn)速發(fā)生了改變,也算是滿足了課題的要求。下面復習一下PWM的知識吧。

          PWM—脈沖寬度調(diào)制(PulseWidthModulation),是一種周期一定而高低電平可調(diào)的方波信號。當輸出脈沖的頻率一定時,輸出脈沖的占空比越大,相對應(yīng)的輸出有效電壓越大。PWM可以應(yīng)用在許多方面,如電機調(diào)速、溫度控制、壓力控制等。

          本文引用地址:http://www.ex-cimer.com/article/201612/324609.htm

          圖1PWM波示意圖

          如上圖所示T1為脈沖寬度(就是導通時間),周期為T,則輸出電壓的平均值為U=VCC*T1/T=a*VCC,a是占空比,變化范圍為0≤a≤1。VCC為電源電壓。

          所以當電源電壓不變的情況下,輸出電壓的平均值U取決于占空比a的大小,改變a的大小就可以改變輸出電壓的平均值,這就是PWM的工作原理。采用T2定時器產(chǎn)生PWM脈沖極其精確,誤差只在幾個us。

          上PWM程序

          //文件名:T2PWM.c
          //功能:用T2定時器產(chǎn)生PWM波,頻率實調(diào)1khz

          //說明:單片機AT89S52,晶振12MHZ;
          //日期:2011年4月6日

          #include"reg52.h"

          #defineuintunsignedint

          #defineucharunsignedchar

          sbitPWM = P1^1;

          ucharpluse; //占空比寄存器

          voidTimer2()interrupt5

          {

          staticuchartime;

          TF2=0;

          if(++time==pluse)PWM=0;//達到脈寬設(shè)定值時,輸出PWM低電平

          elseif(time==40) //PWM的頻率為1khz左右

          {

          time=0;

          PWM=1;

          }

          }

          voidInitTimer2(void)//初始化函數(shù)

          {

          RCAP2H=0xff;//定時25us初值

          RCAP2L=0x0e7;//

          ET2=1;

          EA=1;

          TR2=1;

          }

          voidmain(void)

          {

          InitTimer2();

          while(1)

          {

          pluse=20;

          }

          }


          上一頁 1 2 下一頁

          關(guān)鍵詞: PWM單片

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();