女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用單片機(jī)控制步進(jìn)電機(jī)的資料和代碼詳細(xì)說明

Wildesbeast ? 來源:單片機(jī)教程網(wǎng) ? 作者:單片機(jī)教程網(wǎng) ? 2020-06-27 10:19 ? 次閱讀

步進(jìn)電機(jī)機(jī)電控制中一種常用的執(zhí)行機(jī)構(gòu),它的用途是將電脈沖轉(zhuǎn)化為角位移,通俗地說:當(dāng)步進(jìn)驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動一個固定的角度(及步進(jìn)角)。通過控制脈沖個數(shù)即可以控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。

T89C2051單片機(jī)驅(qū)動步進(jìn)電機(jī)的電路和源碼

程序

stepper.c

stepper.hex

/*

* STEPPER.C

* sweeping stepper‘’s rotor cw and cww 400 steps

* Copyright (c) 1999 by W.Sirichote

*/

#include c:mc518051io.h /* include i/o header file */

#include c:mc518051reg.h

register unsigned char j,flag1,temp;

register unsigned int cw_n,ccw_n;

unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90}

#define n 400

/* flag1 mask byte

0x01 run cw()

0x02 run ccw()

*/

main()

{

flag1=0;

serinit(9600);

dISAble(); /* no need timer interrupt */

cw_n = n; /* initial step number for cw */

flag1 |=0x01; /* initial enable cw() */

while(1){

{

tick_wait(); /* wait for 10ms elapsed */

energize(); /* round-robin execution the following tasks every 10ms */

cw();

ccw();

}

}

}

cw(){

if((flag1&0x01)!=0)

{

cw_n--; /* decrement cw step number */

if (cw_n !=0)

j++; /* if not zero increment index j */

else

{flag1&=~0x01; /* dISAble cw() execution */

ccw_n = n; /* reload step number to ccw counter */

flag1 |=0x02; /* enable cww() execution */

}

}

}

ccw(){

if((flag1&0x02)!=0)

{

ccw_n--; /* decremnent ccw step number */

if (ccw_n !=0)

j--; /* if not zero decrement index j */

else

{flag1&=~0x02; /* dISAble ccw() execution */

cw_n = n; /* reload step number to cw counter */

flag1 |=0x01; /* enable cw() execution */

}

}

}

tick_wait(){ /* cputick was replaced by simpler ASM code 10ms wait */

asm“ JNB TCON.5,*”; /* wait for TF0 set */

asm“ CLR TCON.5”; /* clear TF0 for further set */

asm“ ORL TH0,#$DC”; /* reload TH0 with $DC, TL0 = 0 */

}

energize(){

P1 = step[(j&0x07)]; /* only step 0-7 needed */

}

一、步進(jìn)電機(jī)常識

常見的步進(jìn)電機(jī)分三種:永磁式(PM),反應(yīng)式(VR)和混合式(HB),永磁式步進(jìn)一般為兩相,轉(zhuǎn)矩和體積較小,步進(jìn)角一般為7.5度 或15度;反應(yīng)式步進(jìn)一般為三相,可實現(xiàn)大轉(zhuǎn)矩輸出,步進(jìn)角一般為1.5度,但噪聲和振動都很大。在歐美等發(fā)達(dá)國家80年代已被淘汰;混合式步進(jìn)是指混合了永磁式和反應(yīng)式的優(yōu)點。它又分為兩相和五相:兩相步進(jìn)角一般為1.8度而五相步進(jìn)角一般為 0.72度。這種步進(jìn)電機(jī)的應(yīng)用最為廣泛。

二、永磁式步進(jìn)電機(jī)的控制

下面以電子愛好者業(yè)余制作中常用的永磁式步進(jìn)電機(jī)為例,來介紹如何用單片機(jī)控制步進(jìn)電機(jī)。

圖1是35BY型永磁步進(jìn)電機(jī)的外形圖,圖2是該電機(jī)的接線圖,從圖中可以看出,電機(jī)共有四組線圈,四組線圈的一個端點連在一起引出,這樣一共有5根引出線。要使用步進(jìn)電機(jī)轉(zhuǎn)動,只要輪流給各引出端通電即可。將COM端標(biāo)識為C,只要AC、 C、BC、 C,輪流加電就能驅(qū)動步進(jìn)電機(jī)運轉(zhuǎn),加電的方式可以有多種,如果將COM端接正電源,那么只要用開關(guān)元件(如三極管),將A、 、B、 輪流接地。

