控制步進電機正反轉的實際應用程式

2020-11-26 電子產品世界

/*這是一個控制步進電機正反轉的實際應用程式*/
/*選用的是三相步進電機驅動器,p14口線用做步進電機的脈衝控制*/
/*p13口線用做步進電機的方向控制。p15,p16,p17是光耦開關量輸入*/
/*信號端,p20,p21,p22,p23與x25045看門狗存儲器相連*/
/*k7,k8鍵是設定步進電機轉動速度參數的加減鍵*/
/*k9是啟動運行鍵,按一下k9,步進電機開始運行,直到p17口線有信號輸入才停止*/
/*k10是停止鍵,任何時候按下k10都將停止步進電機當前的運行*/
/*k11是步進運行鍵,按一下,步進電機動一下*/
/*k12鍵是反向運行鍵,按一下,步進電機開始反向運行,知道p15口線有信號才停止*/
/*如果p16口線有信號輸入,則只有k12鍵才起作用,其它鍵都沒反應。*/
START:do;
$INCLUDE(REG51.DCL)
DECLARE(addrl,n,I,j,ok,ds)byte;/*定義變量*/
declarel(5)byte;
declare(dat,data)byteat(30h);
declaredelayword;
DECLAREACO(11)BYTECONSTANT(05h,9fh,23h,0bh,99h,49h,/*定義LED段碼錶*/
41h,1fh,01h,09h,00h);
declaresiliterally'p21',sckliterally'p20';/*X25045囗線定義*/
declaresoliterally'p22',csliterally'p23';
dog:procedure;/*初始化看門狗x25045*/
cs=1;
calltime(1);
cs=0;
calltime(1);
cs=1;
enddog;

run:procedure;/*步進電機運行脈衝輸出程序*/
ifok=1then
calldog;
do;
p14=0;
calltime(1);
p14=1;
calltime(1);
end;
endrun;

DISPLAY:PROCEDURE(L0,L10);/*顯示子程序*/
DECLARE(L0,L10)BYTE;/*定義顯示二位*/
n=L10;
n=aco(n);/*十位數BCD碼譯成段碼*/
sbuf=n;/*十位數送164顯示*/
dowhileti=0;/*等待發送結束*/
calldog;/*看門狗定時器復位*/
end;
n=L0;
n=aco(n);
sbuf=n;/*個位數送164顯示*/
dowhileti=0;
calldog;
end;
enddisplay;
outbyt:procedure(da);/*向看門狗存儲器寫入一字節*/
declare(i,da)byte;
j=da;/*將要寫入的字節賦給臨時變量J*/
doi=0to7;/*左移8位,送到口線si*/
sck=0;
j=scl(j,1);
si=cy;
sck=1;/*每移一位數據,跟一個時鐘信號*/
end;
endoutbyt;

inbyt:procedure;/*從看門狗存儲器讀出一字節*/
declare(i,di)byte;
j=0;
doi=0to7;
sck=1;
sck=0;
cy=so;
j=scl(j,1);/*從看門狗存儲器讀出一字節送入臨時變量j*/
end;
dat=j;
endinbyt;

wrenable:procedure;/*置看門狗寫使能*/
sck=0;
cs=0;
;/*writeenablecommand*/
calloutbyt(06h);/*x25045寫使能指令06h*/
cs=1;
sck=0;
endwrenable;

wrdisable:procedure;/*置看門狗寫禁止*/
sck=0;
cs=0;
;/*writedisablecommand*/
calloutbyt(04h);
sck=0;
cs=1;
endwrdisable;

wrregister:procedure;/*寫狀態寄存器*/
sck=0;
cs=0;
dat=01h;/*writeregistercommand*/
calloutbyt(dat);
;/*00h--1.4S,20h--200MS,10h--600MS,30h--disableWdog*/
calloutbyt(00h);/*設定看門狗定時時間*/
;
sck=0;
cs=1;
calltime(200);/*waittocompletewrittingcycle*/
endwrregister;

rdregister:procedure;/*讀看門狗狀態寄存器*/
sck=0;
cs=0;
;/*registerreadcommand*/
calloutbyt(05h);
callinbyt;/*statusregisterreadinDAT>*/
sck=0;
cs=1;
endrdregister;

wbyte:procedure;/*看門狗存儲器字節寫入子程序*/
declarecommbyte;
sck=0;
cs=0;
comm=02h;/*寫指令02h*/
calloutbyt(comm);
calloutbyt(addrl);
calloutbyt(dat);/*sendonebytedatatoX25043*/
cs=1;
sck=0;
calltime(150);
endwbyte;

rbyte:procedure;/*看門狗存儲器字節讀出子程序*/
declarecommbyte;
sck=0;
cs=0;
comm=03h;/*readcommand*/
calloutbyt(comm);
calloutbyt(addrl);
callinbyt;/*readonebytetoDAT>*/
sck=0;
cs=1;
endrbyte;

