李 琳 張 峰
(西安石油大學 電子工程學院 陜西 西安 710065)
跑步機自從20 世紀80 年代面世以來,隨著集成電路和數字電路的飛速發展,其控制系統也已從最初的模擬單閉環控制系統發展到了今天的數字式雙閉環控制系統,而從近些年來科學技術的進步和國內外數字智能運動控制系統的發展趨勢來看,未來跑步機控制系統的智能化、數字化將成為主流的發展趨勢,這也符合人性最基本的規律,也將是改變現行的體育鍛煉模式的最好途徑。
現今跑步機控制系統多以PIC 系列單片機、AVR 系列單片機為控制核心,而對于要求較高的數字化、智能化的控制系統來說,以上幾種控制芯片顯然滿足不了未來系統的要求。為滿足跑步機對高性價比、高度智能化和自動化的發展需要。系統就以STM32 微控制器為控制核心設計了一種新型跑步機控制系統。系統不僅可以實現常規的PWM 調速控制,而且還可以通過語音識別功能直接控制跑步機系統,通過語音播放功能實現MP3 和故障信息播放,并且還具備心率檢測、心率控速等功能,從而使跑步機更加數字化、智能化、人性化。
如圖1 所示,本系統主要以STM32 微控制器作為主控制器,由按鍵輸入、語音識別及輸出電路、心率電路、晶振電路、反饋電路、電源電路、調速電路、顯示電路組成。既可通過心率電路來檢測跑步者身體狀態,也可根據按鍵或者語音輸入的信息來進行電機調速,并且將當前的狀態通過顯示電路顯示出來。
本文主要從主控制器、電源電路、反饋電路、調速電路、心率電路、語音識別及輸出電路來介紹系統的硬件結構以及工作原理。

圖1 系統組成框圖
系統選用ST 公司的STM32F103RBT6 為主控制器。該芯片使用Cortem-M3 內核,工作頻率為72 MHz,內置高速存儲器,豐富的增強I/O 端口和鏈接到兩條APB 總線的外設。STM32 系列所有型號的器件都包括2 個12 bit 的ADC、3 個通用16 bit 定時器和一個PWM 定時器,還包括標準和先進的通信接口:多達2 個I2C 和SPI、3 個US-ART、一個USB 和一個CAN。其工作電壓為常見的3.3V。該內核是專門設計于滿足集高性能、低功耗、實時應用、具有競爭性價格于一體的嵌入式領域的要求[1-2]。
系統中既要給電機提供電壓,也要給調速電路、語音識別及語音播放芯片、主控芯片分別提供15 V、5 V、3.3 V 電壓。對電機的電源輸入,通過對220 V 交流經過整流、濾波[3]后變成直流電壓經過IGBT[4]的調制加在直流電機兩端。控制系統中所需要的15 V、5 V、3.3 V 的電壓,由于對于功率要求不大,分別采用了LM7815、LM7805、LM1117 穩壓芯片來提供電壓。
系統采用雙閉環數字調節,反饋量包括電流反饋和速度反饋[6]。電流反饋通過采樣電阻將IGBT E 極流出的電流進行采樣,并轉換成電壓信號,然后通過放大電路[3]把電壓放大至3.3 V 輸入到主控制芯片ADC 轉換口PA2。速度反饋利用帶有光電傳感器的碼盤,將碼盤產生的脈沖信號進行整形后輸入到主控制器的定時器口PA0。
PWM 控制就是對脈沖寬度進行調制的技術即通過調制其占空比實現對電機轉速的平滑控制[4]。本系統所用的STM32F103RBT6 具有PWM 輸出功能,由于輸出的波形幅值只有3.3 V,所以要對單片機輸出的PWM 信號進行隔離放大。圖2 為PWM 驅動電路。其中,PWM 信號由STM32F103RBT6 定時器TIM3 的CH3 產生,從PB0 輸出,PWM 信號經過隔離后進入電機專用驅動芯片IR2101,經過驅動后加在IGBT 的G 極,通過IGBT 完成對電機的控制。