下表列出了該電機(jī)的一些典型參數(shù):

表135BY48S03型步機(jī)電機(jī)參數(shù)

型號 步距角 相數(shù) 電壓 電流 電阻 最大靜轉(zhuǎn)距 定位轉(zhuǎn)距 轉(zhuǎn)動慣量

35BY48S03 7.5 4 12 0.26 47 180 65 2.5

有了這些參數(shù),不難設(shè)計出控制電路,因其工作電壓為12V,最大電流為0.26A,因此用一塊開路輸出達(dá)林頓驅(qū)動器(ULN2003)來作為驅(qū)動,通過 P1.4~P1.7來控制各線圈的接通與切斷,電路如圖3所示。開機(jī)時,P1.4~P1.7均為高電平,依次將P1.4~P1.7切換為低電平即可驅(qū)動步進(jìn)電機(jī)運行,注意在切換之前將前一個輸出引腳變?yōu)楦唠娖健H绻淖冸姍C(jī)的轉(zhuǎn)動速度只要改變兩次接通之間的時間,而要改變電機(jī)的轉(zhuǎn)動方向,只要改變各線圈接通的順序。

圖135BY48S03型步進(jìn)電機(jī)外形圖

圖235BY48S03型步進(jìn)電機(jī)的接線圖

圖3單片機(jī)控制35BY48S03型步進(jìn)電機(jī)的電路原理

三、步進(jìn)電機(jī)的驅(qū)動實例

要求:控制電路如圖3所示,開機(jī)后,電機(jī)不轉(zhuǎn),按下啟動鍵,電機(jī)旋轉(zhuǎn),速度為25轉(zhuǎn)/分,按下加1鍵,速度增加,按下減1鍵,速度降低,最高速度為100轉(zhuǎn)/分,最低轉(zhuǎn)帶為25轉(zhuǎn)/分,按下停止鍵,電機(jī)停轉(zhuǎn)。速度值要求在數(shù)碼管上顯示出來。

1.要求分析

按上面的分析,改變轉(zhuǎn)速,只要改變P1.0~P1.3輪流變低電平的時間即可達(dá)到要求,這個時間不應(yīng)采用延時來實現(xiàn),因為會影響到其他功能的實現(xiàn)。這里以定時的方式來實現(xiàn)。下面首先計算一下定時時間。

按要求,最低轉(zhuǎn)速為25轉(zhuǎn)/分,而上述步進(jìn)電機(jī)的步距角為7.5,即每48個脈沖為1周,即在最低轉(zhuǎn)速時,要求為1200脈沖/分,相當(dāng)于50ms/脈沖。而在最高轉(zhuǎn)速時,要求為100轉(zhuǎn)/分,即48000脈沖/分,相當(dāng)于12.5ms/脈沖。可以列出下表

表1步進(jìn)電機(jī)轉(zhuǎn)速與定時器定時常數(shù)關(guān)系

速度 單步時間(us) TH1 TL1 實際定時(us)

25 50000 76 0 49996.8

26 48077 82 236 48074.18

27 46296 89 86 46292.61

28 44643 95 73 44640.155

… … … … …

100 12500 211 0 12499.2

表中不僅計算出了TH1和TL1,而且還計算出了在這個定時常數(shù)下,真實的定時時間,可以根據(jù)這個計算值來估算真實速度與理論速度的誤差值。

表中TH1和TL1是根據(jù)定時時間算出來的定時初值,這里用到的晶振是11.0592M。有了上述表格,程序就不難實現(xiàn)了,使用定時/計數(shù)器T1為定時器,定時時間到后切換輸出腳即可。

2.程序?qū)崿F(xiàn)

定義DSB-1A實驗板的S1為啟動鍵,S2為停止鍵,S3為加1鍵,S4為減1鍵,程序如下:

StartEnd bit 01H ;起動及停止標(biāo)志

MinSpd EQU 25 ;起始轉(zhuǎn)動速度

MaxSpd EQU 100 ;最高轉(zhuǎn)動速度

Speed DATA 23H ;流動速度計數(shù)

DjCount DATA 24H ;控制電機(jī)輸出的一個值,初始為11110 111

Hidden EQU 10H ;消隱碼

Counter DATA 57H ;顯示計數(shù)器

DISPBUF DATA 58H ;顯示緩沖區(qū)

