無錫科技職業(yè)學(xué)院 史 萍 張 瑾
為了實現(xiàn)電機測速的高性能、低成本、低功耗,本文設(shè)計了一種基于STM32F103CET6單片機控制的電機轉(zhuǎn)速測量儀,用OLED屏顯示其每分鐘轉(zhuǎn)速和電機圖片。采用霍爾傳感器接收電機旋轉(zhuǎn)信號,經(jīng)過上拉處理后送STM32單片機,單片機用中斷的方式進行處理,通過連續(xù)兩次接收到傳感器信號的時間差確定每分鐘電機的轉(zhuǎn)速。該測速儀便于功能擴展、電路結(jié)構(gòu)簡潔、性能價格比高、實用性強。
隨著芯片技術(shù)及其開發(fā)軟件的不斷發(fā)展,許多控制功能可以采用嵌入式技術(shù)來完成,這樣就為電機的精準(zhǔn)測速提供了便捷,通過測速可以反應(yīng)設(shè)備運行是否正常以及確定定位精度。本測速儀把嵌入式STM32單片機技術(shù)運用到電機測速系統(tǒng)中,不但可以提高性能,而且還可以降低功耗,進而減少系統(tǒng)成本。另外,霍爾傳感器利用磁感應(yīng)測速抗外界干擾能力強且靈敏度高,進一步提高了測速精度。
電機測速儀硬件設(shè)計框圖如圖1所示,霍爾傳感器模塊將感應(yīng)到的電機信號經(jīng)過處理成為脈沖信號,該脈沖信號作為中斷信號送STM32F103CET6單片機,單片機進行信息處理,最后送ALIENTEK OLED顯示模塊,該模塊采用8080并行模式,OLED屏顯示中英文漢字、電機轉(zhuǎn)速和電機圖片。
圖1 電機測速儀硬件設(shè)計框圖
霍爾傳感器模塊組成如圖2所示,圖中霍爾傳感器型號為3144,1腳接電源(電源范圍為4.5V至24V,本設(shè)計選擇5V供電),2腳接地,3腳接10K的上拉電阻連3.3V電源,然后接STM32單片機的PE2腳。
霍爾傳感器模塊中的霍爾傳感器預(yù)先安裝固定,在電機的旋轉(zhuǎn)部位安裝導(dǎo)磁性能優(yōu)良的磁鋼,當(dāng)電機旋轉(zhuǎn)時將帶動磁鋼接近霍爾傳感器,此時霍爾傳感器3腳將輸出信號送給單片機,電機不轉(zhuǎn)時霍爾傳感器輸出高電平,當(dāng)電機旋轉(zhuǎn)時霍爾傳感器接近磁鋼將輸出低電平。
圖2 霍爾傳感器模塊組成
STM32F103ZET6單片機為中低端的32位增強型微處理器,由意法半導(dǎo)體公司制造,其內(nèi)核基于Cortex-M3即采用哈佛結(jié)構(gòu),運用三級流水線處理機制并增加了分支預(yù)測功能,完全基于硬件進行中斷處理,中斷處理速度快;最高工作頻率達72MHz,片內(nèi)Flash為512K,指令運行周期短;3.3V供電,為低功耗芯片;該芯片集成了Timer、ADC、SPI,I2C及UART等多種外設(shè)功能,易于功能擴展。其端口PA~PG可根據(jù)需要定義成輸入或輸出及多種復(fù)用口,這樣PCB板的設(shè)計人員不必把某些信號在板上繞一大圈完成聯(lián)接,既便于PCB的設(shè)計又減少了信號的交叉干擾。
圖3 單片機和OLED模塊插座連接圖
單片機和OLED模塊插座連接如圖3所示,圖中U3為STM32F103ZET6單片機,J1為OLED模塊連接插座,OLED的片選信號OLED_CS和單片機的PD6相連,OLED的寫數(shù)據(jù)信號OLED_WR和單片機的PG14相連,OLED的讀數(shù)據(jù)信號OLED_RD和單片機的PG13相連,OLED的硬復(fù)位信號OLED_RST和單片機的PG15相連,OLED的命令/數(shù)據(jù)標(biāo)志信號OLED_RS和單片機的PD3相連,OLED的數(shù)據(jù)信號D0~D7分別和單片機的PC0~PC7相連。
圖3中U3的PE2接霍爾傳感器模塊送來的信號。U3的8腳和9腳間接外部低頻32.768KHz晶振,晶振JZ2和電容C7、C6構(gòu)成晶體振蕩電路。U3的23腳和24腳間接外部高頻8MHz晶振,同樣晶振JZ1和電容C2、C3也構(gòu)成晶體振蕩電路。U3的33腳接電源并對地接電容作去耦處理,起保護芯片作用,30腳接地。
圖4 OLED顯示模塊
OLED顯示模塊如圖4所示,圖中OLED1為OLED12864液晶顯示屏,可以顯示128×64個點,J2為OLED顯示模塊插頭,與圖3中的J1配對使用,OLED1的BS1和BS2分別接J3和J4的TP信號,通過跳線帽短接3.3V電源或地,接電源時信號值為‘1’,接地時信號值為‘0’,BS1、BS2為不同信號值代表不同的工作模式,如表1所示,當(dāng)BS1和BS2為“00”時,OLED工作于4線SPI模式;當(dāng)BS1和BS2為“10”時,OLED工作于I2C模式;當(dāng)BS1和BS2為“01”時,OLED工作于8位6800模式;當(dāng)BS1和BS2為“11”時,OLED工作于8位8080模式。本設(shè)計中OLED模塊采用8位8080工作模式。
表1 OLED模塊工作模式
OLED的優(yōu)點是具備自發(fā)光特性,不需背光源,高辨率為128×64;其使用了非常薄的涂層和玻璃基板,厚度可以做得較薄,可用于撓曲性面板。其缺點是尺寸難以實現(xiàn)大型化和沒有顯存,它的顯存依賴于SSD1306驅(qū)動芯片,顯存大小為128×64位,這些顯存分8頁,每頁包含了128個字節(jié)。
電機測速儀軟件流程圖如圖5所示,先進行初始化,然后調(diào)用函數(shù)顯示相關(guān)文字和電機圖片。當(dāng)STM32第一次接收到傳感器信號時,定時器計數(shù)值清零;當(dāng)接收不到第二次傳感器信號時,定時器TIM5溢出;當(dāng)定時器溢出次數(shù)超過預(yù)設(shè)值時,表示電機電機不轉(zhuǎn),顯示轉(zhuǎn)速值為0。當(dāng)?shù)诙谓邮盏絺鞲衅餍盘枙r,單片機讀取定時器計數(shù)值TIM5_CNT,此值即為定時器計數(shù)總時長,也就是電機轉(zhuǎn)1圈所花的時間,已知通用定時器的時鐘為72MHz,則電機轉(zhuǎn)速的計算公式為(60×72×106)/定時器計數(shù)值。
圖5 電機測速儀軟件流程圖
圖5中傳感器信號作為中斷信號送STM32單片機。STM32F103的中斷很強大,每個GPIO口都可以作為中斷使用,STM32F103ZET6的16條外部中斷線最多可連接112個GPIO,PA0~PG0共用1條EXIT0外部中斷線,PA1~PG1共用另1條EXIT1外部中斷線,其他IO口共用外部中斷線,以此類推。STM32F103的中斷優(yōu)先級寄存器NVIC_IPRX用于配置外部中斷的優(yōu)先級,使用IPR的高4bit配置若干種中斷優(yōu)先級,其數(shù)值越小優(yōu)先級越高,即外部中斷EXIT0優(yōu)先級最高。中斷編程分四大步驟:(1)配置相關(guān)寄存器使能中斷請求稱為外設(shè)使能,如單片機接收到傳感器送來的外部中斷信號,這個中斷由外部中斷控制寄存器的相關(guān)中斷使能位來控制;(2)通過NVIC_PriorityGroup函數(shù)配置中斷優(yōu)先級分組;(3)配置NVIC寄存器,初始化NVIC_InitTypeDef函數(shù),指定中斷源、搶占優(yōu)先級、子優(yōu)先級、內(nèi)核中斷使能或失能;(4)編寫中斷服務(wù)函數(shù)。
以下代碼為主程序,執(zhí)行了延時、LED端口、TIM5、中斷分組、OLED初始化,調(diào)用若干函數(shù)顯示中英文和圖片,while循環(huán)語句實現(xiàn)LED燈翻轉(zhuǎn)指示。
圖6 OLED顯示
以下代碼為外部中斷EXIT2服務(wù)函數(shù),當(dāng)?shù)诙谓邮盏絺鞲衅餍盘柡?,?jīng)計算顯示電機速度,并清除外部中斷2。
OLED顯示內(nèi)容如圖6所示,顯示了中英文、轉(zhuǎn)速和圖片。OLED顯示屏能顯示128列64行點陣,圖中中文漢字采用14×16點陣,英文采用8×16點陣,圖片采用32×32點陣。
結(jié)語:本設(shè)計采用嵌入式單片機STM32F103為控制芯片,利用霍爾傳感器3144進行電機測速,OLED屏顯示轉(zhuǎn)速信息,實現(xiàn)電路結(jié)構(gòu)簡捷,成本低、可靠性高、抗干擾能力強、擴展性好,實踐效果良好。