六盤水師范學院 陸 孟 楊朝磊
本文闡述了一種基于STM32的充電樁狀態監測系統的硬件及軟件設計,系統采用STM32作為主控芯片,以Uc/os-II為操作系統。該監測系統通過RFID模塊讀取用戶磁卡信息,采用DGUS屏設計了人機交互界面,方便用戶通過刷卡進行充電操作。經過測試,該系統性能穩定,實現了對充電狀態的動態顯示及實時控制,具有一定的研究價值。
電動汽車充電樁是新能源汽車的充電基礎設施,隨著新能源汽車的普及,電動汽車充電樁的應用越來越廣泛。但充電樁的用戶體驗還存在一些問題,如:觸摸屏界面不夠美觀、系統處理速度緩慢等,給用戶的使用帶來了不便。為了滿足用戶簡單、方便、快捷的充電需求,本文提出了一種基于STM32的充電樁狀態監測系統,采用STM32芯片作為主控芯片,以嵌入式Uc/os-II作為操作系統,通過RFID模塊讀取用戶信息,同時在DGUS屏設計了GUI人機交互界面,實時顯示充電電壓、電量、卡內余額等信息,充電數據則通過串口上傳到上位機進行進一步分析和處理。
充電樁狀態監測系統主要由DGUS顯示屏模塊、RFID射頻識別模塊、STM32主控模塊、充電控制模塊、上位機模塊組成。系統首先通過RFID射頻識別模塊讀取用戶磁卡,將用戶的充電及消費信息讀取到控制單元中,STM32主控模塊對磁卡信息進行處理后,通過充電控制模塊對充電的通斷進行控制,同時通過串口將充電信息傳輸到DGUS顯示屏進行實時顯示;用戶在DGUS顯示屏上的操作指令也將通過串口傳輸給STM32主控模塊,實現對充電狀態的控制。最后主控模塊將各次的充電數據通過串口上傳到上位機處理中心進行分析存儲。系統總體設計方案如圖1所示。
圖1 系統總體設計方案
RFID射頻識別模塊是實現用戶信息獲取的核心,本設計采用M209CX芯片來實現對用戶次卡信息的讀取,該模塊采用13.56MHz非接觸射頻技術,內嵌飛利浦射頻基站,通過向指定的端口發送命令或者操作函數即可實現對卡片的讀寫。微處理器與M209CX讀卡器模塊之間采用串口1進行通信,接口上電路原理圖如圖2所示。
圖2 RFID模塊接口電路圖
為減少微控制器的運行負擔,提高系統的運行效率,本設計采用北京迪文DMT80600080_16WT型號的DWIN液晶顯示屏作為人機交互界面的載體。該DGUS屏把GUI分解成控件并且按照頁面來配置,控件顯示直接由變量控制。DGUS屏集成了DWIN_OS平臺,該OS平臺擁有數學運算、數據存儲、串口通信等功能,用戶對觸摸屏進行充電模式選擇、充電界面切換操作,不依賴于微處理器,微處理器與觸摸屏之間只需要通過變量傳遞,更新顯示數據。觸摸屏采用485總線與處理器通信,其接口電路原理如圖3所示。
圖3 DGUS屏接口電路原理圖
為實現對充電樁充電狀態的控制,本系統采用直流接觸器作為充電電路的通斷控制器。在充電控制電路中,由于微控制單元的IO口輸出電流不足以驅動繼電器,因此接上三極管放大電來驅動繼電器。當STM32的PC9為高電平時,PNP三極管斷開,接線端子引腳1、2閉合,充電電路處于斷開狀態;當PC9處于低電平時,三極管導通,線圈吸合引腳1、3,充電樁輸出充電電能,實現充電。充電控制電路圖如圖4所示。
圖4 充電控制電路圖
Uc/os-II在STM32上移植成功后,需要創建液晶屏顯示任務、串口任務、讀卡器任務、通信任務以及計量任務等用戶任務。首先,設置系統時鐘節拍為1s/OS_TICKS_PER_SEC(1000),同時定義充電樁系統最大任務數:#define OS_MAX_TASKS 20u,接下來,分別創建其他關鍵任務:
(1)液晶屏顯示任務。首先將已編寫的底層液晶驅動程序,添加到Uc/os-II操作系統。由于顯示任務設計的變量較多,因此需要占用的堆棧較大,設置顯示任務堆棧為256KB,同時顯示任務比較重要,設置優先級為3。
(2)串口1任務。編寫串口驅動程序,并將該程序的頭文件及源文件添加到操作系統中,設置串口任務設置優先級為10,分配任務棧為64KB,定義任務棧的接口函數為void usart_task(void *pdata)。接著通過調用OSTaskCreate(x,x,x,x)函數創建串口任務。
(3)通信任務主要通過調用OSMboxPend( )和OSQPend( )接收充電的電量、IC卡號以及金額等信息,并上傳到上位機。
各任務創建完畢后,初始化任務,并在操作系統中啟動任務。Uc/os-II任務的創建及啟動流程如圖5所示。
圖5 Uc/os-II任務的創建及啟動流程圖
STM32通過串口1與RFID模塊通信。串口驅動調用庫RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE)來使能USART1、GPIOA時鐘,進而配置IO口的輸入輸出模式,同時對讀卡器模塊的底層驅動創建card.c和card.h兩個文件,在這兩個文件中編寫了更改讀卡器模塊的波特率、控制LED燈的亮滅、讀取卡片的ID、卡片密鑰驗證、讀取錢包數據、卡扣錢等驅動函數。在串口1中斷服務程序中對讀卡器返回一幀數據進行存儲和處理。程序流程圖如圖6所示。
圖6 RFID模塊程序流程圖
首先,需要在DGUS屏已加載好的圖片上繪制相應的控制控件,在觸控配置中進行增量調節、拖動調節、RTC設置、基礎觸控等操作,在所需要指定的區域拖拽圖片并覆蓋,通過觸控配置實現圖片之間的相互切換。為實現觸摸屏數據動態顯示,需要在變量配置中設計為數字變量顯示,分別給變量分配地址、設置變量顯示顏色、設置字體大小和變量類型。由于充電樁設計的變量較多,因此將變量生成Excel表格進行統一管理,以便于為后續的微處理控制。變量配置參數如圖7所示。
圖7 DGUS屏參數配置
界面設計好以后,通過SD卡下載到DGUS屏,完成觸摸屏部分開發。由于DGUS屏采用變量驅動模式工作,屏的工作模式和GUI狀態完全由數據變量控制。因此串口指令只需要對變量進行讀、寫操作。迪文屏與外部充電樁處理器交互只需以下五種指令集,如表1所示。
表1 DGUS屏指令集
首先進行IC卡認證,該界面主要涉及三個按鈕,分別是play、stop、返回主界面。當用戶按下play按鈕,圖片中的IC卡將運動起來,示意用戶將IC卡放入讀卡器區域,并進行密鑰驗證。
圖8 充電樁刷卡認證界面
當用戶信息讀取完畢且秘鑰驗證成功后,用戶可進行四種充電模式的選擇,分別為:固定電量、固定時間、固定金額、自動充滿模式。當選擇相應的充電模式后,系統進入對應的充電界面,同時STM32主控模塊控制充電模塊導通,進入充電狀態。為減少控制模塊的存儲負擔,最終將所有的系統信息上傳到上位機進行進一步的分析及存儲。充電信息界面及上位機界面如圖9、10所示。測試結果表明,該系統能夠正確讀取磁卡信息,并對充電過程進行穩定合理地控制,人機界面美觀、操作方便,系統反映靈敏,數據準確。
圖9 充電信息界面
圖10 上位機界面
本文提出了一種基于STM32的充電樁狀態監測系統,該系統通過RFID模塊獲取用戶測卡信息,并在DGUS屏上進行存儲及顯示,用戶亦可通過DGUS屏的人機界面進行信息的輸入及充電模式的選擇控制,進而通過STM32主控模塊控制充電模塊的開始與結束。經過測試,該系統性能穩定,人機界面友好,反應靈敏,功能較完善,具有一定的實際應用價值及研究價值。