本發(fā)明專利涉及機械設(shè)計技術(shù)領(lǐng)域,尤其涉及一種基于自由擺的平板控制系統(tǒng)。
背景技術(shù):
傳統(tǒng)的角隨動實驗系統(tǒng)采用自整角機與力矩電機配合模擬電路實現(xiàn)角度控制,自整角機和模擬電路本身的非線性特性使得角隨動控制精度大打折扣,不適合經(jīng)典控制理論實驗課程的開展。
發(fā)明專利內(nèi)容
本發(fā)明專利涉及一種基于自由擺的平板控制系統(tǒng),本發(fā)明以單片機為控制核心,采用增量旋轉(zhuǎn)編碼器實時采集自由擺旋轉(zhuǎn)角度及方向,通過步進電機開環(huán)控制平板旋轉(zhuǎn)角度,以實現(xiàn)控制要求。
附圖說明
圖1:系統(tǒng)組成框圖。
圖2:系統(tǒng)總體框圖。
圖3:主程序流程圖。
圖4:模式一程序流程圖。
圖5:模式二角度測量中斷服務(wù)程序流程圖。
圖6:模式二程序流程圖。
圖7:模式三的程序流程圖。
具體實施方式
為了使本發(fā)明專利的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明專利進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明專利,并不用于限定本發(fā)明專利。
本發(fā)明專利涉及一種基于自由擺的平板控制系統(tǒng),本發(fā)明以單片機為控制核心,采用增量旋轉(zhuǎn)編碼器實時采集自由擺旋轉(zhuǎn)角度及方向,通過步進電機開環(huán)控制平板旋轉(zhuǎn)角度,以實現(xiàn)控制要求。
進一步的,本發(fā)明的基本要求是保持平板上硬幣的平衡滑動小或滑落少,進一步的要求是讓平板上激光筆射在靶紙上的光斑偏移量盡可能小。
進一步的,本發(fā)明采用以單片機為核心的自由擺控制系統(tǒng)主要由單片機控制模塊、角度測量獲取模塊、平板平衡控制模塊、電機驅(qū)動模塊和角度值顯示模塊組成,系統(tǒng)框圖如圖1所示。
進一步的,本發(fā)明選用stc89c51單片機作為控制核心,它具有8k字節(jié)flash,256字節(jié)ram,32位i/o口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。
進一步,本發(fā)明采用單片機最小系統(tǒng)。單片機最小系統(tǒng)包含了顯示、矩陣鍵盤、a/d、d/a等模塊,能明顯減少外圍電路的設(shè)計,降低系統(tǒng)設(shè)計的難度。
進一步,本發(fā)明采用增量式光電旋轉(zhuǎn)編碼器,光電編碼器是一種角度(角速度)檢測裝置,它將輸入給軸的角度量,利用光電轉(zhuǎn)換原理轉(zhuǎn)換成相應(yīng)的電脈沖。旋轉(zhuǎn)編碼器具有體積小,精度高,工作可靠,接口數(shù)字化等優(yōu)點。此外旋轉(zhuǎn)編碼器安裝較為方便,接口電路較為簡單,能夠減少系統(tǒng)硬件電路的工作量。
進一步,本發(fā)明選定的步進電機型號為42byg250-48。該電機為兩相步進電機,它的步距角僅為1.8°扭矩為0.50n/m,有較高的空載啟動頻率,在十六細分后能實現(xiàn)0.225°的步距角能夠滿足本系統(tǒng)的控制要求。
進一步,本發(fā)明的系統(tǒng)總體框圖如圖2所示。
進一步的,本發(fā)明的主程序根據(jù)不同的要求設(shè)定不同的控制模式,在各個模式間切換。根據(jù)設(shè)計要求,我們把程序歸為幾個模式,由按鍵切換模式。具體分配如下:
(1)模式一對應(yīng)為基本要求一,即平板跟隨自由擺旋轉(zhuǎn)一周誤差不超過45°;
(2)模式二對應(yīng)為基本要求二和基本要求三,即保持硬幣在平板上的平衡,不讓硬幣掉落;
(3)模式三對應(yīng)發(fā)揮部分一和發(fā)揮部分二,對激光筆入射位置的調(diào)整以及保持激光筆入射位置的固定與平衡。
進一步,本發(fā)明的主程序流程如圖3所示,主程序由兩個按鍵控制三個模式的選擇。當系統(tǒng)啟動時,s1按下選擇模式一,s2按下選擇模式二;若s1和s2都未按下,那么執(zhí)行模式三。
進一步的,本發(fā)明的模式一程序流程如圖4所示。因為自由擺的周期是固定的,計算為2s一個周期,所以需要控制電機轉(zhuǎn)動在2s內(nèi)旋轉(zhuǎn)360。采用定時器定時,在十六細分下,發(fā)每個脈沖的周期為625us。定時器定時即為625us。3200脈沖電機旋轉(zhuǎn)一周,此時,每旋轉(zhuǎn)一周,記錄旋轉(zhuǎn)周數(shù)的變量加一,到五周后,程序執(zhí)行結(jié)束。
進一步的,本發(fā)明的模式二的角度測量中斷服務(wù)判斷程序如圖5所示。進入中斷程序后,需要確定的是左右側(cè)的方向標志。設(shè)定兩個定時器分別為t1和t2。t1為左側(cè)的計數(shù)器,t2為右側(cè)的計數(shù)器。判斷當t2大于零而且t1等于零時,表明平板往右擺,置右擺標志位為一。判斷當t1大于零而且t2等于零時,表明平板往左擺,置左擺標志位為一。對應(yīng)的計數(shù)器加一后,開始查表,找到對應(yīng)的電機脈沖數(shù),送給電機,從而控制電機轉(zhuǎn)動。
進一步,本發(fā)明選擇模式二后,擺桿緩慢拉到一定的角度,同時單片機獲得旋轉(zhuǎn)編碼器所送來的脈沖并記錄下來,拉到一定角度后擺桿停止,此時,單片機就獲得了最后的角度值。按鍵開始后,單片機根據(jù)獲取的角度值,換算為電機的轉(zhuǎn)動脈沖數(shù),發(fā)給電機,電機立即開始轉(zhuǎn)動,保持平板對擺桿的垂直。最后,電機鎖定,避免電機的抖動。此時程序執(zhí)行結(jié)束。模式二的程序流程如圖6所示。
進一步的,與模式二的中斷服務(wù)程序相同,對左右側(cè)判斷是一樣的方法。相對于模式三的特殊性,在獲取角度之后,換算為電機的脈沖數(shù),還應(yīng)該計算此次的脈沖數(shù)與前一次的脈沖數(shù)的差值,也就是計算出脈沖數(shù)的增量值,是電機轉(zhuǎn)動的是一具增量變化的,這樣就能達到電機的轉(zhuǎn)動是跟隨角度脈沖變化的快慢以及大小而跟這變化。達到最終的實時控制,保持激光筆在靶紙上光斑的位置恒定。
進一步,本發(fā)明選擇模式三后,擺桿開始拉動擺桿,單片機內(nèi)部立即根據(jù)旋轉(zhuǎn)編碼器的a通道和b通道的脈沖相位關(guān)系,判斷出平板擺動位置在中心線的左右側(cè)。判定之后,θ3(反轉(zhuǎn)標志位)的值或θ4(正轉(zhuǎn)標志位)的值對應(yīng)增加,記錄下旋轉(zhuǎn)編碼器的脈沖數(shù)。再通過計算,轉(zhuǎn)換為電機的轉(zhuǎn)動脈沖數(shù)。如果開始按鍵s3按下,那么所計算的電機旋轉(zhuǎn)脈沖發(fā)給電機,電機立即轉(zhuǎn)動對應(yīng)地調(diào)整平板位置,使激光筆找著最初入射靶紙上的位置或者是保持靶紙上激光筆的光斑入位置盡可能保持不變。模式三的程序流程圖,如圖7所示。
進一步的,本發(fā)明的重要源程序代碼如下:
(1)判斷正反轉(zhuǎn)程序
voidint0_fun()interrupt0
{
if(e6b2c_b==1)//若為右擺
{
int0_flag_l=0;//左擺計數(shù)值清零
int0_flag_r++;//右擺計數(shù)
flag_r==1;
flag_l==0;
}
if(e6b2c_b==0)//若為左擺
{
int0_flag_r=0;//右擺計數(shù)值清零
int0_flag_l++;//左擺計數(shù)
flag_r==0;
flag_l==1;
}
}
(2)電機正反轉(zhuǎn)程序
voidmotor_ni(uintb)
{
unsignedchari,j;
j=0;
for(i=0;i<16*b;i++)
{
motor&=0xf0;
motor|=ffw[j];
j++;
if(j>=8)j=0;
delay(2);
}
delay(200);
}
voidmotor_shun(uinta)
{
unsignedchari,j;
j=0;
for(i=0;i<16*a;i++)
{
motor&=0xf0;
motor|=ffz[j];
j++;
if(j>=8)j=0;
delay(2);
}
delay(200);
}
(3)擺角測量程序
voidangle_count()
{
angle_r=int0_flag_r*0.36;
angle_l=int0_flag_l*0.36;
if(angle_r>0)
{
angle_l=0;
angle=angle_r;
}
elseif(angle_l>0)
{
angle_r=0;
angle=angle_l;
}
}
以上所述僅為本發(fā)明專利的較佳實施例而已,并不用以限制本發(fā)明專利,凡在本發(fā)明專利的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明專利的保護范圍之內(nèi)。