新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機學習之3-步進電機

        51單片機學習之3-步進電機

        作者: 時間:2016-11-30 來源:網絡 收藏



        這種步進電機叫減速步進電機(里面有減速齒輪),減速比是1/64。

        里面減速齒輪轉動64圈,外面的轉子才轉動1圈。

        驅動電壓為5V,步進(距)角度5.625*1/64,采用5線4相。

        線的順序是VCC、A、B、C、D。


        1相勵磁方式驅動程序代碼:實現讓步進電機轉動360°。

        現在知道步進電機的最小步距角是5.625*1/64=0.087890625°

        1相勵磁方式每通一相電(即每轉動一次)的角度應該是最小步距角的2倍(即0.087890625°*2=0.17578125)。一個循環就是4相:A→B→C→D(即0.17578125*4=0.703125°)。

        那么一個循環就是0.703125°,要幾個循環才能轉動360°呢?360°/0.703125=512個循環。

        下面這份代碼是通過按位方式給A、B、C、D相輪流通電。

        #include"reg51.h"

        #defineucharunsignedchar

        #defineuintunsignedint

        sbitDA=P1^0;//A相

        sbitDB=P1^1;//B相

        sbitDC=P1^2;//C相

        sbitDD=P1^3;//D相

        voiddelay(uintx)

        {
        uinty;

        for(;x>0;x--)

        for(y=10;y>0;y--);

        }

        voidmain()

        {

        uinti=512;

        uchardelayCout=25;

        while(i--)//循環512次就轉動360°的角度。

        {

        DA=1; //A相通電

        delay(delayCout); //需要延時一小段時間讓硬件反應的過來

        DA=0; //A相斷電

        DB=1; //B相通電

        delay(delayCout);//需要延時一小段時間讓硬件反應的過來

        DB=0; //B相斷電

        DC=1; //C相通電

        delay(delayCout); //需要延時一小段時間讓硬件反應的過來

        DC=0; //C相斷電

        DD=1; //D相通電

        delay(delayCout);//需要延時一小段時間讓硬件反應的過來

        DD=0;//D相斷電

        }

        while(1);//旋轉完后就停在這里,避免重復執行main函數

        }

        上面那份源碼很好理解,下面是按邏輯運算實現的通斷A、B、C、D四相:

        #include"reg51.h"

        #defineucharunsignedchar

        #defineuintunsignedint

        voiddelay(uintx)

        {
        uinty;

        for(;x>0;x--)

        for(y=10;y>0;y--);

        }

        voidmain()

        {

        uinti=512;

        ucharXh;

        uchardelayCout=25;

        while(i--)//循環512次就轉動360°的角度。調整角度

        {

        Xh=3;

        P1=0x01;//P1==00000001相當于P1^0置1將A相通電

        delay(delayCout);//延時一段時間讓步進電機能反應過來

        while(Xh--)

        {

        P1<<=1;//第一次循環00000001<<1=00000010相當于P1^1置1同時將P1^0置0A相斷電B相通
        電每次循環都會將1向左移動一位
        delay(delayCout);//這里是調節切換速度,即轉動速度

        }

        }

        while(1);//旋轉完后就停在這里,避免重復執行main函數

        }


        步進電機主要知道它的工作原理和計算角度。步進電機最大的方便是可以精確控制轉動角度和速度。


        上一頁 1 2 下一頁

        關鍵詞: 51單片機步進電

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 通州市| 涡阳县| 曲水县| 宁南县| 竹溪县| 紫云| 云阳县| 松桃| 青州市| 修武县| 阳朔县| 澄城县| 金溪县| 安陆市| 沾化县| 繁昌县| 郸城县| 昌图县| 翁牛特旗| 上杭县| 冀州市| 和平区| 大足县| 临朐县| 贺兰县| 公安县| 阿坝县| 方城县| 东光县| 简阳市| 阿拉善右旗| 厦门市| 云龙县| 历史| 长岛县| 从化市| 自贡市| 昭觉县| 巴中市| 屏东市| 民乐县|