久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3760|回復(fù): 18
收起左側(cè)

51單片機(jī)控制步進(jìn)電機(jī)的問題

  [復(fù)制鏈接]
ID:797796 發(fā)表于 2020-7-25 20:30 | 顯示全部樓層 |閱讀模式
150黑幣
關(guān)于用51單片機(jī)控制步進(jìn)電機(jī)速度和直線位移的問題,要求用定時(shí)器產(chǎn)生脈沖,還要先設(shè)置好運(yùn)動(dòng)的速度再運(yùn)行,新手沒用單片機(jī)控制過電機(jī),按照以下要求應(yīng)該怎么去實(shí)現(xiàn)呢?

電機(jī).PNG
步進(jìn).PNG
回復(fù)

使用道具 舉報(bào)

ID:789121 發(fā)表于 2020-7-26 01:13 | 顯示全部樓層
所以是你要讓別人幫你做這個(gè)項(xiàng)目么?
回復(fù)

使用道具 舉報(bào)

ID:797796 發(fā)表于 2020-7-26 07:36 | 顯示全部樓層
不要黑 發(fā)表于 2020-7-26 01:13
所以是你要讓別人幫你做這個(gè)項(xiàng)目么?

提供下思路
回復(fù)

使用道具 舉報(bào)

ID:797796 發(fā)表于 2020-7-26 07:56 | 顯示全部樓層
不要黑 發(fā)表于 2020-7-26 01:13
所以是你要讓別人幫你做這個(gè)項(xiàng)目么?

主要是不知道怎么控制電機(jī)轉(zhuǎn)速固定,比如每秒轉(zhuǎn)2.5圈
回復(fù)

使用道具 舉報(bào)

ID:797796 發(fā)表于 2020-7-26 09:20 | 顯示全部樓層