ORG 0000H

AJMP MAIN

ORG 000BH

JMP DISP

ORG 001BH

JMP DJZD

ORG 30H

MAIN:

MOV SP,#5FH

MOV P1,#0FFH

MOV A,#Hidden

MOV DispBuf,A

MOV DispBuf+1,A

MOV DispBuf+2,A

MOV DjCount,#11110111B

MOV SPEED,#MinSpd ;起始轉(zhuǎn)動速度送入計數(shù)器

CLR StartEnd ;停轉(zhuǎn)狀態(tài)

MOV TMOD,#00010001B ;

MOV TH0,#HIGH(65536-3000)

MOV TL0,#LOW(65536-3000)

MOV TH1,#0FFH;

MOV TL1,#0FFH

SETB TR0

SETB EA

SETB ET0

SETB ET1

LOOP: ACALL KEY ;鍵盤程序

JNB F0,m_NEXT1 ;無鍵繼續(xù)

ACALL KEYPROC ;否則調(diào)用鍵盤處理程序

m_NEXT1:

MOV A,Speed

MOV B,#10

DIV AB

MOV DispBuf+5,B ;最低位

MOV B,#10

DIV AB

MOV DispBuf+4,B

MOV DispBuf+3,A

JB StartEnd,m_Next2

CLR TR1 ;關(guān)閉電機(jī)

JMP LOOP

ORL P1,#11110000B

m_Next2:

SETB TR1 ;啟動電機(jī)

AJMP LOOP ;主程序結(jié)束

;---------------------------------------

D10ms:

……

;---------延時程序,鍵盤處理中調(diào)用

KEYPROC:

MOV A,B ;獲取鍵值

JB ACC.2,StartStop ;分析鍵的代碼,某位被按下,則該位為1

JB ACC.3,KeySty

JB ACC.4,UpSpd

JB ACC.5,DowSpd

AJMP KEY_RET

StartStop:

SETB StartEnd ;啟動

AJMP KEY_RET

KeySty:

CLR StartEnd; ;停止

AJMP KEY_RET

UpSpd:

INC SPEED;

MOV A,SPEED

CJNE A,#MaxSpd,K1 ;到了最多的次數(shù)?

DEC SPEED ;是則減去1,保證下次仍為該值

K1:

AJMP KEY_RET

DowSpd:

DEC SPEED

MOV A,SPEED

CJNE A,#MAXSPD,KEY_RET ;不等(未到最大值),返回

MOV SPEED,#MinSpd;

KEY_RET:

RET

KEY:

……獲取鍵值的程序

RET

DjZd: ;定時器T1用于電機(jī)轉(zhuǎn)速控制

PUSH ACC

PUSH PSW

MOV A,Speed

SUBB A,#MinSpd ;減基準(zhǔn)數(shù)

MOV DPTR,#DjH

MOVC A,@A+DPTR

MOV TH1,A

MOV A,Speed

SUBB A,#MinSpd

MOV DPTR,#DjL

MOVC A,@A+DPTR

MOV TL1,A

MOV A,DjCount

CPL A

ORL P1,A

MOV A,DjCount

JNB ACC.7,d_Next1

JMP d_Next2

d_Next1:

MOV DjCount,#11110111B

d_Next2:

MOV A,DjCount

RL A

MOV DjCount,A ;回存

ANL P1,A

POP PSW

POP ACC

RETI

DjH: DB 76,82,89,95,100,106,110,115,119,123,12……

DjL: DB 0,236,86,73,212,0,214,96,163,165

……

DISP: ;顯示程序

POP PSW

POP ACC

……

RETI

BitTab: DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBH

DISPTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH

END

3.程序分析

本程序主要由鍵盤程序、顯示器程序、步進(jìn)電機(jī)驅(qū)動程序三部份組成,主程序首先初始化各變量,將顯示器的高3位消隱,步進(jìn)電機(jī)驅(qū)動的各引腳均輸出高電平,然后調(diào)用鍵盤程序,并作判斷,如果有鍵按下,則調(diào)用鍵盤處理程序,否則直接轉(zhuǎn)下一步。下一步是將當(dāng)前的轉(zhuǎn)速值轉(zhuǎn)換為BCD碼,送入顯示緩沖區(qū);接著判斷 StartEnd這個位變量,是“1”還是“0”,如果是“1”,則開啟定時器T1,否則關(guān)閉定時器T1,為防止關(guān)閉時某一相線圈長期通電,因此,在關(guān)閉定時器T1時,將P1.0~P1.3均置高。至此,主程序的工作即結(jié)束。這里為簡便起見,這里沒有做高位“0”消隱的工作,即如果速度為10轉(zhuǎn)/分,則顯示值“010”,讀者可以自行加入相關(guān)的代碼來處理這一工作。

