新聞中心

        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é)果輸出。
        //朋友,如果和我一樣,對單片機感興趣的話,和我一塊檢查一下錯誤的原因吧??纯凑l檢查到的原因時正確的。嘿嘿。


        關(guān)鍵詞: 飛思卡爾PWM控制直流電

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 富顺县| 阿克苏市| 七台河市| 哈密市| 临西县| 贵港市| 南郑县| 德兴市| 河东区| 凌源市| 石渠县| 天气| 静安区| 类乌齐县| 磴口县| 铜陵市| 普兰店市| 祁东县| 湛江市| 云龙县| 饶平县| 平顶山市| 额尔古纳市| 铁岭县| 花莲县| 醴陵市| 连江县| 大宁县| 中江县| 扬州市| 榕江县| 青浦区| 昌江| 柘荣县| 乌海市| 鲁甸县| 隆尧县| 莱阳市| 兴安县| 攀枝花市| 二手房|