2011年5月21日 星期六

透過 L297 / L298 控制四線式步進馬達

本文在 2011/05/21 15:12 發表於 Yahoo!奇摩部落格
因Yahoo!奇摩部落格將於2013年12月26日終止服務故遷移至此


因為某個自訂計畫需要
又開始玩步進馬達
這次找來懶人方案 L297/L298
前篇 用 8051 控制四線式步進馬達 中提到
我們可以用四顆電晶體來控制電流流向
進而得到一組可以正反向電流輸出接口
這種電路叫做 H 橋 (H Bridge)
由於四線式步進馬達有兩組線圈
或說是多組線圈交互排列, 基偶數並聯輸出成兩組 (這樣說好像更複雜了XD)
因此, 我們會需要兩組可正反向電流輸出接口
結果就是 8 顆電晶體, 光接線就飽了
由於這堆晶體會放出高熱 (因為不斷的開關大電流)
就算用洗板, 也要想辦法把這堆晶體配置到有散熱片的地方
這會有點麻煩
因此就有懶人方案 : L297, L298
整個系統方塊圖如下


L297 是信號序列產生器
我們知道要用 H 橋控制馬達會需要送出開關四顆電晶體的信號
且這信號順序要正確, 否則會讓馬達原地打轉
也就是轉左後轉右, 原地抖動
而 L297 做的事情就是我們只要送 clock 給它
它就幫我們產生這些信號序列
如上圖, 微控制器還是需要 4 條線給它

EN : enable
HF : 輸出模式 (標準或是高扭力 全步或半步, 詳見 datasheet)
CW : 正反轉
CK : clock

不過我們不用去關心時序
除了 CK 以外, 另外三支只是狀態設定
微控制器只需要不斷的送出 clock 到 CK 就可以了
送出的速度就決定馬達轉速
非常輕鬆愉快

L298 則是功率輸出級
也就是 8 顆電晶體的 H 橋整合體
散熱片上只要鑽一個孔就可以固定這 8 顆電晶體, 不用 8 個孔
(當然, 如果你要超級大功率還是跑不掉, 只是對小型應用可以省錢)
它可以接受 5-46V 的驅動電壓, 以及 3A 的驅動電流

L297, L298 都是 5V 介面的控制器
如果用 3.3V 的系統就要動些手腳
以我使用的 STM32 來說就要如上圖右上那樣
先將 STM32 的 I/O 的輸出模式設定為 open drain
然後接個 pull-up 電阻到 5V, 這樣就能做準位轉換

接著我們請玩具們登場(?)XD

整合在一片
雖然說畫這東西並不困難
但是有了收入就常常想花錢了事XD
畢竟時間應該花在更有意義的開發上 (懶人藉口總是很多XD)
控制器用這個 :

STM32 開發板, 還是對岸做的
其實以 5V 介面來說用 8051 是最合適的
只是因為搬家過程中沒有所有裝備到齊
所以先拿另一個計畫要用的東西來頂一下
全部的樣子

程式內容很簡單
就是把一個 I/O 一直拉高又拉低這樣而已XD
L298 上的晶體如同預期, 很快的就發出高熱
給 L298 輸出用的電壓為 12V, 轉動能量不錯
用手捏住還會有感覺到抵抗的力量, 有牽引的能量, 而不是只會轉動

如果只是要轉動用 555 搭配邏輯 IC (鏈波計數器 + 解多工器) 就可以了
把 555 輸出接鏈波計數器 clock, 鏈波計數器再接解多工器的 select
然後讓解多工器的輸入總是 1, 輸出的多條線就可以拿去控制 H 橋
不過這樣還不如用直流馬達XD
有 clock 增減速的目的是可以透過一些 feedback 來探知轉動狀況
進而調整轉動速率來應對環境變化
除此之外, 由於每個 clock 都在掌控中
可以精確的轉動特定的步數
這才是步進馬達 "步進" 的目的

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。