步進(jìn)電機(jī)的驅(qū)動工作是在定時器T1的中斷服務(wù)程序中實現(xiàn)的,由前述分析,每次的定時時間到達(dá)以后,需要將P1.0~P1.3依次接通,程度中用了一個變量DjCntr來實現(xiàn)這一功能,在主程序初始化時,該變量被賦予初值 11110111B,進(jìn)入到定時中斷以后,將該變量取出送ACC累加器,并在累加器中進(jìn)行左移,這樣,該數(shù)值就變?yōu)?110 1111,然后將該數(shù)與P1 相“與”,此時,P1.4即輸出低電平,第二次進(jìn)入中斷時,先將該數(shù)取反,成為 00010000,然后將該數(shù)與P1相“或”,這樣,P1.4即輸出高電平,關(guān)斷了相應(yīng)的線圈,然后將該數(shù)重新取出,并作左移,即1110,1111右移成為11011111,將該數(shù)與P1相“與”,這樣P1.5即輸出低電平,依次類推,P1.7~P1.4即循環(huán)輸出低電平。當(dāng)這一數(shù)據(jù)變?yōu)?111 1111后,需要作適當(dāng)?shù)母膭樱瑢?shù)據(jù)重新變回11110111,進(jìn)行第二次循環(huán),相關(guān)代碼,請讀者自行分析。

定時時間又是如何確定的呢?這里用的是查表的方法,首先用Excel計算得出在每一種轉(zhuǎn)速下的TH值和TL值,然后,分別放入DjH和DjL表中,在進(jìn)入T1中斷程序之后,將速度值變量Speed送入累加器ACC,然后減去基數(shù)25,使其基數(shù)從 0開始計數(shù),然后分別查表,送入TH1和TL1,實現(xiàn)重置定時初值的目的。

看完這一部份內(nèi)容以后,請讀者自行完成以下工作:

1. 更改程序,將S1定義為“啟動/停止”,而S2定義為“方向”,按下S2,切換電機(jī)旋轉(zhuǎn)方向。

2. 更改程序,要求轉(zhuǎn)速從1到100。

3. 更改程序,實現(xiàn)首位無效零消隱

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6063

    文章

    44925

    瀏覽量

    647025
  • 步進(jìn)電機(jī)
    +關(guān)注

    關(guān)注

    152

    文章

    3158

    瀏覽量

    149147