圖2 PWM 驅動電路
系統采用了手握式心率檢測模塊,該模塊對手部的電極信號進行采集,產生脈沖信號,然后對其進行放大至3.3 V,接著進行濾波和整形后輸入到主控制器定時器口PA1。在測量數據超過正常人體心跳范圍時,系統對自動調低電機的轉速。
圖3 為語音識別及播放部分電路原理圖[7]。LD3320是集成了語音識別和播放功能的專用語音芯片,其內部集成了快速穩定的優化算法,不需外接Flash、RAM,不需要用戶事先訓練和錄音而完成非特定人語音識別,識別準確率高。本系統的人機對話功能就由語音識別實現。
圖3 中,LD3320 芯片與STM32F103RBT6 以并行方式相連接,它的P0-P7 為8 根數據線與主控芯片的8 個I/O口相連接;其A0、RDB、WRB、CSB 四個控制信號以及一個中斷返回信號INTB 也直接與主控制器的I/O 相連接,復位信號RSTB 與主控芯片共用一個復位按鍵;語音輸入是AIN_P、AIN_N 兩個端口經過濾波電路連接一個麥克風,而語音輸出是SPP、SPN 兩個端口直接連接一個550 mW 的揚聲器,通過改變EQ3 端的滑動變阻器可調節語音播放的音量;它的時鐘是與主控芯片共用的;它的兩個LED 是復位指示燈。當有語音輸入的時候,芯片首先對輸入的語音進行頻譜分析,然后提取語音特征,通過語音識別器將提取的語音特征與提前寫入的識別列表中的語音特征進行比對得出識別結果,將識別的結果放入專用寄存器中,完成識別的過程。識別完成后由中斷程序讀取識別的結果,這時通過對4 個控制信號判定是否從P0-P7 口將識別的結果發送給主控器。

圖3 語音識別及輸出電路
本系統軟件是以MDK uVision4 ARM 為開發平臺,使用直接調用寄存器來設置端口程序。整個軟件系統設計包括系統初始化、LD3320 的語音播放及語音識別子程序、LCD 顯示子程序、按鍵掃描子程序、PWM 輸出子程序、輸入捕獲子程序程序、PID 調節子程序和主程序。本文主要介紹主程序、PWM 輸出子程序、語音識別子程序的設計。
如圖4 示,主程序負責整個系統的協調和控制工作,通過調用不同的子程序實現相應的功能。
本程序通過直接調用寄存器來控制PWM 的輸出,首先通過設置時鐘寄存器選擇定時器的類型,再通過設置通用I/O 口的控制寄存器選擇I/O 的輸出類型及功能,接著對定時器的ARR 和PSC 兩個寄存器賦值,確定PWM 的輸出周期,然后設置定時器PWM 模式,以及使能定時器通道,最后通過修改定時器中CCRx 寄存器的值來改變占空比。大概步驟為:開啟定時器,配置P 口類型、設置定時器的ARR 和PSC、設置定時器所用通道的PWM 模式、使能定時器通道,使能定時器、修改定時器的寄存器CCRx 中的值,改變占空比[9]。

圖4 主程序流程圖
圖5 為語音識別子程序及其中斷設計流程圖[10],其各步驟說明如下:
(1)通用初始化和語音識別用初始化。本過程主要完成軟復位、模式設定、時鐘頻率設定、FIFO 設定。
(2)寫入識別列表。列表規則是,每個識別條目對應一個特定的編號(1 個字節),不同識別條目的編號可以相同,并且不用連續,但數值不能超過256(00H-FFH)。芯片最多支持50 個識別條目,每個識別條目是標準普通話的漢語拼音(小寫),每2 個字(漢語拼音)之間用一個空格間隔。如表1 所示,編號可以相同,且不連續,但數值要小于256,表中“xi an”和“gu du”對應同一編號,說明這兩個值會得到相同的結果。

