郭彩萍
(太原工業學院電子工程系,山西太原030008)
基于步進電機的自動控制升降旗系統設計
郭彩萍
(太原工業學院電子工程系,山西太原030008)
為了實現自動控制國旗的升降,本文設計了一種基于單片機和步進電機的自動控制升降旗系統。設計采用STM32單片機作為核心處理器,采用28BYJ-48永磁式步進電機提供動力,電機驅動使用ULN2003大電流高壓驅動芯片,采用LCD1602顯示旗幟高度。經測試,本系統結構簡單、可靠性高。
STM32單片機;步進電機;ULN2003
目前許多場合的升旗方式,還停留在人工升旗的階段,這樣既對旗手有較高的要求,也不利于升旗過程的協調,喪失了升旗的莊重與嚴肅[1]。針對這種情況,本文設計了基于智能自動控制技術與步進電動機技術的自動控制升降旗系統,本系統結構簡單、可靠性高,可以運用于各種場合的升降旗儀式,應用前景廣泛。
自動控制升降旗系統主要由單片機核心控制模塊、按鍵控制模塊、顯示模塊和步進電機驅動模塊和電源模塊等電路組成,系統設計總框圖如圖1所示。

圖1 系統整體方案框圖
設計采用具有高性能、低成本、低功耗,有嵌入式應用專門設計的ARM Cortex-M3內核STM32系列單片機[2]。STM32F103VT6片內集成從32K字節至128K字節的閃存和從6K字節至20 K字節的SRAM,7通道DMA,外設支持定時器、2個I2C、3個USART、2個SPI、CAN接口和USB2.0全速接口。STM32F103VT6采用LQFP100封裝,包含80個快速I∕O口,并且所有I∕O口可以映像到16個外部中斷。
步進電機可以將脈沖信號轉變為:角位移,線位移[3]。圖2是四相步進電機的原理圖,它由外圍的定子、中間的轉子和定子繞組組成。如圖所示,開始時B相磁極與0、3號轉齒對齊,其它的磁極與其它轉齒則是錯開的。當第一個脈沖到來時,電位加到C相磁極。此時1、4號轉齒與C相磁極對齊,而其它的磁極與轉齒全都錯開。以此類推,脈沖依次循環加到相應的磁極上,便可以驅動轉子持續轉動。步進電機的轉速和步進電機停止的位置通過改變脈沖信號的頻率和脈沖數實現。

圖2 步進電機工作原理示意圖
本次設計我們選用五線四相的永磁式減速步進電機28BYJ-48。28BYJ-48減速步進電機步距角為5.624∕64,減速比為1:64,所以該型號步進電機轉一圈需要4096個脈沖信號。完成磁場周期性變化所需的脈沖個數稱為步進電機的拍數[4],而完成磁場周期性的過程也稱為勵磁,步進電機的勵磁包括全部勵磁和半步勵磁,半步勵磁又可分為1相勵磁和2相勵磁。根據這幾種勵磁方式的組合,N相步進電機可以實現N相單N拍、N相雙N拍和N相N拍的工作方式。表1列出了四相步進電機在不同通電狀態下的運行方式,表2則展示了28BYJ-48步進電機采用4-1-2勵磁方式,完成逆時針運轉時的脈沖順序。

表1 步進電機工作方式

表2 4-1-2驅動方式
電機驅動采用ULN2003A大電流高壓驅動芯片,ULN2003A驅動步進電機工作電壓高、工作電流大、可以較為精確的控制電機轉向、步距和速度。驅動電路如圖3所示。

圖3 步進電機驅動電路
根據輸入步進電機脈沖順序的不同可以改變步進電機轉動方向的原理,28BYJ-48步進電機采用8拍方式運行實現順時針轉動和逆時針轉動的脈沖電平表見表3和表4。

表3 28BYJ-48順時針轉動表

表4 28BYJ-48逆時針轉動表
在設計控制步進電機方向的程序時,需按表3和表4分配脈沖。
控制步進電機轉速,可以通過單片機輸出脈沖的頻率改變實現[5]。在本設計中輸出脈沖頻率大小由延時函數控制。當我們減小延時,說明加大了脈沖頻率,所以提高了電機轉速。反之,則減小了電機速度。但在這里還要注意28BYJ-48步進電機的啟動頻率大于等于550 PPS,即脈沖間隔應小于1.8 ms。
根據28BYJ-48步進電機的技術參數,它的步距角為5.624∕64,所以它轉一圈需要4096個脈沖信號。控制輸出脈沖數目,可以精確的定位步進電機轉動的圈數。另外根據已知的步距角和脈沖頻率,根據公式(1)計算電機轉速、公式(2)計算角速度和公式(3)計算出電機運轉的線速度,從而計算出升降旗過程中旗幟的高度。

式中,f表示脈沖頻率;θ表示步距角;n表示轉速,單位為轉∕分鐘;ω表示角速度;v表示線速度;r表示步進電機滑輪的半徑。
根據設計要求,軟件設計需要實現的功能主要有:按鍵控制、升旗、降旗、降半旗和顯示旗幟高度。
STM32單片機掃描鍵盤并接收鍵值信息,單片機運算單元對信號進行處理并判斷要輸出脈沖的頻率、方向和個數。步進電機驅動單元接收單片機輸出的脈沖并驅動步進電機完成正轉、反轉,以達到升降旗的目的。同時,根據旗幟高度的計算結果,LCD1602實時顯示此時旗幟的位置高度。
圖4描述了基于步進電機的自動控制升降旗系統主要的程序設計流程。
完成系統的硬件電路設計和軟件設計后,驗證了升降旗系統是否可以按要求實現功能。首先,進行理論驗證,通過計算得出升旗時間的理論值(大約43~46 s)、升旗和降旗速度理論值、旗幟在特定時刻的高度理論值等。其次,啟動系統,分別對升旗、降旗和降半旗進行測試,記錄不同時刻有關速度、高度等參數。最后,將理論值與測試值進行比較,符合功能及精度的要求。

圖4 系統程序流程圖
[1]盧洪武,劉偉.國旗自動控制升降系統的研制[J].電子技術,2007,34(1):17-21.
[2]王曉麗,姜川,于躍.基于STM32的校園能耗監控系統的以太網接口設計[J].吉林建筑大學學報,2015,32(01):76-79.
[3]湯冬云,張毅.嵌入式Linux下步進電機驅動開發[J].計算機技術與發展,2012(6):167-170.
[4]黃露.基于FPGA的步進電機控制系統設計與實現[D].重慶:重慶大學,2011.
[5]劉玉賓,胡健.步進電機的驅動控制電路[J].科技資訊,2007(21):16-17.
Design of Automatic Control Flag Hoist System Based on Stepper Motor
GUO Cai-ping
(Department of Electronic Engineering,Taiyuan Institute of Technology,Taiyuan Shanxi,030008)
In order to achieve automatic control flag hoist,this paper designs the automatic control movements flag system based on microcontroller and the stepper motor.Design uses STM32 microcontroller as the core processor,use 28BYJ-48 permanent magnet stepper motors for power,motor drive using ULN2003 high-current high-voltage driver,using LCD1602 display banner height.After testing,the system is simple with high reliability.
STM32 microcontroller;stepper motor;ULN2003
TP391
A
1674-0874(2015)05-0031-03
2015-08-09
2014年山西省高等學校特色專業建設項目[080701]
郭彩萍(1981-),女,山西文水人,碩士,講師,研究方向:信號與信息處理。
〔責任編輯 高彩云〕