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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 飛思卡爾那些事之PWM控制直流電機

          飛思卡爾那些事之PWM控制直流電機

          作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
          資源:
          1、直流電機。當(dāng)直流電機的接線端電壓不同時,會出現(xiàn)正轉(zhuǎn)或反轉(zhuǎn)的狀態(tài)。如接線柱A和B,當(dāng)A為高電平,B為低電平時,電機正轉(zhuǎn);當(dāng)A為低電平,B為高電平時,電機反轉(zhuǎn)。在電機允許電壓范圍內(nèi),電壓越高,輸出功率越大,轉(zhuǎn)速越快,反之,輸出功率越小,轉(zhuǎn)速越慢。
          2、HCS12的PWM輸出。通過PWM輸出,可以在標(biāo)準(zhǔn)的TTL電平中,輸出不同的電壓。以控制電機的轉(zhuǎn)速和轉(zhuǎn)動方向。
          3、33886。電機驅(qū)動芯片,內(nèi)部集成半H橋??梢酝ㄟ^TTL電平控制V+電平輸出。最高頻達10KHz。電壓范圍為0到40V。最大電流為5A。可以工作在-60到125攝氏度的環(huán)境下。

          方案:
          1、HCS12中的PWM模塊,通過硬件進行PWM輸出。
          2、HCS12中的ECT的比較輸出模塊,通過比較輸出進行PWM的輸出。
          鑒于PWM模塊為輸出PWM專用模塊,通過設(shè)置相應(yīng)寄存器即可實現(xiàn)PWM輸出,簡單方便,而且精確。故選用PWM模塊進行PWM輸出。

          說明:
          1、驅(qū)動芯片為33886。
          2、16位PWM控制。
          3、周期為1MS即輸出1KHZ。
          4、對齊方式為PWM左對齊方式。
          5、輸出極性為起始高電平。
          6、占空比為0%~100%,在這期間分為10個檔。通過按鍵進行變換,每按下一個按鍵,占空比提高一檔。
          7、通過級聯(lián)方式實現(xiàn)16位PWM輸出。
          8、通過級聯(lián)方式實現(xiàn)16位PWM輸出。通道PWM01組成通道A;通道PWM23組成通道B;
          9、時鐘源選擇。
          BusBlock:8MHz。
          PWM輸出頻率:1KHz。
          預(yù)分頻:16分頻500kHz
          PWMPRCLK=0x66
          分頻:50分頻 10K
          ClockSX=ClockX/(2*PWMSCLX)
          PWMSCLx=ClockX/ClockSX*2=500k/(10k*2)=25=0x19
          通過兩次分頻可得通道時鐘周期為:100US即10HZ
          通道A時鐘頻率選擇PWMPRCLK和PWMSCLA;
          通道B時鐘頻率選擇PWMPRCLK和PWMSCLB;
          周期計算公式:
          左對齊方式:
          輸出周期=通道時鐘周期*(PWMPERx+1)
          PWMPERx=輸出周期/通道時鐘周期-1
          =1MS/10US-1
          =9=0X09
          10、占空比設(shè)置:
          左對齊起始輸出高電平:
          占空比=[(PWMDTYx+1)/(PWMPERx+1)]*100%
          PWMDTYx=占空比*(PWMPERx+1)/100%
          00%:PWMDTYx=0x00
          10%:PWMDTYx=0x01
          20%:PWMDTYx=0x02
          30%:PWMDTYx=0x03
          40%:PWMDTYx=0x04
          50%:PWMDTYx=0x05
          60%:PWMDTYx=0x06
          70%:PWMDTYx=0x07
          80%:PWMDTYx=0x08
          90%:PWMDTYx=0x09
          99%:PWMDTYx=0x0A

          CODE:
          #include
          #include
          #pragma LINK_INFO DERIVATIVE "mc9s12xs128"
          //===========================================================//
          //PWM輸出,控制直流電機轉(zhuǎn)動方向已經(jīng)轉(zhuǎn)速
          //author: Yangtze
          //time:2009/4/17/2:15:45
          //===========================================================//
          unsigned char Ton[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x08,} ;
          unsigned int Tperiod=0x09;
          void main(void)
          {
          PWME=0x00;
          PWMPRCLK=0x66;//通道時鐘預(yù)分頻, 16分頻
          PWMSCLA=0x19; //時鐘A分頻 ,50分頻
          PWMSCLB=0x19; //時鐘B分頻 ,50分頻

          PWMCLK=0x0F;//PCLK1選擇ClockSA,PCLK選擇ClockSB

          PWMPOL=0x0F;//起始輸出高電平
          PWMCAE=0x00;//PWM輸出左對齊
          PWMCTL=0x3C;//通8道01級聯(lián),通道23級聯(lián)

          PWMPER0=0x00; //級聯(lián)通道01的周期高字節(jié)
          PWMPER1=0x09; //級聯(lián)通道01的周期低字節(jié)
          PWMPER0=0x00; //級聯(lián)通道23的周期高字節(jié)
          PWMPER3=0x09; //級聯(lián)通道23的周期低字節(jié)

          PWMDTY0=0x00; //級聯(lián)通道01的占空比高字節(jié)
          PWMDTY1=Ton[8]; //級聯(lián)通道01的占空比低字節(jié)
          PWMDTY2=0x00; //級聯(lián)通道01的占空比高字節(jié)
          PWMDTY3=Ton[0]; //級聯(lián)通道01的占空比低字節(jié)
          PWME=0x0F;
          for(;;);
          }

          //后記:
          //以上程序中,因為輸出頻率不是很高,故8位PWM輸出已經(jīng)夠用,上述程序設(shè)置通道級聯(lián)完全是多次一舉。
          //在選擇級聯(lián)與否時,一定要具體問題具體分析,不能想當(dāng)然的使用,否則又可能會造成資源浪費。
          //上述程序中,沒有對HCS12進行PLL分頻,使得HCS12的BusClock很長,在一定程度上造成了資源浪費。
          //在最后運行過程中,出現(xiàn)了一點小問題,就是,PWM輸出周期并補時計劃中的1MS,而是3.5MS。示波器應(yīng)該沒有問題,估計是在計算周期的過程中出錯,影響了結(jié)果輸出。
          //朋友,如果和我一樣,對單片機感興趣的話,和我一塊檢查一下錯誤的原因吧。看看誰檢查到的原因時正確的。嘿嘿。


          關(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); })();