欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 316|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

我的單片機(jī)步進(jìn)電機(jī)設(shè)計(jì) 含源程序,模擬電路圖,Proteus仿真圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
這是我最近做的一個(gè)步進(jìn)電機(jī)設(shè)計(jì)
使用的單片機(jī)是AT89C51
需要用到軟件Keil5,Proteus8.9
是根據(jù)我們的設(shè)計(jì)要求做的
附件里包含步進(jìn)電機(jī)的單片機(jī)源代碼,以及Proteus模擬電路圖,設(shè)計(jì)文件
對(duì)該作品的介紹可能不是很嚴(yán)謹(jǐn),還請(qǐng)大家多包涵
如果該設(shè)計(jì)存在學(xué)術(shù)性錯(cuò)誤,還請(qǐng)為我指正!
以下是設(shè)計(jì)內(nèi)容,希望它可以幫到你:

所涉及到的知識(shí):

一、步進(jìn)電機(jī)是什么?

步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓位移的開環(huán)控制元件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個(gè)脈沖信號(hào),電機(jī)則轉(zhuǎn)過一個(gè)步距角。這一線性關(guān)系的存在,加上步進(jìn)電機(jī)只有周期性的誤差而無累積誤差等特點(diǎn)。使得在速度、位置等控制領(lǐng)域用步進(jìn)電
機(jī)來控制變的非常的簡(jiǎn)單。

二、步進(jìn)電機(jī)的主要特性有哪些?

1.  步進(jìn)電機(jī)必須加驅(qū)動(dòng)才可以運(yùn)轉(zhuǎn),驅(qū)動(dòng)信號(hào)必須為脈沖信號(hào),沒有脈沖的時(shí)候,步進(jìn)電機(jī)靜止,如果加入適當(dāng)?shù)拿}沖信號(hào),就會(huì)以一定的角度(稱為步角)轉(zhuǎn)動(dòng)。轉(zhuǎn)動(dòng)的速度和脈沖的頻率成正比。

2.  本次使用的步進(jìn)電機(jī)是 28BYJ48 5V 驅(qū)動(dòng)的 4 相 5 線的步進(jìn)電機(jī),而且是減速步進(jìn)電機(jī),減速比為 1:64,步進(jìn)角為 5.625/64 度。如果需要轉(zhuǎn)動(dòng) 1 圈,那么需要 360/5.625*64=4096 個(gè)脈沖信號(hào)。

3.  步進(jìn)電機(jī)具有瞬間啟動(dòng)和急速停止的優(yōu)越特性。

4.  改變脈沖的順序,可以方便的改變轉(zhuǎn)動(dòng)的方向。


本設(shè)計(jì)將通過實(shí)現(xiàn)一個(gè)基于單片機(jī)的可以通過按鍵精確控制電機(jī)正反轉(zhuǎn),加減速,開始和停止控制電路來說明單片機(jī)如何工作

具體操作步驟如下:

第一步:Keil編程(此處省略了文件創(chuàng)建步驟)

第一部分   這一串代碼可以控制電機(jī)的轉(zhuǎn)向