我寫的這個(gè)程序電機(jī)轉(zhuǎn)不起來,大佬們幫我看下哪里出問題了好嗎
#include <reg51.h>//包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義
#define uint unsigned int
#define uchar unsigned char
uchar tab[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
sbit OUT=P2^2;    //定義OUT輸出端口
unsigned char count,i;
void Init_Timer0(void)
{
        TMOD |= 0x01;                      //使用模式1,16位定時(shí)器,使用"|"符號可以在使用多個(gè)定時(shí)器時(shí)不受影響                     
        TH0=(65535-12000)/256;                 
        TL0=(65535-12000)*256;
        EA=1;                         //總中斷打開
        ET0=1;                        //定時(shí)器中斷打開
        TR0=1;                        //定時(shí)器開關(guān)打開
}
main()
{
        Init_Timer0();
        OUT=0;
        while(1)
        {
                ;
        }
}

void Timer0_isr(void) interrupt 1
{

        TH0=(65535-20000)/256;                  //重新賦值 12M晶振計(jì)算,指令周期1uS,
        TL0=(65535-20000)*256;         
        count++;
        if(count==20)
        {
        count=0;
        OUT=~OUT;
                {i++;if(i>7)i=0;P0=tab;}                     //用示波器可看到方波輸出
        }
}
回復(fù)

使用道具 舉報(bào)

ID:782419 發(fā)表于 2020-7-26 10:09 | 顯示全部樓層
我覺得你的P0可能是步進(jìn)電機(jī)的驅(qū)動(dòng)端口吧,所以P0=tab[i];你是不是少寫了什么?
如果步進(jìn)電機(jī)真的還是不能動(dòng),你可以看下步進(jìn)電機(jī)的工作參數(shù),是不是頻率什么的不符合電機(jī)的要求。
回復(fù)

使用道具 舉報(bào)

ID:789121 發(fā)表于 2020-7-26 11:32 | 顯示全部樓層
Irvingzong 發(fā)表于 2020-7-26 09:20
我寫的這個(gè)程序電機(jī)轉(zhuǎn)不起來,大佬們幫我看下哪里出問題了好嗎
#include //包含頭文件,一般情況不需要 ...

建議先看一下步進(jìn)電機(jī)的驅(qū)動(dòng)方式 接線 原理
回復(fù)

使用道具 舉報(bào)

ID:808485 發(fā)表于 2020-7-27 18:33 | 顯示全部樓層
我看不見你上傳的圖片,但根據(jù)程序可以推斷一二:
1。單片機(jī)P0^0到P0^3對應(yīng)步進(jìn)電機(jī)的4根線(中間經(jīng)過功率放大)
2。單片機(jī)P2^2應(yīng)該是接了個(gè)LED之類的東西,用來指示電機(jī)運(yùn)轉(zhuǎn)狀態(tài),閃爍表示在轉(zhuǎn)


程序分析:
你仔細(xì)看這個(gè) tab[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};
共8個(gè)數(shù),把數(shù)據(jù)用二進(jìn)制表示:
0001
0011
0010
0110
0100
1100
1000
1001
這4位二進(jìn)制數(shù),從P0^0到P0^3送出到電機(jī)的4根線:我們假設(shè)是 A B C D 四根線。




先講解一下二相四線步進(jìn)電機(jī)工作原理:
我畫一個(gè)示意圖,@@@@表示線圈,AB是一伙,CD是一伙,NNN+SSS是磁鐵:


DBCA=0001,電流從A流向B,磁鐵N極指向1號線圈方向
D-------------------------+
A------------@@@1@@@----+ |
B-------+               | |
C-----+ |       N       | |
      | |       N       | |
      @ |       +       | @
      2 |       S       | 4
      @ |       S       | @
      | |               | |
      | +----@@@3@@@----+ |
      +-------------------+




DBCA=0011,電流從A流向B,但同時(shí)C到D也有電流,這時(shí)磁鐵N極同時(shí)被1號2號線圈吸引,只好處于中間位置
D-------------------------+
A------------@@@1@@@----+ |
B-------+               | |
C-----+ |   N           | |
      | |     N         | |
      @ |       +       | @
      2 |         S     | 4
      @ |           S   | @
      | |               | |
      | +----@@@3@@@----+ |
      +-------------------+




DBCA=0010,電流從C流向D,磁鐵N極指向2號線圈
D-------------------------+
A------------@@@1@@@----+ |
B-------+               | |
C-----+ |               | |
      | |               | |
      @ |               | @
      2 | NNNN  +  SSSS | 4
      @ |               | @
      | |               | |
      | +----@@@3@@@----+ |
      +-------------------+




DBCA=0110,電流從C流向D,同時(shí)B流向A,磁鐵N極同時(shí)被2號3號線圈吸引
D-------------------------+
A------------@@@1@@@----+ |
B-------+               | |
C-----+ |           S   | |
      | |         S     | |
      @ |       +       | @
      2 |     N         | 4
      @ |   N           | @
      | |               | |
      | +----@@@3@@@----+ |
      +-------------------+




DBCA=0100,電流從B流向A,磁鐵N極指向3號線圈
D-------------------------+
A------------@@@1@@@----+ |
B-------+               | |
C-----+ |       S       | |
      | |       S       | |
      @ |       +       | @
      2 |       N       | 4
      @ |       N       | @
      | |               | |
      | +----@@@3@@@----+ |
      +-------------------+


看出規(guī)律了吧?就這樣繼續(xù)轉(zhuǎn)下去,轉(zhuǎn)一圈,剛好共8個(gè)方向,剛好對應(yīng) tab[]里面8個(gè)數(shù)。
如果上面的示意圖明白了,那讓電機(jī)反轉(zhuǎn),只要從最后一張圖往上看起就好了,在程序中更爽,++變--搞定。


你的程序該有的都有了,看得出來,是從別處搬來的,只是tab抄漏了個(gè)[ i]呵呵,別生氣。[ i]
程序只有一處錯(cuò)誤:
{i++;if(i>7)i=0;P0=tab[ i];}                     //用示波器可看到方波輸出
回復(fù)

使用道具 舉報(bào)

ID:808485 發(fā)表于 2020-7-27 19:23 | 顯示全部樓層
網(wǎng)站設(shè)計(jì)的不夠好,回帖字體無效。試試圖片吧。 無標(biāo)題.png


另外來個(gè)附加題,如果P2^2不是接LED,那可能是做什么的?
答:真要那樣的話,那這方案設(shè)計(jì)者,是個(gè)合格的電子工程師。
1。眾所周知,步進(jìn)電機(jī)走的時(shí)候,電能轉(zhuǎn)換為機(jī)械能出去了,但停的時(shí)候呢?上面那個(gè)tab[]表,只有8個(gè)數(shù),沒有0000的存在,就是說,電機(jī)會(huì)停到其中一個(gè)位置,線圈一直通著電,沒有機(jī)械能輸出,那電能就全部轉(zhuǎn)化為熱能了,電機(jī)變燒雞。
2。解決上述問題,有幾個(gè)技術(shù)層次:
1).停機(jī)時(shí),輸出全0000或者全1111,就沒電流消耗了
2).以上考慮不周,有時(shí)電機(jī)停車時(shí)需要有一個(gè)保持力矩,不能斷電,但這時(shí)仍有兩種選擇,停車在兩相線圈都通電狀態(tài),力大發(fā)熱也大,停在一相線圈通電狀態(tài)發(fā)熱小,可以看需要選擇。
3).進(jìn)階的,當(dāng)電機(jī)再次啟動(dòng)時(shí),由靜止到運(yùn)動(dòng),需要克服一個(gè)額外的靜摩擦力,這時(shí)需要更大的力,也就是雙相驅(qū)動(dòng),所以程序設(shè)計(jì)中,就需要在上次停車時(shí),讓電機(jī)停在單相通電狀態(tài)。因?yàn)殡姍C(jī)轉(zhuǎn)動(dòng)是一二一二一二的順序,這樣就可以實(shí)現(xiàn)用二啟動(dòng)了。
4).繼續(xù)進(jìn)階,如果程序員不懂電子,不懂電機(jī),是個(gè)新手,做為硬件工程師怎么做?有辦法,加個(gè)單穩(wěn)電路,像看門狗一樣,看著電機(jī),讓程序員在電機(jī)程序里面喂狗,一旦程序死機(jī)了,跑飛了,進(jìn)斷點(diǎn)了,刷固件了的時(shí)候,硬件看門狗切斷電機(jī)電源,防止電機(jī)燒毀。單穩(wěn)電路沒多復(fù)雜,一個(gè)“通交隔直”的電容接個(gè)三極管就OK了。
這也就是P2^2的另一種用途猜想。

