王曉蘭,沈建華
WANG Xiao-lan, SHEN Jian-hua
(1.華東師范大學 計算機科學與技術系,上海 200062)
步進電機正在被廣泛的應用于工業、軍事、醫療、汽車等領域中,對其轉動模式的要求也越來越高。光學剪切流變儀是控制復雜流體在不同溫度和各種剪切模式下利用光學顯微系統分析其結構動力學的專用分析儀器。利用光學剪切組件能詳細研究復雜流體在許多物理過程中的微細結構變化。儀器采用兩片平行的高度拋光石英盤,石英盤通過加熱盤提供熱源,利用鉑電阻溫度傳感器測量溫度。樣品置于下石英盤上,石英盤可進行擺動和步進模式剪切。調節兩片石英盤的間距使儀器適合各種材質和顆粒大小的物質。
剪切模式可設置為穩態剪切,即步進電機勻速運行模式;正弦波振蕩剪切,即步進電機正弦曲線運行模式;階躍剪切,即步進電機定步勻速運行模式;振蕩疊加剪切,即步進電機勻速加正弦的運行模式。本文所討論的內容是如何實現步進電機正弦函數運行模式。
步進電機分三種:永磁式(PM),反應式(VR)和混合式(HB)永磁式步進一般為兩相,轉矩和體積較小,步進角一般為7.5度或15度;反應式步進一般為三相,可實現大轉矩輸出,步進角一般為1.5度,但噪聲和振動都很大。混合式步進是指混合了永磁式和反應式的優點。它又分為兩相和五相:兩相步進角一般為1.8度而五相步進角一般為0.72度。這種步進電機的應用最為廣泛。四相混合式步進電機一般由兩相驅動器來驅動,因此,連接時可以采用串聯接法或并聯接法將四相電機接成兩相使用。基于以上幾點,本系統采用性能平穩,性價比較高,應用廣泛的四相步進電機,它可以根據需要由片上電源驅動,還可以選擇通過驅動器由外部提供電源。另外,低頻振蕩是步進電機(尤其是反應式電機)的固有特性,如果步進電機有時要如走圓弧,則必須在共振區工作,為了完全消除電機的低頻振蕩,建議最好選用細分驅動器。
現在經常采用的主要算法是定步法,正弦函數前1/4周期的曲線如圖1所示。將總升頻步數N等分,得步數間隔為△p=P/N,然后求取這N個點的所對應的頻率值,轉化為單片機的定時器的定時時間常數,存人單片機內存中形成表格,當步進電機在升頻過程中每走△P步,改變一次時間常數,輸出進給脈沖以實現定步升頻,使步進電機按照固定的頻率運行,從而實現步進電機的正弦運動。

圖1 定步法升速曲線
這種算法存在一個問題,即當前速度如果比較慢時,定時就會很長,則延時超出了應該的延時。所以這里應該作一下修正,在延時超過一定值時以設定的值運行。所以這種算法只保證了精確的步數,周期不能保證。
基于這種情況,本系統算法做如下設計,來彌補已有算法的不足:即把時間劃分為多個段,每段時間做勻速運動。由于轉動角度為正弦波變化,所以轉速為轉動角度的求導,即以余弦形式變化。其中正弦與余弦間的參數轉換可以由上位機軟件完成。在確定周期與步數的情況下,需要計算每步運行時間以便于定時器定時用。
輸入的參數是余弦運行周期n、余弦運行步數m。

這是個180個點的cos表,(這里的Max_cosval表示點數,故這里是180)對應的是0-90度每0.5度產生一個值,如cos(0),cos(0.5),cos(1)....其中cos小括號中的是角度值。我們把整個周期平分x 等分,那么每等分的時間為n/x 秒。那么第i(i為0-x之間的整數)等分運行的步數為
m*cos[i/x*Max_cosval]/(cos[0/x*Max_cosval]+cos[1/x*Max_cosval]+cos[2/x*Max_cosval]+...+cos[(x-2)/x*Max_cosval]+cos[(x-1)/x*Max_cosval]) (1)
算出來的是浮點數,需要進行四舍五入。
這樣每個等分的步數確定后,每個等分中每步的時間也就確定了,這就是定時時間(但為了產生等脈寬的脈沖信號,可以把定時時間定為每步定時時間的一半,這樣在定時中斷中跳變一次,這樣兩次跳變即可完成一個脈沖的輸出,即前進一步)。定時時間是速率的倒數,可能的問題是速率為0,所以要程序判斷避免為0。
本系統微處理器采用了ADI公司的AduC845,和uln2003達靈頓管實現了上述控制。 電機采用5V四相單極電機(Airpax [Thomson]生產,型號為M82101-P1)。
單片機需要通過串口與PC機通訊,并通過四相電機驅動器與步進電機相連,如圖2:

圖2 硬件框圖
本系統外接電源信號為12V,并經過LM7805轉換后輸出5V為MCU供電,同時也可以為外接5V電機控制器提供電源。
本系統微處理器采用了ADI公司的AduC845,只需一根RS232串口通訊線(微處理器通過MAX232與PC機串口進行數據通訊),就能夠進行在系統調試、下載程序。另外,本系統還通過74HC595設計了一些控制電機的按鍵功能。
整個MCU由5V電源供電,另外可以外擴一塊支持IIC協議的EEPROM(如U2器件)用于數據存儲。其中可用JP1跳線用于下載程序使用,如需用ISP下載程序時需將JP1跳線短接接地,程序正常運行時JP1應處于斷開狀態。
所有這些外圍芯片由一個函數控制,每執行一次,發送三個字節數據用于控制輸出,同時接收來自控制開關的一個字節數據。由于四相步進電機控制器的驅動電流8-15mA,因為口線電流太小,無法驅動電機工作,需要用外部電源供電,提高驅動能力。
整個系統軟件主要有AduC845的固件編程、PC交互界面。由于PC界面需根據不同需求改變,這里主要介紹一下固件的開發。
整個程序在Keil C51 for ADuC845下開發完成,實現了ADuC845BS62-5的硬件初始化、PC通信命令協議(SIO_INT)以及定時器中斷程序等(interrupt_T1、interrupt_T2)。為了簡化開發難度,Anlog Devices Inc.公司提供AduC845的庫函數(Hardware Library),為用戶封裝了對芯片寄存器的操作,用戶只需根據具體需求調用相應的庫函數以實現相應的功能(修改AduC845.h,選擇相應功能)。此外,程序還包含有三個Keil C51的內函數intrins.h、math.h和stdio.h。
程序采用定時器中斷延時,定時器定時時間由式(1)確定,電機走的最大步數、旋轉方向、電機起停由UART中斷(SIO_INT)輸入,主函數main()用于頻率設置、I/O、TIM以及UART初始化。
因為要兩次跳變即可完成一個脈沖的輸出,所以定時器中斷程序中要判斷“是不是第二次中斷”,是第二次中斷時,CP跳變,即4次中斷,輸出一個完整脈沖,步進電機走一步。如果當前步數大于設定的最大步數,DIR跳變,步進電機反向旋轉。
計算模塊框圖如圖3所示。

圖3 計算模塊框圖
另外,定時時間是速率的倒數,如果轉速很低時,定時就會很長,應避免定時超出最大定時時間。由于ADuC845在12.58 MHZ,定時器初值為FFFFH時,對應的最大定時時間為5.20ms,所以,當定時時間大于5.20ms時,步進電機應以固定速率運行。
本文設計的系統對定步法算法進行了改進,實現了步進電機作任意步正弦函數的運行,并且不僅可以保證精確的步數,而且還可以保證精確的周期。步進運動并不是嚴格意義上的模擬正弦運行,但步進時間劃分足夠細的話,是完全可以滿足實際應用需求的。
另外,本文采用的口線模擬方法實現了步進電機作正弦函數的運行,大大提高了輸出脈沖的靈活性。我們利用這種方法,還可以根據需要,實現步進電機作任意函數的運行。
本文設計的正弦函數運行控制系統已經過簡單改造成功應用于光學剪切流變儀的開發中,其主要功能是利用步進電機帶動石英光盤作正弦波振蕩剪切。
[1] 劉寶廷,程樹康.步進電動機及其驅動控制系統[M].哈爾濱:哈爾濱工業大學出版社,1997.
[2] 王曉初,何捷.步進電機自動升降速及其單片機控制[J].微特電機,1998,20(3):31-34.
[3] 馬忠梅,籍順心.單片機的C語言應用程序設計[M].北京:北京航空航天大學出版社,2000.
[4] 王福瑞.單片機測控系統設計大全[M].北京:北京航空航天大學出版社,1998.
[5] 李剛,林凌,何蜂.AduC845單片機原理、開發方法及應用實例.電子工業出版社,2006.