表1 識別列表
(3)開始識別。設置幾個相關的寄存器,就可以控制LD3320 芯片開始語音識別。
(4)響應中斷。如果麥克風采集到聲音,不管是否識別出正常結果,都會產生一個中斷信號。而中斷程序要根據寄存器的值分析結果。讀取BA 寄存器的值,可以知道有幾個候選答案,而C5 寄存器里的答案是得分最高、最可能正確的答案。
(5)發送識別結果至MCU。讀取C5 寄存器中的值,通過P0-P7 口發送至MCU,其中4 個端口A0、CSB、WRB、RDB 負責控制信號的讀寫類型。

圖5 語音識別子程序設計流程圖
為了保證本系統中語音智能模塊的穩定性、語音識別率以及響應時間,本文根據語音識別電路對語音智能模塊進行了相應的實驗,實驗環境分別為安靜的實驗室和嘈雜的室外,共7 條語音指令,每條指令進行10 次實驗,每個環境下對每個人進行一共70 次實驗,只記錄成功識別的次數。實驗結果如表2 所示。

表2 語音識別實驗結果
實驗中第一組人和和第二組人為女性,第三組人為男性,由實驗數據可以看出在安靜的環境下對三組人的實驗成功率達到了90%以上,而在嘈雜的環境下識別率也可達到82%以上。由此看來在安靜環境下的語音識別率和穩定性都明顯高于嘈雜環境。安靜環境下發出最多2 次語音指令就能識別,嘈雜環境下則要最多4 次才能識別。在模塊的實時響應方面,安靜的環境下能保證響應時間不超過1 S,在嘈雜環境下響應時間要長一點。由于跑步機大都在家庭或者健身房這些相對安靜的環境下工作,因此對于芯片的識別度的要求不是非常的精準,而LD3320 不僅可以進行語音識別、語音播放功能;而且其價格也相對于同類型的凌陽系列單片機有優勢,再加上其資料豐富更易于開發,從而顯示出了其更好的市場應用前景。
本文提出了一種基于STM32 的智能型跑步機系統的設計方案,硬件上重點介紹了PWM 驅動電路的設計以及LD3320 外圍電路的設計。軟件上介紹了如何通過直接操作STM32 寄存器來編寫端口初始化程序,重點介紹了主程序和語音識別程序的設計流程,該驅動程序也可用于其他相關的控制領域,對這些控制領域也有一定的研究價值。文中涉及到的很多內容,包括語音識別和語音播放的程序及硬件設計,STM32 系列芯片的選型和設計對相關嵌入式的設計具有一定參考價值。整個系統設計簡潔,可靠性高,具有很高的性價比。
[1]STM32F103x8/B 增強型系列中容量產品數據手冊[EB/OL].(2012-09-01).http://www.stmicroelectronics.com.cn/stonline/mcu/MCU_Pages.htm.
[2]STMicroelectronics.STM32F10xxx 硬件開發使用入門[EB/OL].(2012-09-01).http://www.stmicroelectronics.com.cn/stonline/mcu/STM32_AN.htm.
[3]童詩白,成華英.模擬電子技術基礎[M].北京:高等教育出版社,2001.
[4]王兆安,黃俊.電力電子技術(第4 版)[M].北京:機械工業出版社,1980.
[5]胡松濤.自動控制原理[M].4 版.北京:科學出版社,2006.
[6]陳伯時.電力拖動自動控制系統[M].2 版.北京:機械工業出版社,2003.
[7]ICRoute.LD332X 數據手冊[EB/OL].[2010-03-10].http://www.icroute.com/web_cn/DownLoad.html.
[8]K.N.King.C 語言程序設計:現代方法[M].2 版.北京:人民郵電出版社,2010.
[9]STM32F10xxx 參考手冊[EB/OL].(2012-09-01).http://www.stmicroelectronics.com.cn/stonline/mcu/MCU_Pages.htm.
[10]ICRoute.LD332X 開發手冊[EB/OL].(2012-09-01).http://www.icroute.com/web_cn/DownLoad.html.