回復(fù)

使用道具 舉報(bào)

ID:801878 發(fā)表于 2020-7-28 09:59 | 顯示全部樓層
PWN控制,程序里面可以設(shè)置speed
回復(fù)

使用道具 舉報(bào)

ID:808700 發(fā)表于 2020-7-28 10:08 | 顯示全部樓層
對一下手冊,
回復(fù)

使用道具 舉報(bào)

ID:797796 發(fā)表于 2020-7-28 10:25 | 顯示全部樓層
gbchang 發(fā)表于 2020-7-27 19:23
網(wǎng)站設(shè)計(jì)的不夠好,回帖字體無效。試試圖片吧。

非常感謝大佬的耐心解答!我能夠理解了基本原理,只是還有一個(gè)問題是我只需要簡單實(shí)現(xiàn)這個(gè)二相電機(jī)以10mm/s的線速度運(yùn)行,也就是每秒轉(zhuǎn)2.5圈,而電機(jī)的步距角是0.9度,所以我的想法是每400ms定時(shí)一次轉(zhuǎn)一圈,可我仿真時(shí)把電機(jī)設(shè)為0.9度之后發(fā)現(xiàn)電機(jī)只在小幅度范圍轉(zhuǎn)動(dòng),幾乎不動(dòng),不知道是不是定時(shí)的方式不對呢?程序如下,希望大佬能幫忙看下,十分感謝!
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar tab[]={0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09};   
unsigned char count,i;
void Init_Timer0(void)
{
        TMOD |= 0x01;                                         
        TH0=(65535-20000)/256;         
        TL0=(65535-20000)%256;
        EA=1;                         //總中斷打開
        ET0=1;                        //定時(shí)器中斷打開
        TR0=1;                        //定時(shí)器開關(guān)打開
}
main()
{
        Init_Timer0();
        while(1)
        {
                ;
        }
}

void Timer0_isr(void) interrupt 1
{

        TH0=(65535-20000)/256;                 
        TL0=(65535-20000)%256;            
        count++;
        if(count==20)
        {
        count=0;
                {i++;if(i>7)i=0;P0=tab;}
        }
}
回復(fù)

使用道具 舉報(bào)

