趙 鵬,李帥波,錢 美,王宇飛
(新疆理工學院機電工程學院,新疆 阿克蘇 843000)
傳統(tǒng)電機的速度或位置控制比較復雜,如采用有刷直流電機能以光電或磁編碼器測量轉速,再由控制器根據轉速和轉向結合比例積分微分(proportional integral differential,PID)控制算法,通過對PID系數的調節(jié)實現速度或位置的精確控制。但在軟件設計中,測速、調速及算法融入都會占用控制器的定時/計數器或輸入比較/輸出捕獲寄存器的資源,增加軟件設計的復雜度。特別是在調試過程中,如果參數設置不當,可能會造成電機劇烈振動甚至堵轉的情況,導致電機死區(qū)過大甚至燒毀。而且PID參數難以調節(jié),很難達到最佳控制效果。步進電機是1種將電脈沖信號轉換為角位移或線位移的運動裝置。其步距角與驅動脈沖對應且不會長時間累加,并且驅動器的細分設置使控制精度更高,可以組成結構較為簡單而又具有靈活設定精度的開環(huán)控制系統(tǒng),從而利用開環(huán)實現速度和位置的精確控制[1-3]。
鑒于此,本文提出了精度可調的步進電機開環(huán)控制系統(tǒng)設計方案。該方案具有控制效果直觀、性能穩(wěn)定的優(yōu)點。
本文主控芯片采用IAP15單片機,其數據存儲器(random access memory,RAM)為4 KB,程序存儲器(read only menory,ROM)為58 KB,內部集成了可編程計數器陣列(programmable conter array,PCA)模塊、模擬數字轉換器(aralog-to-digital converter,ADC)及4個串口等,硬件資源豐富。人機接口部分由按鍵和有機發(fā)光二級管(organic light-emitting doide,OLED)構成,利用驅動器驅動兩相四線步進電機。其中,驅動器最大支持128細分。通過驅動器的細分設置,可降低步進電機固有低頻振蕩、提升步進電機步距角的均勻度,從而達到精確控制的目的[4-5]。單片機和驅動器的電源由外圍電路提供。系統(tǒng)整體結構如圖1所示。
圖1 系統(tǒng)整體結構框圖
步進電機驅動器引腳功能如表1所示。
表1 步進電機驅動器引腳功能
單片機I/O輸出電流能力較弱。本文采用的增強型51單片機IAP15,即使工作于強推挽輸出模式,最大輸出電流也不超過20 mA。本設計中選擇的步進電機42HS02的額定電流為400 mA,因此單片機I/O無法驅動步進電機,需借助驅動器。而采用驅動器可以大大簡化控制電路,通過細分設置提高控制精度、簡化控制程序[6]。本文選擇M420為驅動器。M420具有過壓過流保護、響應快、噪聲低、運行平穩(wěn)等優(yōu)點。
步進電機采用兩相步進電機,固有步距角為1.8°,則200個脈沖轉1周。驅動器最大支持128細分。本設計將驅動器設置為8細分,則1 600個脈沖轉1周。因此,單片機產生1個脈沖時,步進電機轉0.225°[7]。具體的電機轉速與脈沖頻率、電機固有步距角及細分數的關系為:
(1)
式中:V為電機轉速,rad/s;P為脈沖頻率,Hz;θe為電機固有步距角,(°);m為細分數。
IAP15單片機晶振頻率設置為12 MHz,采用定時器T0不分頻。對應的寄存器操作指令為:AUXR|=0X80。T0工作于方式0為自動重裝載16位定時工作模式時,對應的定時器初始值設為65536-FOSC/2/輸出頻率。本文采用7檔調速。調速方案利用按鍵結合軟件查詢的方式實現。在程序設計中,對于不同的數據類型(如字符型、整型、浮點型等)同時存在的情況,采用結構體定義;對于相同的數據類型的情況,則采用數組定義。由于定時器定時初值數據類型均為16位無符號整型,則根據定時器定時時間不同將其初值定義為長度為7的數組,對應的頻率分別為250 Hz、500 Hz、1 kHz、1.5 kHz、2 kHz、3 kHz及4 kHz[8]。位置控制采用定時器T1實現。T1的控制方案采用在給定的步進電機驅動頻率下,通過設定T1定時時間求取脈沖數量,從而得到步進電機的角位移量。位置控制式為:
(2)
式中:Ф為角位移,(°);T為定時時間,s。
如果將角位移量轉換為線位移量,則可以通過角位移與導程之間的線性關系求取線位移量[9]。如某絲桿滑臺的導程為4 mm,則步進電機轉一圈滑塊移動的距離為4 mm。
本文設計使用的IAP15單片機可通過燒寫軟件設置晶振頻率和上電復位功能,節(jié)省了最小系統(tǒng)設計成本。采用I2C型OLED顯示步進電機工作狀態(tài),杜絕了采用傳統(tǒng)并行顯示器作為顯示終端時占用單片機硬件資源和顯示字符有限而造成顯示不直觀的問題。利用單片機I/O模擬I2C協(xié)議實現對控制參數的實時顯示功能,在減少系統(tǒng)功耗的同時也降低了印刷電路板(printed circuit board,PCB)設計中的布線難度。為了提高效率,按鍵采用中斷和查詢相結合的方式,有效利用了單片機外部中斷資源。外部中斷0設置電機的啟停操作。外部中斷1設置電機的正反轉設置。外部中斷2、外部中斷3實現電機的速度調節(jié)。剩余2個按鍵以查詢方式實現位置加減控制。為了節(jié)省硬件資源,速度與位置的模式切換采用位置加、減組合按鍵實現。步進電機脈沖式驅動器M420控制信號采用5 V供電,與單片機TTL電平兼容。步進電機與單片機無需電平轉換,直接實現控制信號的實時交互,驅動電壓為直流18~30 V,工作電流為0.2~2.2 A。設計中采用5 V直流穩(wěn)壓電源向單片機和驅動器控制器供電。為使驅動電源保留一定的裕量,采用輸出電壓為24 V、額定電流為3.2 A的開關電源供電方式。
硬件電路如圖2所示。
圖2 硬件電路圖
軟件設計根據C語言程序移植性強的優(yōu)點,采用模塊化設計思路,利用主程序調用各個子程序來實現。將各個子程序設計為應用程序接口(application programming interface,API)函數,方便主程序的調用、移植和升級。I2C型OLED子程序中包含:I2C協(xié)議的解析;字符及漢字取模后的數組定義;數字、字符及漢字的顯示函數定義等。鍵盤子程序由外部中斷和掃描兩部分組成。外部中斷的效率較高,觸發(fā)方式為下降沿觸發(fā),主要應用于頻繁操作的環(huán)節(jié)。鍵盤掃描子程序具備消抖和松手檢測功能,采用邏輯與判斷的方式識別組合按鍵。其中,模式切換默認為轉速控制模式。單片機對步進電機的速度控制采用不同頻率的脈沖驅動實現,位置控制則結合定時器和脈沖頻率共同實現。OLED要顯示有具體物理單位的轉速或位置信息,則需要單片機程序通過標度變換實現。其速度和位置的標度變換式分別如式(1)和式(2)所示。OLED顯示的具體數據的速度單位為rad/s、位置單位為度或轉換為相應的距離[10-12]。
主程序流程如圖3所示。
圖3 主程序流程圖
針對輸出7種不同頻率的脈沖信號,因其數據類型相同,本文采用數組的形式,利用按鍵觸發(fā)外部中斷實時切換定時器定時初值,以達到轉速調節(jié)的目的。SDS1152CML型示波器可對輸出的250 Hz脈沖進行監(jiān)控。250 Hz脈沖輸出如圖4所示。
圖4 250 Hz脈沖輸出圖
由圖4可知,脈沖輸出要求滿足控制要求,達到了預期的效果。
在細分設定的情況下,轉速控制的準確性與單片機定時器產生脈沖的精度有關,而位置控制的準確性與轉速和定時器定時的誤差有關。傳統(tǒng)的51單片機定時器采用對系統(tǒng)時鐘12分頻的基準進行累加的方式。如12 MHz的系統(tǒng)時鐘12分頻后為1 MHz,則定時器的定時基準為1 μs。對于增強型IAP15系列單片機,可設置為系統(tǒng)時鐘不分頻,以提高定時器定時精度。單片機時鐘頻率可通過軟件設置。對于時鐘頻率的設置,如果只是實現串口通信功能,可優(yōu)先選擇11.059 2 MHz或22.118 4 MHz作為時鐘頻率,以確保數據傳輸的準確性。
1 kHz脈沖輸出如圖5所示。
圖5 1 kHz脈沖輸出圖
本文對速度和位置的控制均使用單片機的定時功能。為了在計算定時初值時能減小舍入誤差、提高系統(tǒng)的控制精度,時鐘頻率優(yōu)先選擇12 MHz或24 MHz,且定時時間為定時基準的整數倍。當時鐘頻率設置為12 MHz時,硬件電路、示波器及外接電源搭建后通過系統(tǒng)聯調,示波器監(jiān)控的系統(tǒng)運行狀態(tài)和輸出波形與步進電機運行效果一致,且系統(tǒng)運行穩(wěn)定。
單片機I/O與驅動電平一致,保證正常的數據交互,但啟動步進電機并設定轉速或位置后電機不運行。經分析,這主要是由于控制信號的時序混亂造成的。對此,可通過排查電機是否正常供電、驅動器使能端ENA是否為高電平使能有效,使ENA應超前方控制信號DIR 500 ms以上、DIR信號超前脈沖輸入端PUL信號下降5 μs以上、PUL高低電平的脈寬大于2.5 μs,以保證控制時序的匹配。
驅動器電流過小、加速時間過短或電機扭矩過小都會造成電機堵轉。這些問題可通過驅動器選擇合適的電流檔、延長加速時間或增加電機扭矩的方法予以解決。電機停轉或堵轉時均為靜止態(tài),難以區(qū)分。如果在電機通電運行時電機停轉,但有較大的電流聲或電機機殼溫度驟升可以判斷其為堵轉,此時應立即斷電。在脈沖和定時穩(wěn)定的前提下,如果步進電機定位不準,則主要是由控制信號受到干擾或細分設置錯誤造成的。這可以通過排查驅動器屏蔽接地線是否可靠接地或設置正確的細分數加以解決。
驅動器中,SW4用于設置無脈沖時,需判斷步進電機工作電流是否減半。如果設置為無脈沖時電流減半,當控制器再次有脈沖信號產生時,驅動器的驅動電流會自動恢復正常,從而保護電機。在使用時,如果電機靜止時需要保持足夠大的力矩以克服系統(tǒng)擾動,一般不開啟電流減半模式,以防電機失位。其他情況下,開啟電流減半模式。這也是當通電后電機處于靜止態(tài)時,電流不減半模式下用外力難以使其轉動的原因。
OLED像素為128×64,其內部沒有字庫,但可通過取模軟件生成字庫。其顯示變化過程的實質是通過單片機控制屏幕動態(tài)刷新的過程。設計初期無法實時顯示轉速的主要原因是定義和調用的參數類型不一致。因為調用的轉速顯示函數的實參為double型。對此,本文通過將計算轉速的頻率數組定義為double型予以解決。
本文通過對系統(tǒng)結構分析、理論分析與計算、軟硬件設計、系統(tǒng)調試及問題分析,以IAP15單片機結合外圍電路實現對兩相四線步進電機精確的速度和位置控制,通過系統(tǒng)聯調證明了該步進電機控制系統(tǒng)的穩(wěn)定性。通過對單片機定時器、中斷等內部資源的有效、合理使用,結合步進電機專用驅動器實現兩相四線步進電機的七檔速度的調節(jié)及位置控制,利用示波器實時監(jiān)控驅動頻率并與單片機控制的OLED顯示頻率對比,保證測量值與輸出值的一致性。本設計理論依據充分、調試過程明晰、系統(tǒng)運行穩(wěn)定,能對步進電機控制系統(tǒng)的研究提供借鑒。