這里以四線雙極性步進電機為例:
上面就是常見的四線雙極性步進電機的實物圖,上一篇文章里面已經說明了步進電機的相關基礎概念,下面開始進行步進電機的編程:
首先要說明一下:我的步進電機的驅動芯片時 L6219 芯片 ,它是具有細分功能的,但是由于這里我不想說細分(其實是我不會啦,嘿嘿,不要打我~(>_<)~),所以我就不深入說明 L6219 了,我詳細說明的話大家聽著也頭暈,知識的學習是要循序漸進的嘛。所以呢我就只大概地說明一下 L6219,同時為了大家好理解,我先把代碼放出來,然后對照著代碼進行講解:
先說一下定義的引腳,四線雙極性步進電機有兩個線圈(或者叫做繞組)要進行通電,所以我們就要用兩個引腳來控制這兩個線圈,我這里定義名字是:PHA 和 PHB,但是由于 L6219 的用法,這兩個引腳僅僅只能算作一個標志,也就是僅僅只能說明給那個線圈通什么方向的電流,而不能決定通的電流的大小,比如:PHA = 0,PHB = 1;說明 A 線圈通負方向電流,B線圈通的是正方向電流,但是電流究竟多大不是由這兩個引腳決定的,而是由另外兩個引腳決定的。
這兩個引腳我定義他們的名字是:A 線圈對應的是:A1,A2;B 線圈對應的就是 B1、B2;上圖中的注釋中也已經寫明白了,我們姑且把通最大電流當作通電,把通最小電流當做不通電,那么就可以得出:
當 A1 = A2 = 0時:線圈 A 通電。
當 A1 = A2 = 1時:線圈 A 不通電。B 線圈同理。
呃。。。其實我是個好孩紙,不騙人的,所以下面我就說明一下怎么解決這個問題,在這之前我先把我寫的代碼放出來:
一:單拍工作方式:
二:單雙拍工作方式:
大家可以發現上面三塊代碼的第一行注釋就是工作方式的線圈通電方式,但是第二行是啥?什么 “相同”、“不同”的?
這里就是解決步進電機只在顫動卻不轉的關鍵了,雖說步進電機的某個線圈在不通電的時候,電流的方向隨便寫(都不通電了,那不就可以隨便寫嗎?),但是事實卻不是這樣,雖說當我們寫 A1 = A2 = 1 時線圈應該是不通電的,但是事實上并不是,它還是有一點點電流的,所以即使我們寫 A1 = A2 = 1,線圈的電流方向也不能隨便寫,而是要遵循:兩個線圈的電流方向要 "不同" 、"相同" 交替。(單雙拍工作方式時每兩拍作為一組)的規則去寫。
如上面三個圖中,PHA 和 PHB 的值都是在 “相同”、 “不同” 之間交替進行,單雙拍的那個是每兩拍作為一組,在 “不同”、“相同”之間進行。
這樣就解決了步進電機只顫動不旋轉的問題了,但是并不是所有人的問題都是出在這里,看見每一句代碼后面都有一個 delay() 函數了嗎?如果 delay() 函數的延時時間過短也會引起步進電機只顫動而不旋轉。所以大家還是要具體問題具體分析。
-
步進電機
+關注
關注
151文章
3119瀏覽量
147724
原文標題:51單片機--如何解決步進電機只顫不轉
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論