新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PWM的單片機產生

        PWM的單片機產生

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

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

        本文引用地址:http://www.104case.com/article/201612/324609.htm

        圖1PWM波示意圖

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

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

        上PWM程序

        //文件名:T2PWM.c
        //功能:用T2定時器產生PWM波,頻率實調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;//達到脈寬設定值時,輸出PWM低電平

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

        {

        time=0;

        PWM=1;

        }

        }

        voidInitTimer2(void)//初始化函數

        {

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

        RCAP2L=0x0e7;//

        ET2=1;

        EA=1;

        TR2=1;

        }

        voidmain(void)

        {

        InitTimer2();

        while(1)

        {

        pluse=20;

        }

        }


        上一頁 1 2 下一頁

        關鍵詞: PWM單片

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 冀州市| 汾西县| 分宜县| 年辖:市辖区| 怀远县| 拜城县| 东山县| 紫金县| 罗甸县| 达孜县| 龙里县| 南通市| 乐昌市| 安西县| 崇仁县| 横峰县| 淮北市| 怀仁县| 西乌珠穆沁旗| 五指山市| 东乡族自治县| 靖州| 宝鸡市| 蕉岭县| 扎兰屯市| 三都| 五家渠市| 田阳县| 泰安市| 和林格尔县| 琼中| 醴陵市| 阿克陶县| 辉南县| 石棉县| 于田县| 中宁县| 阿克苏市| 连南| 河东区| 辽阳市|