采用A3967SLB的步進(jìn)電機細分驅動(dòng)系統設計
摘 要: 本文以Allegro公司推出的A3967SLB型串口控制器為步進(jìn)電機細分驅動(dòng)系統的硬件核心,實(shí)現了步進(jìn)電機的8細分驅動(dòng)。論述了上位機與基于單片機的步進(jìn)電機控制系統之間的串行通信設計,給出了單片機串行通信的硬件接口電路。
關(guān)鍵詞:A3967SLB;步進(jìn)電機;細分驅動(dòng);串行通信
步進(jìn)電機精度高,慣性小,在不失步的情況下沒(méi)有步距誤差積累,特別適用于數字控制的定位系統。傳統的細分驅動(dòng)電路由細分環(huán)行分配器、放大器和合成器等部分組成。這種電路應用復雜,靈活性差。本文利用a3967slb作為步進(jìn)電機微控芯片,簡(jiǎn)化了步進(jìn)電機的控制實(shí)現。由于單片機資源沒(méi)有pc豐富,人機界面也沒(méi)有pc友好,因此,本文采用了主從式結構,即pc用于管理,單片機用于執行。
由a3967slb構成步進(jìn)電機的驅動(dòng)部分
a3967slb是美國allegro公司生產(chǎn)的pwm恒流控制微步距驅動(dòng)二相步進(jìn)電機專(zhuān)用驅動(dòng)器。它的工作電壓可達30v,驅動(dòng)電流達750ma,一個(gè)a3967slb即可驅動(dòng)一臺二相步進(jìn)電機,可實(shí)現8細分驅動(dòng)。芯片內部的pwm電流控制電路可通過(guò)加在pfd的電壓設置為慢、快、混合三種電流衰減模式,如果pfd端的電壓高于0.6vdd,則選擇慢衰減方式。若低于0.21vdd,則選擇快衰減模式。處于兩者之間為混合衰減模式。另外,a3967slb還能提供完善的保護措施,包括抑制瞬態(tài)電壓,過(guò)熱保護、防止電流直通、欠電壓自鎖等功能。
a3967slb和微處理器之間不需要附加其他的接口電路,該芯片采用easy stepper接口,將8條控制線(xiàn)減少了2條(步長(cháng)和方向),只要簡(jiǎn)單地輸入控制步進(jìn)電機的脈沖,其內嵌的轉換器就可以實(shí)現對步進(jìn)電機的控制。a3967slb還需要一些電阻、電容來(lái)調整其工作參數,整個(gè)驅動(dòng)電路非常簡(jiǎn)單。
如圖1所示,ms1和ms2是步進(jìn)電機細分分辨率選擇的邏輯輸入口;dir是電機運轉方向的選擇口;reset用于重置芯片初始值,屏蔽所有外部輸出;step為脈沖輸入端口;out1a、out1b、out2a、out2b為h橋的兩對輸出端口;enable為使能端;sleep為睡眠模式;sense1、sense2為h橋的電流檢測電阻;ref為參考電壓;gnd為邏輯地和電源地;rc1、rc2為h橋固定截止時(shí)間模擬輸入。最大限流imax是由取樣電阻rs和取樣比較器的輸入參考電壓vref決定的:
imax=vref/8rs
at89c52具有8kb flash,256b內部ram,32個(gè)i/o口線(xiàn),3個(gè)16位定時(shí)/記數器,一個(gè)6向量?jì)杉壷袛嘞到y,一個(gè)全雙工串行通信接口,同時(shí)片內還有振蕩器和時(shí)鐘電路。使用很方便。在這個(gè)系統中,單片機主要用來(lái)產(chǎn)生控制脈沖并與上位機進(jìn)行串行通信。
通信電路
在最簡(jiǎn)單的rs-232直接傳送通信系統中,只要發(fā)送和接受雙方同時(shí)準備好,僅用信號發(fā)送端(txd)、信號接收端(rxd)和信號地(gnd)3根信號線(xiàn)就可以進(jìn)行通信;若以應答方式進(jìn)行數據通信,可使用請求發(fā)送(rts)、清除發(fā)送(cts)或數據終端準備(dtr)、數據裝置準備(dsr)4個(gè)信號進(jìn)行硬件握手。在at89c52單片機系統中,分別從p3.0和p3.1引出串口線(xiàn)rxd和txd,通過(guò)專(zhuān)用的電平轉換芯片轉換成rs-232接口標準的電平,這樣,二者之間就可以通過(guò)rs-232接口進(jìn)行數字信號的傳送。單片機可以通過(guò)直接傳送或應答握手的方式與主機進(jìn)行數據通信,但由于握手方式占用其它端口,而單片機的端口數量有限,所以,計算機與單片機的通信常采用直接傳送的方式。通信電路如圖2所示。
軟件設計
軟件部分的設計主要包括下位機按mcu的接收程序、脈沖控制程序以及上位機的串口發(fā)送程序。上位機與下位機之間進(jìn)行數據通信。上位機的程序主要通過(guò)windows可視化編程vc++實(shí)現。
下位機程序主要負責接受pc發(fā)來(lái)的數據,按照要求產(chǎn)生控制脈沖,具體流程為:首先對要使用的串口進(jìn)行初始化,然后p2輸出口清零,接著(zhù)進(jìn)入住程序的死循環(huán),等待中斷觸發(fā)。接收一個(gè)字節的數據,ri=1,接著(zhù)將ri清零。當單片機接收完數據后,標志位置1。將緩存中的數據存入控制的變量中,以便控制時(shí)使用(具體操作時(shí)先法數據幀再發(fā)啟動(dòng)幀)。軟件控制流程如圖3所示。
結語(yǔ)
結合以上介紹的基于a3967slb的步進(jìn)電機控制系統,在vc++環(huán)境下,利用mscomm控件實(shí)現了pc與單片機之間的串行通信。實(shí)驗結果表明,用這種方式實(shí)現上位機對基于a3967slb的步進(jìn)電機的控制系統進(jìn)行精確的驅動(dòng)可行有效。
本系統中,利用pc的豐富軟硬件資源和強大的系統功能,可進(jìn)行一些數據處理、顯示等工作;而從控制器at89c52則用于實(shí)時(shí)控制。另外,該系統為開(kāi)放式結構,便于系統升級。
評論