新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機與步進電機的控制

        單片機與步進電機的控制

        作者: 時間:2016-11-30 來源:網絡 收藏
        最近好長一段時間沒有來51hei單片機網了,接近考試的日子越來越近,開始把時間轉到考試的準備上了,這兩天回過頭來想想,應該有快半個月對單片機的學習沒有什么進展了,不過我一直堅信,單片機學習的路上,只要你肯堅持,只要你肯吃苦、肯付出,再難的關也不是問題,當然,最近也深深地體會到,學習單片機如果有一個好的老師作為指導,那學起來就不用那么費勁了,不過也沒有關系,很多東西,條件不好的時候,就需要自己去改變,去想想其它的法子。

        這兩天開始研究單片機與步進電機的控制問題,感覺真的很好玩,步進電機在工業的很多地方都有很大的應用,比如流水線的運轉,智能小車,系統定位都有很大的用處。也是一個核心的技術。步進電機的控制主要是由單片機IO口高低電平的控制以及輸出脈沖來控制其轉速,達到了一種數模轉換的效果。讓單片機以并行二進制數轉換成并行脈沖序列,并實現方向控制。只要是脈沖在步進電機允許的范圍之內,每個脈沖將使步進電機轉動一個固定的步距角度,根據步距角的大小及實際走的步數,只要知道初始位置,便可以根據計算知道其最終位置了。

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

        步進電機轉動時的驅動的電流比較大,所以在使用單片機控制的時候,要在中間加一個放大電路,或者加上一些常用的放大電流的芯片,比如人們很經常用的一個芯片ULM2003.只有這樣才能夠使步進電機轉動,不然會因為電流太小而實現不了效果。

        程序如下:
        #include
        #define uchar unsigned char
        #define uint unsigned int
        uchar num[]={0x01,0x02,0x04,0x08};
        void delay(uint z)
        {
        uint a;
        for(a=0;a;

        }
        void main()
        {
        uchar i;
        uint j;

        for(j=0;j<2045;j++)
        {
        { P1=num[i];
        delay(1200);
        i++;
        if(i==4)
        i=0; }
        }

        while(1);
        }
        其中,z控制轉速,j控制轉的圈數,由計算和調試得出當j=2045時,步進電機走的圈數為1圈,這樣,我們要步進電機走多少圈時,可以在里面嵌套一個程序,達到我們要電機轉多少圈的目的。關于電機的參數打開http://www.51hei.com/mcu/73.html這個鏈接來查看.里面寫得非常詳細.



        關鍵詞: 單片機步進電

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 本溪| 普陀区| 鹤山市| 明星| 阳春市| 丰县| 扎囊县| 厦门市| 集贤县| 城口县| 天津市| 西丰县| 定南县| 英山县| 宜兰市| 望谟县| 盈江县| 彭山县| 十堰市| 莱阳市| 延吉市| 丰镇市| 阿拉尔市| 恭城| 昌乐县| 大名县| 灌阳县| 武义县| 白朗县| 龙州县| 综艺| 嘉荫县| 台北市| 怀远县| 东乡族自治县| 白城市| 漳浦县| 利川市| 綦江县| 西宁市| 库车县|