收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    基于單片機(jī)步進(jìn)電機(jī)式模擬器儀表系統(tǒng)設(shè)計

    純分享帖,需要者可點擊附件免費獲取完整資料~~~*附件:基于單片機(jī)步進(jìn)電機(jī)式模擬器儀表系統(tǒng)設(shè)計.pdf【免責(zé)聲明】本文系網(wǎng)絡(luò)轉(zhuǎn)載,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品
    發(fā)表于 05-29 14:16

    基于51/32單片機(jī)按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn),A4988驅(qū)動

    基于51/32單片機(jī)按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn),A4988驅(qū)動
    發(fā)表于 04-14 15:05 ?3次下載

    單片機(jī)方面的大佬嗎?有幾個單片機(jī)方面的問題需要請教一下

    如題,有單片機(jī)方面的內(nèi)容需要請教一下 (先疊個甲)純小白 我需要一個單片機(jī)控制模塊,我現(xiàn)在的想法是:在一個單片機(jī)上,我要讓他控制一個傳感器
    發(fā)表于 03-29 18:35

    開源閉環(huán)步進(jìn)電機(jī)控制器(原理圖+源代碼

    開源閉環(huán)步進(jìn)電機(jī)控制器(原理圖+源代碼),采用PID算法控制,AS5047磁性角度檢測傳感器,高效防失步,快速學(xué)習(xí)PIDS算法,掌握
    發(fā)表于 03-20 13:32

    L298N-驅(qū)動直流電機(jī)步進(jìn)電機(jī)詳細(xì)資料大總結(jié)

    電機(jī)轉(zhuǎn)速控制電路(PWM信號)主要采用 L298N ,通過單片機(jī)的 I/O 輸入改變芯片控制端的電平,即可以對電機(jī) 進(jìn)行正反轉(zhuǎn),停止的操作,
    發(fā)表于 02-26 16:02

    步進(jìn)電機(jī)控制實現(xiàn)方法

    電機(jī)能夠?qū)崿F(xiàn)高精度的位置控制和速度控制。本文將詳細(xì)介紹步進(jìn)電機(jī)
    的頭像 發(fā)表于 01-21 16:43 ?1073次閱讀
    <b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>的<b class='flag-5'>控制</b>實現(xiàn)方法

    使用單片機(jī)實現(xiàn)直流電機(jī)的PWM調(diào)速控制原理圖

    使用單片機(jī)實現(xiàn)直流電機(jī)的PWM調(diào)速控制
    發(fā)表于 12-10 15:29 ?6次下載

    基于MSP430單片機(jī)的模糊邏輯電機(jī)控制

    電子發(fā)燒友網(wǎng)站提供《基于MSP430單片機(jī)的模糊邏輯電機(jī)控制.pdf》資料免費下載
    發(fā)表于 10-23 10:21 ?1次下載
    基于MSP430<b class='flag-5'>單片機(jī)</b>的模糊邏輯<b class='flag-5'>電機(jī)</b><b class='flag-5'>控制</b>

    步進(jìn)電機(jī)如何自適應(yīng)控制步進(jìn)電機(jī)如何細(xì)分驅(qū)動控制

    步進(jìn)電機(jī)是一種將電脈沖信號轉(zhuǎn)換為角位移或線位移的電機(jī),廣泛應(yīng)用于各種自動化控制系統(tǒng)中。為了提高步進(jìn)電機(jī)
    的頭像 發(fā)表于 10-23 10:04 ?1468次閱讀

    利用MSP430單片機(jī)控制步進(jìn)電機(jī)

    電子發(fā)燒友網(wǎng)站提供《利用MSP430單片機(jī)控制步進(jìn)電機(jī).pdf》資料免費下載
    發(fā)表于 10-09 14:18 ?0次下載
    利用MSP430<b class='flag-5'>單片機(jī)</b><b class='flag-5'>控制</b><b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>

    步進(jìn)電機(jī)型號與步進(jìn)電機(jī)命名規(guī)則

    混合式步進(jìn)電機(jī)代碼:SM。 系列代碼:H、高性能二相步進(jìn)電機(jī);C、三相
    的頭像 發(fā)表于 08-26 09:42 ?768次閱讀
    <b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>型號與<b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>命名規(guī)則

    基于STM32單片機(jī)步進(jìn)電機(jī)控制系統(tǒng)設(shè)計

    系統(tǒng)內(nèi)使用按鍵進(jìn)行步進(jìn)電機(jī)控制,可以控制步進(jìn)電機(jī)的啟動和關(guān)閉,使用按鍵進(jìn)行加速和減速以及進(jìn)行旋
    的頭像 發(fā)表于 06-25 14:14 ?1824次閱讀
    基于STM32<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b><b class='flag-5'>控制</b>系統(tǒng)設(shè)計

    基于51單片機(jī)步進(jìn)電機(jī)正反轉(zhuǎn)調(diào)速控制電路圖及程序

    本資源內(nèi)容概要:? ? ? ?這是基于51單片機(jī)步進(jìn)電機(jī)正反轉(zhuǎn)調(diào)速控制電路圖及程序設(shè)計包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源
    發(fā)表于 06-20 16:17 ?0次下載

    步進(jìn)電機(jī)控制系統(tǒng)是什么意思

    、高精度定位及良好的重復(fù)定位精度,被廣泛應(yīng)用于各種需要精確控制和定位的設(shè)備中。本文將從步進(jìn)電機(jī)的工作原理、控制系統(tǒng)組成、控制策略以及應(yīng)用領(lǐng)域
    的頭像 發(fā)表于 06-18 18:12 ?1723次閱讀

    步進(jìn)電機(jī)通過什么控制轉(zhuǎn)動角度

    步進(jìn)電機(jī)是一種電磁驅(qū)動的旋轉(zhuǎn)電機(jī),它具有精確控制轉(zhuǎn)動角度的特性。步進(jìn)電機(jī)的工作原理是通過改變線圈
    的頭像 發(fā)表于 06-12 09:49 ?2709次閱讀