劉志嫻++江敏
摘要:本設計是基于STM32F407單片機設計的滾球控制系統,本系統主要由圖像采集與處理模塊、液晶顯示屏驅動模塊、矩陣鍵盤模塊、電源穩壓模塊等構成。本系統通過OV2640攝像頭采集圖像數據以此判斷滾球的位置,并結合PID算法來控制調節舵機進而實現小球停在目標位置。為了方便調試和復測,系統采用矩陣鍵盤的模式。通過對本系統的軟硬件的實際測試,其能穩定地運行,到達了預期的目標。
關鍵詞:STM32F407;OV2640;PID
中圖分類號:TM33 文獻標識碼:A 文章編號:1007-9416(2017)12-0017-02
1 系統方案設計原理
1.1 設計原理
本設計主要由四個部分組成,分別是圖像采集與處理模塊、平板驅動模塊、矩陣鍵盤模塊、電源穩壓模塊,系統設計框圖如圖1所示。
圖像采集與處理模塊作為本系統的最核心,主要是利用圖像傳感器完成對小球位置的采集和對圖像進行二值化處理;平板驅動模塊是通過PWM對電機的驅動完成對平板的驅動,使小球運動到指定位置;矩陣鍵盤模塊是通過對主芯片的控制來改變對小球目標位置的控制;電源穩壓模塊是提供給芯片,舵機等穩定電源。
1.2 電源穩壓設計
在此系統中運用到的電源可能不穩定,需要性能較好的穩壓模塊。目前小功率的直流穩壓電源模塊有很多,主要有線性穩壓和開關穩壓電路,大多數采用線性集成穩壓器,因此設計的主要任務是選擇合適的集成穩壓器及整流濾波參數。本設計采用的是三端固定輸出集成穩壓器CW7800。
CW7800集成穩壓器內部電路組成框圖如圖2所示,它由調整電路、保護電路、比較放大、基準電壓、啟動電路、取樣電路等部分組成。啟動電路是電路有輸入電壓UI時,利用UI對穩壓器自身快速建立一個輸出電壓UO,使穩壓器工作。在取樣電路中,利用電阻對輸入電壓進行分壓,由于分壓電阻是固定的,則輸出電壓UO是固定的;保護電路對穩壓器起到保護作用。
1.3 算法設計
傳統的位式控制算法的結構如圖3所示。
基本特點是輸出信號單一,只能為高電壓或者低電壓,用來驅動控制對象;算法輸出信號的依據是設定值與當前值比較,若設定值大于當前值,則輸出高電平,若設定值小于當前值,則輸出低電平。這種算法沒有考慮到偏差,在控制對象時不能實現對對象的變化趨勢的控制。
PID控制算法的結構如圖4所示。
Sv是用戶設定的初始值;Pv是當前的狀態。在PID控制算法中,有三個變量分別為Ek,Sk,Dk。Ek表示當前的偏差,Sk表示歷史偏差,Dk表示最近兩次的偏差之差。
(1)
通過公式(1)即可實現PID控制。根據公式(1)可知,PID算法有三個環節,比例環節,積分環節和微分環節。若偏差為0,則Kp為0,只有存在偏差時,比例系數才會加大或減小,當比例系數Kp加大時,會使滾球系統動作加快,但容易造成不穩定。積分環節主要是用于消除系統穩定后輸出值與設定值的差值。在本系統中為了簡化系統設計,可不用積分環節。微分系統反應了偏差信號的變化規律,可以進行超前調節。
2 系統程序設計
利用OV2640攝像頭采集圖像,并將數據發送到核心芯片,判斷小球位置是否到達目標位置。若小球未到達目標位置,則根據增量式PID算法使小球快速穩定的停在指定位置,完成要求。為方便調試,系統程序分模塊進行設計,將程序分成LCD液晶顯示模塊,舵機驅動模塊,攝像頭模塊。軟件程序流程圖如圖5所示。
2.1 OV2640攝像頭處理程序設計
圖像采集模塊利用J-Link仿真編程器將編譯之后的二進制文件燒寫到Flash啟動文件系統,圖像采集系統采用OV2640攝像頭模塊,輸出顯示采用2.4英寸TFT液晶顯示屏。當儲存按鍵按下時,系統接收中斷,同時將從OV2640攝像頭采集到的數據顯示在液晶顯示屏上[1]。首先需要對攝像頭進行初始化,其程序設計如下所示。
LCD_ShowString(30,130,240,16,16,"OV2640 ERR");
LCD_Fill(30,130,239,170,WHITE);
LCD_ShowString(30,130,200,16,16,"OV2640 OK");
OV2640_OutSize_Set(176,144);
OV2640_RGB565_Mode();//RGB565模式
My_DCMI_Init();//DCMI配置
DCMI_DMA_Init((u32)rgb_buf,sizeof(rgb_buf)/4,DMA_MemoryDataSize_HalfWord,DMA_MemoryInc_Enable);//DCMI DMA配置
當對攝像頭配置完成后,需要對攝像頭采集到的數據進行灰度值處理。其程序設計如下所示。
gray=((rgb_buf[i][j]>>11)*19595+((rgb_buf[i][j]>>5)&0x3f)*38469+(rgb_buf[i][j]&0x1f)*7472)>>16;//將RGB轉化成灰度值
if(gray>=23)
{
if(i>8&&i<136&&j<160&&j>16)
{
if(i>X_MAX) X_MAX=i;
if(i if(j>Y_MAX) Y_MAX=j; if(j } LCD->LCD_RAM=WHITE
}
else
LCD->LCD_RAM=BLACK;//對灰度值進行二值化處理
2.2 算法程序設計
本系統控制平板只需要PD算法,在產生中斷后進入控制函數控制舵機的平衡以及控制轉動的幅度。具體程序設計如下。
void balance_a()
{
AKp=300;
AKd=500;
Aim_AX=0;
Aim_AY=0;
Err_AX=AX-Aim_AX;
Err_AY=AY-Aim_AY;
PWM_AX=(Err_AX*AKp+(Err_AX-Err_AX_LAST)*AKd);
PWM_AY=(Err_AY*AKp+(Err_AY-Err_AY_LAST)*AKd);//算法控制
Err_AX_LAST=Err_AX;
Err_AY_LAST=Err_AY;
}
void xianfu()
{
if(PWM_Y>9550)PWM_Y=9550;
if(PWM_Y<9150)PWM_Y=9150;
if(PWM_X>9390)PWM_X=9390;
if(PWM_X<8990)PWM_X=8990;
}
3 結語
本設計是基于STM32F407基礎上的滾球控制系統,由圖像采集與處理模塊、矩陣按鍵模塊、OV2640攝像頭模塊、平板驅動模塊構成,完成了包括系統在內的硬件和軟件測試。通過不斷測試修改參數,最終實現了小球穩定的停在平板中心及四個角落等地點,達到了設計的預期目標。本設計為攝像頭視覺處理以及平衡控制提供了一定的研究價值。
參考文獻
[1]王建,梁振濤,鄭文斌,等.STM32和OV2640的嵌入式圖像采集系統設計[J].單片機與嵌入式系統應用.2014(9):46-48.
[2]Rafael C.Gonzale,Richard E.Woods.‘Digital Image Processing[M], Publishing House of Electronics Industry, BEIJING.2004.
[3]Jong H,Jangsangjin Han.Taeghwan Hyeon,SEUNG M Oh[J].Journal of Power Source, 2003,123:79.
[4]劉歌群,盧京潮,閆建國,等.用單片機產生7路舵機控制PWM波的方法[J].機械與電子,2004,(2):76-78.
[5]朱翔,潘崢嶸.基于OV7620的機器人視覺導航系統設計[J].電子測量技術,2010,3(1):64-66,73.
[6]曾迎生.圖像二值化研究及其改進[J].研究與開發,1990,(1):22-27.
Abstract:This design is a rolling ball control system based on STM32F407 microcontroller .The system is mainly composed of image acquisition and processing module,LCD driver module,matrix keyboard module,power supply regulator module and so on.It's collects image data through OV2640 camera to determine the location of the ball,and combines the PID algorithm to control the steering gear and realize the ball stopping at the target position.In order to facilitate the debugging and retesting,the system adopts the matrix keyboard mode.Through the actual testings of the hardware and software of this system,it can run steadily and reach the expected target.
Key words:STM32F407;OV2640;PIDendprint