incdata:procedure;/*參數修改--"加"鍵處理子程序+*/
ifp10=0then/*如果K7鍵按下*/
do;
dowhilep10=0;/*等待鍵鬆開有效*/
calldog;/*此處必需調用看門狗復位子程序("餵狗"),否則程序將被看門狗復位*/
end;
data=data+1;/*設定值+1*/
ifdata>99thendata=1;/*規定設定值的上限*/
L(1)=dataMOD10;/*將設定值的十位數拆出來送給十位數顯示變量L(1)*/
L(2)=data/10;/*將設定值的個位數拆出來送給個位數顯示變量L(2)*/
calldisplay(L(1),L(2));/*將改變後的設定值送164顯示出來*/
calltime(200);/*延時*/

光耦相關文章:光耦原理

存儲器相關文章:存儲器原理

脈衝點火器相關文章:脈衝點火器原理

相關焦點

  • 單片機控制步進電機的正反轉
    呵呵,這次弄這個程序用了我兩年的時間,終於把我們正反轉程序寫成功並調試成功了,新年收到很多朋友給我的賀卡和祝福,不過,我覺得今天這個程序也是送給自己最好的禮物吧,學單片機真的有時候會很痛苦,一個程序當你怎麼編也編不出來的時候,有時候真的讓你夠難受的,失敗的那種感覺,也許只有學單片機的朋友才能夠體會得了,但是當一個程序編了好久,
  • 單片機控制步進電機正反轉
    C語言範例:/*******************************************************************/*/* ME300系列單片機開發系統演示程序-步進電機鍵控正反轉實驗/*/* 郵箱: gguoqing
  • PLC實現步進電機正反轉和調速控制
    2、掌握帶驅動電源的步進電機的控制方法3、掌握DECO指令實現步進電機正反轉和調速控制的程序二、實訓儀器和設備1、FX2N-48MR PLC一臺2、兩相四拍帶驅動電源的步進電機一套3、正反切換開關、起停開關、增減速開關各一個
  • 實用的 28BYJ-48 步進電機控制程序
    上面我們雖然完成了用中斷控制電機轉動的程序,但實際上這個程序還是沒多少實用價值的,我們不能每次想讓它轉動的時候都上下電啊,是吧。還有就是它不但能正轉還得能反轉啊,也就是說不但能轉過去,還得能轉回來呀。
  • 步進電機的正反轉轉動方向應如何控制?
    步進電機的轉角,轉速,旋轉方向分別與輸入脈衝的個數、頻率、通電順序有關。   步進電機正反轉是怎樣實現的,什麼是步進電機方向信號?   方向電平信號DIR用於控制步進電機的旋轉方向。此端為高電平時,電機一個轉向;此端為低電平時,電機為另一個轉向。電機換向必須在電機停止後再進行,並且換向信號一定要在前一個方向的最後一個CP脈衝結束後以及下一個方向的第一個CP脈衝前發出。   當您的控制韶(上位機)發出的是雙脈衝[即正負脈衝)或脈衝信號的幅值不匹配時,需要用我們的信號模塊轉換為5v單脈衝(脈:中加方向)。
  • 51單片機的步進電機控制,正轉反轉等
    步進電機應用廣泛,本文引用地址:http://www.eepw.com.cn/article/201808/384872.htm例如印表機、磁碟驅動器、玩具、汽車雨刷、手機震動、機械夾具、刻錄機等各種機械控制場合一些概念:拍數N定子控制繞組每改變一次通電方式,即為一拍
  • uln2803步進電機的控制原理電路圖和源程序
    打開APP uln2803步進電機的控制原理電路圖和源程序 佚名 發表於 2008-08-28 15:48:06 uln2803步進電機的控制原理電路圖和源程序 步進電機的控制原理和程序 選自北航出版 耿德根主編《高速嵌入式單片機原理與應用》第七章7.4.2 源程序:SLAVR742.ASM         自從六十年代初期步進電機面世以來,在過去幾年它的重要性大大提高了
  • 單片機控制步進電機驅動器工作原理
    步進電機在控制系統中具有廣泛的應用。它可以把脈衝信號轉換成角位移,並且可用作電磁製動輪、電磁差分器、或角位移發生器等。  有時從一些舊設備上拆下的步進電機(這種電機一般沒有損壞)要改作它用,一般需自己設計驅動器。
  • 28BYJ48型步進電機的控制方法
    通俗一點講:當步進驅動器接收到一個脈衝信號,它就驅動步進電機按設定的方向轉動一個固定的角度(即步進角)。我們可以通過控制脈衝個數來控制角位移量,從而達到準確定位的目的;同時我們可以通過控制脈衝頻率來控制電機轉動的速度和加速度,從而達到調速的目的。  28BYJ48型步進電機是四相八拍電機,電壓為DC5V~DC12V。
  • uln2003驅動步進電機,ULN2003驅動步進電機的PROTEUS程序
    打開APP uln2003驅動步進電機,ULN2003驅動步進電機的PROTEUS程序 發表於 2017-10-23 15:15:20
  • 用單片機和CPLD實現步進電機的控制
    因此本設計採用的方法是:用單片機採集現場信號後計算出步進電機運轉所需的控制信息後,再傳給CPLD,CPLD把接收到的信息轉換成步進電機實際的控制信號(運轉方向、運轉速度)輸出給電機的驅動電路。這樣的好處是單片機與CPLD各行其是。
  • 入門指導:步進電機正反轉處理方案
    步進電機的正反轉轉動方向是受方向電平信號DIR所控制,而步進電機的轉角、轉速、旋轉方向分別又與輸入脈衝的個數、頻率以及通電順序有關。
  • 步進電機PLC的直接控制
    步進電機的角位移與輸入脈衝個數成正比,其轉速與脈衝頻率成正比,其轉向與脈衝分配到步進電機的各相繞組的相序有關。由於步進電機的轉角、轉速和轉向均可採用數字量(脈衝)控制,故步進電機廣泛應用於數字伺服領域。圖1表示了步進電機的典型應用。
  • 51單片機控制步進電機驅動器工作原理
    步進電機在控制系統中具有廣泛的應用。它可以把脈衝信號轉換成角位移,並且可用作電磁製動輪、電磁差分器、或角位移發生器等。有時從一些舊設備上拆下的步進電機(這種電機一般沒有損壞)要改作它用,一般需自己設計驅動器。本文介紹的就是為從一日本產舊式印表機上拆下的步進電機而設計的驅動器。
  • S7-200對步進電機的控制
    S7-200與步進電機驅動器HB-4020的接線,實現正轉、反轉、連鎖、啟動、停止等功能。軟體編程:1.輸入輸出點I0.1啟動按鈕,I0.2停止按鈕,I0.3正反轉選擇按鈕Q0.0步進電機Cp脈衝,Q0.2正反轉脈衝2.主要程序
  • 五相步進電機控制系統研究
    文中介紹了CIPH9803A的引腳功能和工作原理,並給出其在五相步進電機控制系統中的應用電路。1 引言CIPH9803A是一種可編程五相步進電機控制晶片。該晶片具有步數設置(最大步數高達100萬步)、可逆運轉、啟動、停車、暫停、工速、快速等多種設置功能,它具有一個傳感信號輸入埠,可控制步進電機的定位停車。實際應用表明,以CIPH9803A專用晶片為核心的五相步進電機控制電路具有成本低、可靠性高等優點,特別適合工具機設備的技術改造。
  • 舞蹈機器人步進電機驅動電路和程序設計
    (3)74373是電平控制鎖存器,它可使多個步進電機共用一組數據總線。我們用P1.0~P1.7作為8個電機的鎖存信號輸出端,見表1。這種方法明顯的好處是節省I/O口,使系統可以控制更多的步進電機。本電路設計為控制8個。
  • l298n驅動電機的工作原理_L298N驅動步進電機程序
    打開APP l298n驅動電機的工作原理_L298N驅動步進電機程序 發表於 2018-02-26 15:32:32 步進電動機的輸入量是脈衝序列,輸出量則為相應的增量位移或步進運動。正常運動情況下,它每轉一周具有固定的步數;做連續步進運動時,其旋轉轉速與輸入脈衝的頻率保持嚴格的對應關係,不受電壓波動和負載變化的影響。由於步進電動機能直接接受數字量的控制,所以特別適宜採用微機進行控制。
  • 基於PLC的梳棉機步進電機控制系統
    所以只要控制指令脈衝的數量、頻率及電機繞組通電的相序, 便可控制步進電機的輸出位移量、速度和方向。步進電機具有較好的控制性能, 其啟動、停車、反轉及其它任何運行方式的改變都可在少數脈衝內完成, 且可獲得較高的控制精度, 因而得到了廣泛的應用。  2 步進電機脈衝分配器  在可編程控制器plc的應用中,步進電機是常見的被控制對象。
  • 變頻器控制電機正反轉的方法
    打開APP 變頻器控制電機正反轉的方法 電工之家 發表於 2019-09-07 09:15:00   變頻器的運轉指令源(正反轉控制)和頻率指令來源(速度控制)是兩個不同的參數設置,如果想要控制正轉和反轉的時候速度不一樣可以有很多方法,這在我們實際應用當中很常見,首先我們先說下它們都有哪些控制方式。