#include<reg51.h>
#define uchar unsigned char
bit flag;
uchar  a= 1,t = 100;
uchar code tab1[] = {0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
uchar code tab2[] = {0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};
sfr   P1M1   = 0X91;
sfr   P1M0   = 0X92;
sfr  P2M1   = 0X95;
sfr  P2M0   = 0X96;

第二部分  這一串代碼可以實(shí)現(xiàn)對(duì)電機(jī)的接近毫秒級(jí)延時(shí)的控制,原理是通過嵌套循環(huán)消耗 CPU 時(shí)間實(shí)現(xiàn)延時(shí)

void delay(uchar ms)
{ uchar j;
while(ms--)
for(j=0;j<100;j++);}

第三部分   這一串代碼可以實(shí)現(xiàn)電機(jī)的轉(zhuǎn)向切換、調(diào)速、啟停控制

void keyscan()
{   P1M1 = 0;
    P2M1 = 0;
P1M0 = 0XFF;
P2M0 = 0XFF;
if(P2!=0xff)
  {  delay(5);
  if(P2!=0xff)
  {  switch(P2)
   {
    case 0xfe:a=1;break;//正轉(zhuǎn)
    case 0xfd:a=2;break;//反轉(zhuǎn)
    case 0xfb:if(t>50)t=t-10;else t=50;break;//加速
    case 0xf7:if(t<150)t=t+10;else t=150;break;//減速
    case 0xef:flag=1;break;//開始
    case 0xdf:flag=0;break;//停止
   }
   while(P2!=0xff);
  }
}
}

第四部分   這一段代碼可以通過定時(shí)器 0 實(shí)現(xiàn)定時(shí)中斷

void time0_init() //定時(shí)器T0初始化
{
TMOD=0x01;   //設(shè)置定時(shí)器0工作方式1
TH0=(65536-50000)/256;//定時(shí)50ms取高八位
TL0=(65536-50000)%256; //取低八位
ET0=1; //開定時(shí)器0中斷使能
EA=1;  //開總中斷使能
TR0=1; //開啟中斷
}
void time0() interrupt 1 //定時(shí)器T0入口函數(shù)
{
TH0=(65536-50000)/256; //定時(shí)50ms重新賦初值
TL0=(65536-50000)%256;
keyscan();
}

第五部分   這一段是主函數(shù),根據(jù)flag(啟停標(biāo)志)和a(轉(zhuǎn)向標(biāo)志)控制電機(jī)運(yùn)行

void main()
{   uchar i;
     time0_init();
while(1)
{  if(flag)
  {  if(a==1)
   { for(i=0;i<8;i++)
    {  P1=tab1;
     delay(t);}
   }
   if(a==2)
   { for(i=0;i<8;i++)
    {   P1=tab2;
     delay(t);
    }
   }
  }
  else
   P1=0x00;
}  
}

Keil5內(nèi)的代碼如下圖







第二步:使用Proteus仿真電路(此處省略了文件創(chuàng)建步驟)


放置元件AT89C51(單片機(jī))與L298(電機(jī)驅(qū)動(dòng)芯片)
將單片機(jī)的P1 口(P1.0~P1.5)連接 L298 的IN1~IN4和ENA/ENB(使能端),用于輸出步進(jìn)電機(jī)的相序控制信號(hào)和使能信號(hào)
將單片機(jī)的P2 口(P2.0~P2.5)連接 6 個(gè)按鍵(正轉(zhuǎn)、反轉(zhuǎn)、加速、減速、啟動(dòng)、停止),用于接收用戶操作指令
XTAL1/XTAL2 預(yù)留晶振接口(外接晶振和電容構(gòu)成時(shí)鐘電路)
RST 為復(fù)位引腳(外接復(fù)位電路)

L298 電機(jī)驅(qū)動(dòng)芯片的IN1~IN4接口連接單片機(jī) P1 口,接收相序控制信號(hào);ENA/ENB連接單片機(jī) P1 口,控制驅(qū)動(dòng)模塊的使能(可用于調(diào)速)
VCC接 5V 邏輯電源,VS接電機(jī)驅(qū)動(dòng)電源(需根據(jù)電機(jī)功率選擇,通常≥12V);OUT1~OUT4連接步進(jìn)電機(jī)的 4 個(gè)繞組,輸出驅(qū)動(dòng)電流。
SENSA/SENSB為電流檢測(cè)引腳(本電路中未使用,直接接地),可用于過流保護(hù)。

電機(jī)的 4 個(gè)繞組對(duì)應(yīng)連接 L298 的OUT1~OUT4,由驅(qū)動(dòng)芯片輸出的相序電流驅(qū)動(dòng)轉(zhuǎn)動(dòng)。




Proteus內(nèi)的電路連接情況如下圖




實(shí)驗(yàn)?zāi)P痛罱ㄍ瓿桑酉聛磉M(jìn)行第三步



第三步:在Proteus內(nèi)進(jìn)行模擬實(shí)驗(yàn)


