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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1163351 發(fā)表于 2025-12-8 20:40 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
這是我最近做的一個步進電機設(shè)計
使用的單片機是AT89C51
需要用到軟件Keil5,Proteus8.9
是根據(jù)我們的設(shè)計要求做的
附件里包含步進電機的單片機源代碼,以及Proteus模擬電路圖,設(shè)計文件
對該作品的介紹可能不是很嚴(yán)謹(jǐn),還請大家多包涵
如果該設(shè)計存在學(xué)術(shù)性錯誤,還請為我指正!
以下是設(shè)計內(nèi)容,希望它可以幫到你:

所涉及到的知識:

一、步進電機是什么?

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

二、步進電機的主要特性有哪些?

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

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

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

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


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

具體操作步驟如下:

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

第一部分   這一串代碼可以控制電機的轉(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;

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

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

第三部分   這一串代碼可以實現(xiàn)電機的轉(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);
  }
}
}

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

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

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

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(單片機)與L298(電機驅(qū)動芯片)
將單片機的P1 口(P1.0~P1.5)連接 L298 的IN1~IN4和ENA/ENB(使能端),用于輸出步進電機的相序控制信號和使能信號
將單片機的P2 口(P2.0~P2.5)連接 6 個按鍵(正轉(zhuǎn)、反轉(zhuǎn)、加速、減速、啟動、停止),用于接收用戶操作指令
XTAL1/XTAL2 預(yù)留晶振接口(外接晶振和電容構(gòu)成時鐘電路)
RST 為復(fù)位引腳(外接復(fù)位電路)

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

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




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




實驗?zāi)P痛罱ㄍ瓿,接下來進行第三步



第三步:在Proteus內(nèi)進行模擬實驗


點擊左下角的按鍵啟動模擬,點擊各個按鈕,觀察電機的旋轉(zhuǎn)情況



點擊“啟動”,電機開始旋轉(zhuǎn)



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



點擊“反轉(zhuǎn)”,電機朝反方向轉(zhuǎn)動



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



實驗成功

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

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

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

評分

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

查看全部評分

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

使用道具 舉報

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

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

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

回復(fù)

使用道具 舉報

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

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

使用道具 舉報

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

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

使用道具 舉報

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

按加速鍵也轉(zhuǎn)不了更快嗎?還請詳細(xì)說明
回復(fù)

使用道具 舉報

10#
ID:876947 發(fā)表于 2025-12-24 12:08 | 只看該作者
可以變快,但不能很快
回復(fù)

使用道具 舉報

11#
ID:1168422 發(fā)表于 2026-3-19 04:43 | 只看該作者
謝謝,學(xué)習(xí)了,初來駕到
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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