ID:797796 發(fā)表于 2020-7-28 10:27 | 顯示全部樓層
圖片如下
電機(jī).PNG
回復(fù)

使用道具 舉報(bào)

ID:797796 發(fā)表于 2020-7-28 15:16 | 顯示全部樓層
Irvingzong 發(fā)表于 2020-7-28 10:25
非常感謝大佬的耐心解答!我能夠理解了基本原理,只是還有一個(gè)問題是我只需要簡單實(shí)現(xiàn)這個(gè)二相電機(jī)以10mm ...

有的,只是復(fù)制不上來,現(xiàn)在電機(jī)能轉(zhuǎn)了,主要是0.9步距角轉(zhuǎn)的很慢,不能實(shí)現(xiàn)每秒2.5圈,但修改定時(shí)器時(shí)長又導(dǎo)致失步,應(yīng)該怎么修改呢?
回復(fù)

使用道具 舉報(bào)

ID:808485 發(fā)表于 2020-7-28 16:31 | 顯示全部樓層
Irvingzong 發(fā)表于 2020-7-28 10:25
非常感謝大佬的耐心解答!我能夠理解了基本原理,只是還有一個(gè)問題是我只需要簡單實(shí)現(xiàn)這個(gè)二相電機(jī)以10mm ...

。。。,也就是每秒轉(zhuǎn)2.5圈,而電機(jī)的步距角是0.9度,所以我的想法是每400ms定時(shí)一次轉(zhuǎn)一圈,。。。

進(jìn)一次中斷只轉(zhuǎn)一步,轉(zhuǎn)一步是0.9度。

如果要每秒轉(zhuǎn)2.5圈,就是 2.5圈*360度=900度,
900度/0.9度每步 = 1000步,
所以,你需要每秒中斷1000次,剛好是 1ms 一次中斷

另外你的源碼可能由于字體等原因,在網(wǎng)站顯示不正常,我重新抄一遍給你:
count++;
if(count == 20)
{
    count = 0;
    P0 = tab[i++];
    i &= 0x07;
}
回復(fù)

使用道具 舉報(bào)

ID:750684 發(fā)表于 2020-9-7 08:26 | 顯示全部樓層
參考手冊資料
回復(fù)

使用道具 舉報(bào)

ID:106821 發(fā)表于 2020-9-15 14:44 | 顯示全部樓層
電機(jī)轉(zhuǎn)速控制取決于定時(shí)器產(chǎn)生的脈沖
回復(fù)

使用道具 舉報(bào)

ID:737842 發(fā)表于 2020-9-16 11:29 | 顯示全部樓層
脈沖的頻率控制速度,脈沖的數(shù)量控制位移
回復(fù)

使用道具 舉報(bào)

ID:276685 發(fā)表于 2020-9-16 20:34 | 顯示全部樓層
51黑論壇_s型加減速.rar (1.97 MB, 下載次數(shù): 6)
附錄資料.pdf (152.63 KB, 下載次數(shù): 7)

希望這些可以幫到你
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99国产精品一区二区三区 | 欧美二区乱c黑人 | 天天干视频 | 天天操夜夜操 | 喷水毛片 | 日韩有码一区 | 在线免费观看欧美 | 久久免费观看视频 | 亚洲精品一区二区另类图片 | 日本一区二区三区在线观看 | 影音先锋中文在线 | 范冰冰一级做a爰片久久毛片 | 在线亚洲人成电影网站色www | 色资源站 | 国产精品免费看 | 精品少妇一区二区三区在线播放 | 日本不卡免费新一二三区 | 人人艹人人 | 91原创视频 | 国产不卡在线 | 久久国产精品偷 | www.com久久久 | h视频免费观看 | 精品亚洲永久免费精品 | 国产综合在线视频 | 男人视频网站 | a欧美| 久久久久国产精品一区二区 | 午夜专区 | 91一区二区三区 | 99免费在线视频 | 国内自拍视频在线观看 | 国产亚洲精品久久yy50 | 毛色毛片免费看 | 亚洲色图在线观看 | 亚洲免费一区 | 国产精品久久久久久久久动漫 | 欧美精品成人一区二区三区四区 | 亚洲激精日韩激精欧美精品 | 欧洲毛片 | 毛片的网址 |