趙 燕王江華郭海文
(1.燕京理工學(xué)院,河北 三河 065201;2.華北科技學(xué)院,河北 三河 065201)
基于倒立擺的便捷自動(dòng)控制教學(xué)平臺(tái)的研究與設(shè)計(jì)
趙 燕1王江華2郭海文2
(1.燕京理工學(xué)院,河北 三河 065201;2.華北科技學(xué)院,河北 三河 065201)
設(shè)計(jì)一基于倒立擺的便捷自動(dòng)控制教學(xué)平臺(tái),內(nèi)置三維陀螺儀、加速度計(jì)等傳感器,可實(shí)現(xiàn)平臺(tái)的自主直立控制。平臺(tái)利用STM32單片機(jī)對(duì)陀螺儀的角速度和加速度計(jì)的加速度進(jìn)行實(shí)時(shí)跟蹤,采用卡爾曼濾波算法對(duì)陀螺儀與加速度計(jì)采集回來(lái)的姿態(tài)信號(hào)進(jìn)行校正,從而得到一個(gè)準(zhǔn)確的空間姿態(tài);通過(guò)采集編碼器產(chǎn)生的脈沖來(lái)計(jì)數(shù),形成速度閉環(huán)控制,實(shí)現(xiàn)雙輪自平衡教學(xué)平臺(tái)在任何干擾情況下,均能保持直立平衡狀態(tài)。該教學(xué)平臺(tái)的特點(diǎn)在于體積小巧,攜帶方便,操作簡(jiǎn)單,運(yùn)行可靠,調(diào)整速度快。該平臺(tái)是一個(gè)可隨堂演示的PID控制系統(tǒng),采用現(xiàn)場(chǎng)實(shí)物演示將大大增添課堂趣味性,學(xué)生們學(xué)習(xí)相關(guān)理論知識(shí)時(shí)將會(huì)更加積極主動(dòng),從而提高理論教學(xué)的質(zhì)量。
教學(xué)平臺(tái);STM32單片機(jī);PID控制
基于理論教學(xué)的抽象不靈活性,導(dǎo)致學(xué)生對(duì)理論知識(shí)的不理解,從而失去學(xué)習(xí)的興趣,于是創(chuàng)新性的設(shè)計(jì)出了基于倒立擺的便捷自動(dòng)控制教學(xué)平臺(tái),來(lái)調(diào)節(jié)現(xiàn)存的理論教學(xué)模式,進(jìn)而激發(fā)學(xué)生學(xué)習(xí)的積極性,從而提高理論教學(xué)的質(zhì)量。
平臺(tái)采用基于ARM Cortex-M3內(nèi)核的32位處理器STM32F103C8作為控制核心,其總體結(jié)構(gòu)如圖1所示。采用傳感器MPU-6050來(lái)檢測(cè)陀螺儀的角速度和加速度計(jì)的加速度;按鍵模塊用于菜單的選擇和調(diào)試使用;OLED顯示模塊用來(lái)顯示平臺(tái)的狀態(tài)信息;直流電機(jī)控制模塊采用PWM方式控制兩個(gè)獨(dú)立的直流電機(jī)運(yùn)行;電源模塊提供平臺(tái)工作所需的+5V和+3.3V電壓;脈沖捕捉模塊用于捕捉采集編碼器產(chǎn)生的脈沖,達(dá)到測(cè)速的目的;NRF24L01無(wú)線模塊利用無(wú)線通信方式將數(shù)據(jù)傳輸至上位機(jī)。
圖1 平臺(tái)總體結(jié)構(gòu)圖
平臺(tái)硬件電路包括STM32單片機(jī)主控模塊、電源模塊、傳感器檢測(cè)模塊以及直流電機(jī)控制模塊等。
2.1 STM32單片機(jī)主控模塊
平臺(tái)采用32位單片機(jī)STM32F103C8作為主控核心,該單片機(jī)集高速運(yùn)算與面向直流電機(jī)驅(qū)動(dòng)的高效控制能力于一體,可以用軟件取代模擬器件,方便的修改控制策略和控制參數(shù),兼具故障檢測(cè)、自診斷和上位機(jī)管理與通信功能,內(nèi)置數(shù)模轉(zhuǎn)換器、同步串行外設(shè)接口、異步串口通信接口、PWM控制管理器,其PWM波形產(chǎn)生單元包括可編程死區(qū)控制,可輸出非對(duì)稱PWM波形、對(duì)稱PWM波形和空間矢量SVP-VM波形。
平臺(tái)采用上電復(fù)位和手動(dòng)復(fù)位相結(jié)合的方式來(lái)實(shí)現(xiàn)對(duì)單片機(jī)的復(fù)位。時(shí)鐘電路采用外部時(shí)鐘,晶振頻率為8MHZ。平臺(tái)設(shè)計(jì)有JTAG的程序下載接口,本設(shè)計(jì)程序的開發(fā)主要通過(guò)單片機(jī)內(nèi)部的Bootloader程序完成程序的下載和調(diào)試,因此單片機(jī)最小系統(tǒng)只需要一個(gè)UART便可進(jìn)行,無(wú)需額外的接口調(diào)試器。若用串口下載代碼,則必須配置BOOT0為1、BOOT1為0;而若使STM32一按復(fù)位鍵就開始執(zhí)行代碼程序,則需配置BOOT0為0、BOOT1為任意狀態(tài)即可。[1]
2.2 MPU-6050傳感器模塊
平臺(tái)采用MPU-6050傳感器來(lái)檢測(cè)陀螺儀的角速度和加速度計(jì)的加速度。MPU-6050是一個(gè)9軸運(yùn)動(dòng)處理傳感器,內(nèi)部整合了3軸陀螺儀、3軸加速器,并自帶AD轉(zhuǎn)換,通過(guò)I2C總線方式與單片機(jī)進(jìn)行通信。該傳感器內(nèi)置在一個(gè)芯片中,可以有效地抑制陀螺儀的溫漂問題。
傳感器模塊通過(guò)I2C通信方式輸出相應(yīng)的9軸數(shù)字信號(hào)。I2C是二線接口,包括串行數(shù)據(jù)線SDA和串行時(shí)鐘線SCL。連接到I2C接口的設(shè)備可做主設(shè)備或從設(shè)備。主設(shè)備將Slave地址傳到總線上,從設(shè)備用與其匹配的地址來(lái)識(shí)別主設(shè)備。當(dāng)連接到系統(tǒng)芯片時(shí),MPU-6050總是作為從設(shè)備。SDA和SCL信號(hào)線通常需要接上拉電阻到VCC,最大總線速率為400kHzbps。[2]
2.3 OLED顯示模塊
平臺(tái)采用OLED顯示屏來(lái)顯示一些狀態(tài)信息,此顯示屏的分辨率為128×64。OLED顯示參數(shù)設(shè)置界面如圖2所示,angle_mid為平衡角度的中心角度值,P_angle為角度PID算法的比例參數(shù)設(shè)置,D_angle為角度PID算法的微分參數(shù)設(shè)置,P_Speed為速度PID算法的比例參數(shù)設(shè)置,I_Speed為速度PID算法的積分參數(shù)設(shè)置,D_Speed為速度PID算法的微分參數(shù)設(shè)置,speed_set為運(yùn)動(dòng)速度的初值。
圖2 OLED參數(shù)設(shè)置界面
2.4 NRF24L01無(wú)線模塊
設(shè)計(jì)中采用的無(wú)線模塊為NRF24L01,一方面,利用無(wú)線進(jìn)行數(shù)據(jù)傳輸,可以避免有線傳輸線對(duì)教學(xué)平臺(tái)調(diào)試的制約,通過(guò)這種方式可以遠(yuǎn)離上位機(jī)調(diào)試,并且下位機(jī)參數(shù)數(shù)據(jù)實(shí)時(shí)上傳,不會(huì)有距離的限制。另一方面,利用NRF24L01制作無(wú)線遙控器,通過(guò)遙控器對(duì)教學(xué)平臺(tái)中的參數(shù)進(jìn)行修改,便于現(xiàn)場(chǎng)問題的處理,方便調(diào)試。
3.1 平臺(tái)程序設(shè)計(jì)
平臺(tái)由主程序和中斷程序兩部分程序構(gòu)成。主程序流程圖如圖3所示,在主程序中先進(jìn)行倍頻、GPIO、OLED、PWM以及定時(shí)器等各個(gè)模塊的初始化,然后使能總中斷。這樣可以為各個(gè)模塊配置好寄存器信息,給中斷要處理的信息提供保障。同時(shí)等中斷處理完信息又能確保中斷處理后的信息實(shí)時(shí)顯示在OLED上。方便程序的調(diào)試和效果的顯示。
中斷處理流程圖如圖4所示,利用定時(shí)器1ms中斷,在中斷中完成信號(hào)的采集和處理。采集MPU-6050輸出的陀螺儀、加速度計(jì)的數(shù)據(jù)值,然后將采集數(shù)據(jù)進(jìn)行中值濾波,將中值濾波后的數(shù)據(jù)再進(jìn)行10次的均值濾波。這樣可以保證濾去雜波和不正確的值,得到的數(shù)據(jù)比較平滑。將得到的值與中心值進(jìn)行比較得到變化值,再將變化的信號(hào)值轉(zhuǎn)化成變化的角度值。將得到處理后的陀螺儀變化的角度值和加速度變化的角度值進(jìn)行卡爾曼濾波,得到的角度與設(shè)定好的角度比較并用PID算法計(jì)算。再通過(guò)STM32的脈沖捕捉功能,分別捕捉兩路脈沖并計(jì)數(shù),將此數(shù)值與程序中設(shè)定好的數(shù)值比較并用PID算法計(jì)算。最后將角度PID值和速度PID值疊加,再調(diào)節(jié)PWM的占空比。[3]
圖3 平臺(tái)主程序流程圖
圖4 平臺(tái)中斷程序流程圖
3.2 單片機(jī)各模塊初始化
3.2.1 系統(tǒng)時(shí)鐘初始化
該函數(shù)的主要功能是初始化STM32的時(shí)鐘。其中包括對(duì)向量表的配置,以及相關(guān)外設(shè)的復(fù)位及配置。Stm32_Clock_Init函數(shù)只有一個(gè)變量PLL,用來(lái)配置時(shí)鐘的倍頻系數(shù)。比如當(dāng)前所用的晶振為8MHz,PLL的值設(shè)為9,那么STM32將以72MHz的速度運(yùn)行。系統(tǒng)時(shí)鐘初始化程序如下:
void Stm32_Clock_Init(u8 PLL)
{
unsigned char temp=0;
MYRCC_DeInit(); //復(fù)位并配置向量表
RCC->CR|=0x00010000; //外部高速時(shí)鐘使能HSEON
while(!(RCC->CR>>17)); //等待外部時(shí)鐘就緒
RCC->CFGR=0X00000400;
//APB1=DIV2;APB2=DIV1;AHB=DIV1;
PLL - =2; //抵消2個(gè)單位
RCC->CFGR|=PLL<<18; //設(shè)置PLL值 2~16
RCC->CFGR|=1<<16; //PLLSRC ON
FLASH->ACR|=0x32; //FLASH 2個(gè)延時(shí)周期
RCC->CR|=0x01000000; //PLLON
while(!(RCC->CR>>25)); //等待PLL鎖定
RCC->CFGR|=0x00000002; //PLL作為系統(tǒng)時(shí)鐘
while(temp!=0x02) //等待PLL作為系統(tǒng)時(shí)鐘設(shè)置成功
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
}
3.2.2 I/O口模塊初始化
STM32F103C8的I/O口可以配置成輸入模式、輸出模式或復(fù)用模式。如果把端口配置成輸出模式,有3種輸出速度可選,即2MHz、10MHz和50MHz,這個(gè)速度是指I/O口驅(qū)動(dòng)電路的響應(yīng)速度而不是輸出信號(hào)的速度,輸出信號(hào)的速度與程序有關(guān)。通過(guò)選擇速度來(lái)選擇不同的輸出驅(qū)動(dòng)模塊,達(dá)到最佳的噪聲控制和降低功耗的目的。高頻的驅(qū)動(dòng)電路,噪聲也高,當(dāng)不需要高的輸出頻率時(shí),請(qǐng)選用低頻驅(qū)動(dòng)電路,這樣非常有利于提高系統(tǒng)的EMI性能。如果要輸出較高頻率的信號(hào),但卻選用了較低頻率的驅(qū)動(dòng)模塊,很可能會(huì)得到失真的輸出信號(hào)。如果把端口配置成輸入模式,無(wú)需設(shè)置輸出速度即可。如果把端口配置成復(fù)用輸出模式,則引腳和輸出寄存器斷開,并和片上外設(shè)的輸出信號(hào)連接。將管腳配置成復(fù)用輸出功能后,如果外設(shè)沒有被激活,那么它的輸出將不確定。
3.2.3 PWM模塊初始化
先對(duì)APB1ENR進(jìn)行設(shè)置,開啟TIM2的時(shí)鐘,配置PA0、PA1為復(fù)用輸出,因?yàn)門IM2_CH2、TIM2_CH3通道是以I/O復(fù)用的形式連接到PA0、PA1上的,故使用其復(fù)用輸出功能。在開啟了TIM2的時(shí)鐘之后,要設(shè)置ARR和PSC兩個(gè)寄存器的值來(lái)控制輸出PWM的周期。PWM周期在這里不宜設(shè)置的太小,否則會(huì)有明顯的閃爍現(xiàn)象。之后設(shè)置TIM2_CH2、TIM2_CH3的PWM模式,使能TIM2的CH2、CH3輸出。在完成以上設(shè)置了之后,需要開啟TIM2的通道2輸出以及TIM2中斷。前者通過(guò)TIM2_CCER1來(lái)設(shè)置,是單個(gè)通道的開關(guān), 而后者則通過(guò)TIM2_CR1來(lái)設(shè)置,是整個(gè)TIM2的總開關(guān)。只有設(shè)置了這兩個(gè)寄存器,在TIM2的通道2、3上才能輸出PWM波,此時(shí)輸出的PWM波的占空比和頻率都是固定的,通過(guò)修改TIM2_CCR2、TIM2_CCR3則可以控制CH2、CH3的輸出占空比,繼而控制舵機(jī)的輸出角度。
圖5 平臺(tái)實(shí)物圖
平臺(tái)實(shí)物如圖5所示。本教學(xué)平臺(tái)體積小巧,攜帶方便,操作簡(jiǎn)單,運(yùn)行可靠,調(diào)整速度快,可應(yīng)用于PID控制相關(guān)課程的理論教學(xué),采用現(xiàn)場(chǎng)實(shí)物演示將大大增添課堂趣味性,學(xué)生們學(xué)習(xí)相關(guān)理論知識(shí)時(shí)將會(huì)更加積極主動(dòng),從而提高理論教學(xué)的質(zhì)量。
[1] 陳春,朱向冰,朱騫,等.基于STM32單片機(jī)的DLP驅(qū)動(dòng)電路的研究[J].電子設(shè)計(jì)工程,2012,20(2):126-128.
[2] 李航.小型四旋翼飛行器實(shí)時(shí)控制系統(tǒng)研究[D].大連:大連理工大學(xué),2010.
[3] 劉金琨.智能控制[M].北京:電子工業(yè)出版社,2009:124-125.
Research and design of convenient automatic control teaching platform based inverted pendulum
To design a teaching platform of the convenient automatic control based on the inverted pendulum , built-in 3 d gyroscope and accelerometer sensors, can realize autonomous vertical control. Platform uses STM32 MCU to track the accelerometer gyroscope of angular velocity and acceleration. Using Calman filtering algorithm for correcting the posture signal, the signal is collected by the gyroscope and accelerometer, to get an accurate space posture. By collecting generated pulse encoder counts, forming a closed loop speed control. Realization of two-wheeled self-balancing teaching platform in any interference, can maintain upright balance. Features of the teaching platform is compact, easy to carry, easy to operate, reliable, fast adjustment. The platform is a quiz presentation PID control system. Using live demonstrations will greatly increase the physical classroom fun. Students will learn the theory of knowledge when more proactive, thereby improving the quality of teaching theory.
Teaching platform; STM32 MCU; PID control
TP273
A
1008-1151(2015)01-0015-03
2014-12-12
廊坊市科學(xué)技術(shù)研究與發(fā)展計(jì)劃自籌經(jīng)費(fèi)項(xiàng)目“基于倒立擺的便捷自動(dòng)控制教學(xué)平臺(tái)的研究與設(shè)計(jì)”(2014011033)。
趙燕(1982-),女,燕京理工學(xué)院講師,從事理論及實(shí)驗(yàn)教學(xué)和科研工作。