點(diǎn)擊左下角的按鍵啟動(dòng)模擬,點(diǎn)擊各個(gè)按鈕,觀察電機(jī)的旋轉(zhuǎn)情況



點(diǎn)擊“啟動(dòng)”,電機(jī)開始旋轉(zhuǎn)



點(diǎn)擊“加速”,電機(jī)轉(zhuǎn)速變快



點(diǎn)擊“反轉(zhuǎn)”,電機(jī)朝反方向轉(zhuǎn)動(dòng)



點(diǎn)擊“停止”,電機(jī)停轉(zhuǎn)



實(shí)驗(yàn)成功

由上述結(jié)果證明:

步進(jìn)電機(jī)必須加驅(qū)動(dòng)才可以運(yùn)轉(zhuǎn),驅(qū)動(dòng)信號(hào)必須為脈沖信號(hào),沒有脈沖的時(shí)候,步進(jìn)電機(jī)靜止,如果加入適當(dāng)?shù)拿}沖信號(hào),就會(huì)以一定的角度轉(zhuǎn)動(dòng)。轉(zhuǎn)動(dòng)的速度和脈沖的頻率成正比,而且改變脈沖的順序,可以改變電機(jī)轉(zhuǎn)動(dòng)的方向。

本設(shè)計(jì)到此結(jié)束,謝謝您的觀看!
仿真程序下載: 步進(jìn)電機(jī).zip (939.21 KB, 下載次數(shù): 0)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1161211 發(fā)表于 2025-12-10 09:06 | 只看該作者
T0定時(shí)器初值是不是搞反了,以12M主頻為例,如果定時(shí)50ms,應(yīng)該是65536-15536吧?
回復(fù)

使用道具 舉報(bào)

板凳
ID:1163351 發(fā)表于 2025-12-10 12:24 | 只看該作者
發(fā)表于 2025-12-10 09:06
T0定時(shí)器初值是不是搞反了,如果定時(shí)50ms,應(yīng)該是65536-15536吧?

我用人工智能搜了一下,它告訴我應(yīng)該是65536-50000,說是“需要計(jì)數(shù) 50000 次才能達(dá)到 50ms 定時(shí)”這樣
回復(fù)

使用道具 舉報(bào)

地板
ID:1161211 發(fā)表于 2025-12-10 19:58 | 只看該作者
RoLain 發(fā)表于 2025-12-10 12:24
我用人工智能搜了一下,它告訴我應(yīng)該是65536-50000,說是“需要計(jì)數(shù) 50000 次才能達(dá)到 50ms 定時(shí)”這樣

你是對(duì)的,不好意思我搞錯(cuò)了。
回復(fù)

使用道具 舉報(bào)

5#
ID:1163351 發(fā)表于 2025-12-11 10:34 | 只看該作者
kpffq 發(fā)表于 2025-12-10 19:58
你是對(duì)的,不好意思我搞錯(cuò)了。

沒事,謝謝你能提出問題
回復(fù)

使用道具 舉報(bào)

6#
ID:876947 發(fā)表于 2025-12-11 11:54 | 只看該作者
能運(yùn)行嗎?

回復(fù)

使用道具 舉報(bào)

7#
ID:1163351 發(fā)表于 2025-12-11 15:46 | 只看該作者

我在Proteus里成功運(yùn)行了,是遇到什么問題了嗎?
回復(fù)

使用道具 舉報(bào)

8#
ID:876947 發(fā)表于 2025-12-12 10:34 | 只看該作者
RoLain 發(fā)表于 2025-12-11 15:46
我在Proteus里成功運(yùn)行了,是遇到什么問題了嗎?

我做了實(shí)驗(yàn)速度可調(diào)但快不了
回復(fù)

使用道具 舉報(bào)

9#
ID:1163351 發(fā)表于 2025-12-13 14:19 | 只看該作者
白水大蝦2016 發(fā)表于 2025-12-12 10:34
我做了實(shí)驗(yàn)速度可調(diào)但快不了

按加速鍵也轉(zhuǎn)不了更快嗎?還請(qǐng)?jiān)敿?xì)說明
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表