《單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計》課件第09章_第1頁
《單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計》課件第09章_第2頁
《單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計》課件第09章_第3頁
《單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計》課件第09章_第4頁
《單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計》課件第09章_第5頁
已閱讀5頁,還剩137頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

9.1基于AT89C52控制的磁懸浮球演示系統(tǒng)9.2基于PIC16C54的光柵式定位系統(tǒng)9.3基于LPC2212的三關(guān)節(jié)機(jī)器人控制系統(tǒng)

第9章單片機(jī)應(yīng)用系統(tǒng)設(shè)計實例9.1.1組成及工作原理9.1.2電路設(shè)計9.1.3程序設(shè)計9.1基于AT89C52控制的磁懸浮球演示系統(tǒng)9.1基于AT89C52控制的磁懸浮球演示系統(tǒng)

磁懸浮球演示系統(tǒng)是一個典型的嵌入式數(shù)字控制系統(tǒng),由電磁鐵、鐵磁性小球及控制部分組成,其電磁鐵通電后產(chǎn)生磁場,吸引鐵磁性小球,動態(tài)調(diào)節(jié)電磁鐵中的電流,可使其產(chǎn)生的電磁吸力等于小球的重量,從而使小球懸浮在空中保持不動。這個動態(tài)調(diào)節(jié)的過程稱為磁懸浮控制。本例進(jìn)行磁懸浮球演示系統(tǒng)的設(shè)計,首先介紹系統(tǒng)組成以及磁懸浮控制的基本原理,然后詳細(xì)介紹以AT89C52單片機(jī)為核心的電路設(shè)計和程序設(shè)計,最后給出完整的匯編語言程序清單供讀者參考。該磁懸浮球演示系統(tǒng)的結(jié)構(gòu)見下圖。9.1基于AT89C52控制的磁懸浮球演示系統(tǒng)磁懸浮球演示系統(tǒng)的照片9.1.1磁懸浮球演示系統(tǒng)的組成與工作原理

磁懸浮球演示系統(tǒng)主要由電磁鐵、鐵磁性小球、間隙傳感器、單片機(jī)控制器及功率放大器組成。電磁鐵安裝在懸浮支架頂部,通電后對小球產(chǎn)生豎直向上的電磁吸力。間隙傳感器安裝在懸浮支架底部,它是一種基于渦流檢測原理的非接觸測量器件,能將小球與傳感器探頭表面之間的距離轉(zhuǎn)換為電壓信號,再經(jīng)過A/D轉(zhuǎn)換成數(shù)字信號。單片機(jī)控制器根據(jù)輸入的間隙傳感器信號,按照特定的控制算法,比如PID算法,計算出維持小球穩(wěn)定懸浮所需的控制電流。該控制電流以PWM信號的形式傳遞給功率放大器。功率放大器對控制電流進(jìn)行功率放大,給電磁鐵提供對應(yīng)大小的電流。這是一個閉環(huán)控制的過程,如果控制適當(dāng),就可使小球穩(wěn)定地懸浮在期望位置。9.1.1組成及工作原理:系統(tǒng)組成磁懸浮球演示系統(tǒng)的組成9.1.1組成及工作原理:懸浮控制原理

根據(jù)牛頓第二定律,在豎直方向上,小球的動力學(xué)方程為:

根據(jù)電磁學(xué)理論可知,系統(tǒng)的電力學(xué)方程近似為:

其中為小球質(zhì)量,為懸浮間隙,為重力加速度,為電磁吸力,電磁鐵的平均電流,是與系統(tǒng)結(jié)構(gòu)有關(guān)的參數(shù)。

9.1.1組成及工作原理:懸浮控制原理

設(shè)額定懸浮間隙為,額定電磁鐵平均電流為,將上述模型在線性化后,可得到系統(tǒng)的傳遞函數(shù)為:其中,,,,,為拉普拉斯算子。

根據(jù)控制理論的穩(wěn)定性條件進(jìn)行分析,該系統(tǒng)不穩(wěn)定,必須通過適當(dāng)?shù)拈]環(huán)控制才能使之達(dá)到穩(wěn)定。9.1.1組成及工作原理:懸浮控制原理

常用的控制方法是比例-積分-微分控制,簡稱PID控制,其表達(dá)式為:

其中為控制電壓,為電磁鐵線圈的電阻,簡單起見,忽略線圈電感。其中、和分別是比例、微分和積分系數(shù),又稱為控制器參數(shù),選取得當(dāng)即可實現(xiàn)小球的穩(wěn)定懸浮。通常,這些參數(shù)應(yīng)在編程之前計算出來,而在編寫程序時,它們都是常數(shù)。9.1.2磁懸浮球演示系統(tǒng)的電路設(shè)計

磁懸浮球演示系統(tǒng)的電路由單片機(jī)控制電路、A/D轉(zhuǎn)換器及功率放大電路等三部分組成。其單片機(jī)控制電路和A/D轉(zhuǎn)換器電路如下圖所示。9.1.2磁懸浮球演示系統(tǒng)的電路設(shè)計AT89C52與ADC0809的接口電路設(shè)計

控制電路基于AT89C52單片機(jī)設(shè)計,包括單片機(jī)基本電路和控制器參數(shù)在線選擇電路兩個部分。

(1)單片機(jī)基本電路單片機(jī)基本電路包括AT89C52單片機(jī)、時鐘電路、復(fù)位電路以及單片機(jī)電源等。時鐘電路由16MHz晶體振蕩器和20pF電容組成,復(fù)位電路采用集成看門狗芯片MA813L實現(xiàn),單片機(jī)的工作電源由LM7805產(chǎn)生。9.1.2電路設(shè)計:控制電路(2)控制器參數(shù)在線選擇電路為便于在線調(diào)試,可將事先設(shè)計好的多組PID控制參數(shù)存儲在單片機(jī)的片上程序存儲器中,通過撥動撥碼開關(guān)來選擇不同的參數(shù)。為此,在單片機(jī)的P1口上,擴(kuò)展了8位撥碼開關(guān)。工作時,單片機(jī)不斷讀取P1口的狀態(tài)數(shù)據(jù),并據(jù)此查表以獲得對應(yīng)的控制器參數(shù)。9.1.2電路設(shè)計:控制電路

接口電路實現(xiàn)AT89C52和ADC0809之間的連接。

(1)A/D轉(zhuǎn)換器

A/D轉(zhuǎn)換器的功能是將模擬的電壓信號轉(zhuǎn)換成數(shù)字量。控制系統(tǒng)對A/D轉(zhuǎn)換器的轉(zhuǎn)換速度和轉(zhuǎn)換精度有要求。在轉(zhuǎn)換速度方面,一般要求在1個控制周期內(nèi)至少完成一輪采樣,本系統(tǒng)的控制周期為1ms,考慮到控制算法的時間開銷,要求ADC的轉(zhuǎn)換速度不小于10kSPS;在轉(zhuǎn)換精度方面,雖然高精度對控制有利,但是這會增加成本和算法復(fù)雜性,因此應(yīng)本著夠用原則進(jìn)行選型。本系統(tǒng)采用最常用的ADC0809,它是8通道8位逐次逼近型ADC,最大轉(zhuǎn)換速率為10kSPS,輸入電壓范圍0~+5V。9.1.2電路設(shè)計:接口電路(2)A/D轉(zhuǎn)換器與單片機(jī)的接口關(guān)系

AT89C52通過與ADC0809的接口電路來控制A/D轉(zhuǎn)換器的啟動并讀取轉(zhuǎn)換結(jié)果。該接口電路主要包括數(shù)據(jù)總線和控制總線接口,其中數(shù)據(jù)總線有8位,將ADC0809的D0~D7管腳與AT89C52的P0.0~P0.7口對應(yīng)相接即可;控制總線包括A/D轉(zhuǎn)換器的片選線、數(shù)據(jù)輸出使能線、啟動信號及轉(zhuǎn)換結(jié)束信號。此外,ADC0809的工作時鐘由單片機(jī)的ALE腳提供。9.1.2電路設(shè)計:接口電路(3)啟動A/D轉(zhuǎn)換及讀取轉(zhuǎn)換結(jié)果由電路連接圖可知,單片機(jī)的#CS(P2.7口)、#WR、#RD與A/D轉(zhuǎn)換器的控制總線START、ENABLE的邏輯關(guān)系為:

START=/(#CS+#WR)

ENABLE=/(#CS+#RD)不妨取ADC0809的片選地址為0x7FFF,這樣,當(dāng)單片機(jī)向0x7FFF地址進(jìn)行一次寫操作時(寫的內(nèi)容不限),即啟動一次A/D轉(zhuǎn)換。當(dāng)單片機(jī)向0x7FFF地址進(jìn)行一次讀操作時,就可以從數(shù)據(jù)總線讀取8位A/D轉(zhuǎn)換結(jié)果。9.1.2電路設(shè)計:接口電路PWM功放電路通過控制電磁鐵線圈的電流來調(diào)整電磁鐵對小球的吸力。本系統(tǒng)采用單管PWM功放電路,并選用MOSFET作為主功率管,它具有電路簡單、效率高等優(yōu)點。PWM型功率放大器的關(guān)鍵是驅(qū)動與吸收保護(hù)電路設(shè)計,其中驅(qū)動電路要確保主功率管能夠快速而可靠地導(dǎo)通或關(guān)斷,吸收保護(hù)電路的功能是吸收功率管開關(guān)瞬時的能量。驅(qū)動與吸收保護(hù)電路的電路見下圖所示。9.1.2電路設(shè)計:驅(qū)動與吸收保護(hù)電路9.1.2電路設(shè)計:驅(qū)動與吸收保護(hù)電路PWM驅(qū)動與保護(hù)電路(1)驅(qū)動電路驅(qū)動電路中,驅(qū)動電壓過小,功率管無法導(dǎo)通或?qū)ú怀浞?;?qū)動電壓過大,功率管的GS極容易被擊穿。柵極電阻過小,柵極的沖擊電流大,容易損壞功率管;柵極電阻過大,功率管的開關(guān)速度慢且開關(guān)損耗大。因此,功率管的驅(qū)動電壓和柵極電阻的選擇至關(guān)重要。本設(shè)計采用基于TLP250的集成驅(qū)動電路。TLP250的內(nèi)置光耦的隔離電壓達(dá)2500V,上升和下降時間均小于0.5us,輸出電流為0.5A,可直接驅(qū)動1200V/50A以內(nèi)的IGBT或MOSFET。上圖中R11和D2組成電壓偏置電路,使得MOSFET的源極電位約等于0.7V。注意到,TLP250采用單+15V供電,因此功率管GS極上導(dǎo)通電壓14.3V,關(guān)斷電壓為-0.7V。關(guān)斷負(fù)壓的設(shè)計可以使得功率管可靠地截止。此外,柵極驅(qū)動電阻取為20Ω。9.1.2電路設(shè)計:驅(qū)動與吸收保護(hù)電路(1)續(xù)流和吸收保護(hù)電路

電磁鐵是感性元件,為此應(yīng)使用快恢型二極管D1為電感L提供續(xù)流回路,以防止MOSFET關(guān)斷時漏極電位急劇上升而損壞功率管。圖中,R、C、D組成的吸收網(wǎng)絡(luò)能夠吸收MOSFET在開關(guān)時刻的電壓和電流尖峰。其中,C用于限制MOSFET的漏極-源極間電壓突變,R用于限制MOSFET開通時C的放電電流,D則便于在MOSFET關(guān)斷時,C能迅速吸收MOSFET上的關(guān)斷尖峰。9.1.2電路設(shè)計:驅(qū)動與吸收保護(hù)電路1.控制程序總體設(shè)計(1)程序總體結(jié)構(gòu)單片機(jī)上電后,首先執(zhí)行初始化程序,然后啟動定時器并進(jìn)入主循環(huán),等待定時中斷。在主循環(huán)內(nèi),單片機(jī)反復(fù)從P1口讀取用戶指令,修改控制器參數(shù)Ka、Kv、Kp和Ki。本系統(tǒng)使用AT89C52的所有3個定時中斷。其中,T0和T1中斷配合產(chǎn)生一路PWM信號;而T2則用于產(chǎn)生控制中斷,并在T2中斷服務(wù)程序中執(zhí)行懸浮控制算法,主程序和T2中斷服務(wù)程序的流程見下圖所示。9.1.3磁懸浮球演示系統(tǒng)的控制程序設(shè)計9.1.3控制程序:總體設(shè)計主程序流程T2中斷服務(wù)程序流程(2)程序用變量說明9.1.3控制程序:總體設(shè)計參數(shù)名稱含義OLD_P上次采樣的間隙信號OLD_V上次速度信號的絕對值OLD_A上次加速度信號的絕對值OLD_I上次積分信號的絕對值NEW_P本次采樣的間隙信號NEW_V本次速度信號的絕對值NEW_A本次加速度信號的絕對值NEW_I本次積分信號的絕對值GAIN_P間隙誤差增益的小數(shù)部分,記為Kp(2)程序用變量說明(續(xù))9.1.3控制程序:總體設(shè)計參數(shù)名稱含義OLD_P上次采樣的間隙信號OLD_V上次速度信號的絕對值OLD_A上次加速度信號的絕對值OLD_I上次積分信號的絕對值NEW_P本次采樣的間隙信號NEW_V本次速度信號的絕對值NEW_A本次加速度信號的絕對值NEW_I本次積分信號的絕對值GAIN_P間隙誤差增益的小數(shù)部分,記為Kp9.1.3控制程序:功能模塊設(shè)計

磁懸浮球演示系統(tǒng)的控制程序采用模塊化設(shè)計,包括:初始化模塊、A/D采樣模塊、PID參數(shù)選擇模塊、PID算法模塊,以及PWM信號產(chǎn)生模塊。其中,初始化模塊和PID參數(shù)選擇模塊在主程序中執(zhí)行,A/D采樣模塊和PID算法模塊在T2定時中斷服務(wù)程序中執(zhí)行,PWM信號產(chǎn)生模塊在T0和T1中斷服務(wù)程序中執(zhí)行。這些模塊的邏輯關(guān)系見下圖所示。9.1.3控制程序:功能模塊設(shè)計懸浮控制程序功能模塊的邏輯關(guān)系圖9.1.3控制程序:功能模塊設(shè)計(1)初始化模塊初始化模塊包括堆棧及中斷初始化、定時器初始化以及變量初始化。在堆棧及中斷初始化中,關(guān)鍵是對中斷控制字的配置,包括:

MOVSP,#7FHMOVIE,#00101010BMOVIP,#00001010B

本例將單片機(jī)內(nèi)部數(shù)據(jù)存儲器的80H~0FFH單元作為堆棧,因此,堆棧指針被初始化為7FH。對IE的配置表示允許T0、T1、T2中斷。對IP的配置表示定義T0、T1為高優(yōu)先級中斷,T2為低優(yōu)先級中斷。9.1.3控制程序:功能模塊設(shè)計

程序共使用三個定時器。其中,T0和T1配合產(chǎn)生一路PWM波,T0決定PWM波的頻率,設(shè)計值為20KHz,T1決定PWM波的占空比;T2用于產(chǎn)生定時中斷,并決定控制周期,設(shè)計值為1ms。已知單片機(jī)外部晶振頻率為16MHz,根據(jù)第4章介紹的定時器配置方法可得:T0工作在8位自動重裝方式,定時周期寄存器初值為0C0H,對應(yīng)的定時周期為48

s,因此實際產(chǎn)生的PWM波頻率為20.833KHz;T1也工作在8位自動重裝方式,其定時周期寄存器值在每個控制周期被更新為控制輸出量,初始值為0FFH;T2工作在16位自動重裝方式,定時周期寄存器初值為0FACBH,對應(yīng)定時周期為999.75

s,因此實際采樣頻率約為1KHz。9.1.3控制程序:功能模塊設(shè)計(2)PID參數(shù)選擇模塊

本例事先準(zhǔn)備了多組PID參數(shù),存儲在單片機(jī)的片上程序存儲器中,通過撥動擴(kuò)展在P1口上的撥碼開關(guān),可以選擇不同的參數(shù)。其中,P1.1和P1.0對應(yīng)比例增益參數(shù);P1.3和P1.2選擇速度增益參數(shù);P1.5和P1.4選擇加速度增益參數(shù);P1.7和P1.6選擇積分增益參數(shù);每種參數(shù)根據(jù)不同組合,分別有4個選擇。9.1.3控制程序:功能模塊設(shè)計PID參數(shù)選擇模塊的具體實現(xiàn)方法是,在程序中通過讀取P1口狀態(tài),得到用戶指令碼,并以此為偏移地址到相應(yīng)的控制參數(shù)表中查找,就能得到用戶期望的參數(shù)。例如,選取比例增益系數(shù)的程序為:

MOVA,P1 ;根據(jù)P1最低2位的狀態(tài),從GAIN_P的

ANLA,#03H;增益表中選取相應(yīng)的數(shù)據(jù)

MOVDPTR,#TB_GPMOVCA,@A+DPTRMOVGAIN_P,A9.1.3控制程序:功能模塊設(shè)計(3)A/D采樣模塊

A/D采樣模塊的主要功能是啟動A/D轉(zhuǎn)換和讀取A/D轉(zhuǎn)換結(jié)果。常用的讀取A/D結(jié)果的方法有中斷法和查詢法。本系統(tǒng)采用了一種更為簡單、高效、可靠的方法。具體是,在每個控制周期中,首先讀取上一次A/D轉(zhuǎn)換的結(jié)果,然后立即啟動本次A/D轉(zhuǎn)換。由于控制周期總大于A/D轉(zhuǎn)換時間,因此在下個控制周期來臨時,A/D轉(zhuǎn)換已經(jīng)結(jié)束,又可以直接讀取結(jié)果。該方法既不占用單片機(jī)的外部中斷,也不會因查詢等待而耗費CPU時間,而且程序不會發(fā)生中斷嵌套或死循環(huán)。即使A/D轉(zhuǎn)換偶爾發(fā)生故障,只要以后能重新開始轉(zhuǎn)換,系統(tǒng)也能繼續(xù)工作下去,故系統(tǒng)的可用性較高。9.1.3控制程序:功能模塊設(shè)計

前面指出,當(dāng)單片機(jī)向0x7FFF地址進(jìn)行一次寫操作時,就能啟動一次A/D轉(zhuǎn)換,當(dāng)單片機(jī)從0x7FFF地址讀取數(shù)據(jù)時,讀到的是8位的A/D轉(zhuǎn)換結(jié)果。因此,啟動轉(zhuǎn)換的程序為:

MOV DPH,#7FH MOVX @DPTR,A

讀取A/D轉(zhuǎn)換結(jié)果的程序為:

MOV DPH,#7FHMOVX A,@DPTR9.1.3控制程序:功能模塊設(shè)計(4)PID算法模塊

前面已經(jīng)指出,磁懸浮球演示系統(tǒng)是開環(huán)不穩(wěn)定系統(tǒng),需要施加適當(dāng)?shù)姆答伩刂撇拍苁瓜到y(tǒng)穩(wěn)定。PID是工業(yè)控制中應(yīng)用最為廣泛的控制方法,特別是數(shù)字PID算法具有實現(xiàn)簡單、參數(shù)整定容易以及系統(tǒng)魯棒性好等優(yōu)點。因此,本系統(tǒng)就采用數(shù)字PID控制算法。本實例中,PID算法是在T2中斷服務(wù)程序中執(zhí)行的??刂破飨雀鶕?jù)A/D采樣結(jié)果NEW_P算出間隙變化量DELT_P、間隙變化量的積分NEW_I、微分(速度信號)NEW_V和二重微分(加速度信號)NEW_A,再以此為PID算法的輸入,最后計算出控制輸出量CTRL。9.1.3控制程序:功能模塊設(shè)計

算法的具體流程為:①計算間隙變化量DELT_P=NEW_P-P0②依次計算NEW_I,NEW_V和NEW_A③計算KP_P=GAIN_P×DELT_P④計算KI_I=GAIN_I×NEW_I⑤計算KV_V=GAIN_V×NEW_V⑥計算KA_A=GAIN_A×NEW_A⑦計算控制輸出量CTRL=PWM_Z+KI_I+KP_P+KV_V+KA_A⑧更新OLD_P,OLD_V,OLD_A,OLD_I

其中,PWM_Z是直流零位。9.1.3控制程序:功能模塊設(shè)計(5)PWM信號產(chǎn)生模塊本實例采用定時器T0和T1產(chǎn)生一路PWM波。PWM波的頻率由T0決定,PWM波的占空比由T1控制,因此。具體的控制方法如下:

T0的定時周期為常數(shù),其中斷服務(wù)程序完成以下功能:①PWM波的輸出腳置為低電平。②啟動T1計數(shù)。③中斷返回。

T1的定時周期等于控制量,其中斷服務(wù)程序完成以下功能:①PWM波的輸出腳置為高電平。②停止T1計數(shù)。③中斷返回。9.2.1組成及工作原理9.2.2電路設(shè)計9.2.3程序設(shè)計9.2基于PIC16C54的光柵式定位系統(tǒng)9.2基于PIC16C54的光柵式定位系統(tǒng)

單片機(jī)在智能檢測領(lǐng)域應(yīng)用十分廣泛,其內(nèi)部集成的I/O、A/D、SCI等接口,以及強大的信號處理功能及小型體積,大大簡化了檢測系統(tǒng)的硬件結(jié)構(gòu),提高了性價比。本節(jié)以基于PIC16C54的光柵式定位系統(tǒng)為例,介紹單片機(jī)在智能檢測領(lǐng)域的應(yīng)用。定位系統(tǒng)是軌道車輛運行控制系統(tǒng)的重要組成部分,國內(nèi)外均已進(jìn)行了大量研究,常見的軌道車輛定位方法有微波定位、接近傳感器定位、交叉感應(yīng)回線定位等。本節(jié)介紹一種基于PIC16C54單片機(jī)的光柵式定位系統(tǒng),給出系統(tǒng)的組成及基本工作原理,分析其定位和判向的方法;并給出系統(tǒng)的軟硬件設(shè)計;最后給出完整的程序清單,以供參考。9.2.1光柵式定位系統(tǒng)的組成及工作原理

光柵式定位系統(tǒng)由齒槽板和光電檢測器兩部分組成,齒槽板沿軌道安裝,光電檢測器安裝在車輛底部。在光電檢測器中,正對安裝有紅外發(fā)射管和接收管,簡稱紅外對管,當(dāng)它們相對齒槽板移動時,會出現(xiàn)擋光或透光兩種情況,紅外接收管就會對應(yīng)輸出高電平或低電平,根據(jù)形成的脈沖,就可以判斷車輛的相對移動,從而實現(xiàn)定位功能。所述的光柵式定位系統(tǒng)的組成結(jié)構(gòu)見下圖所示。9.2.1組成及工作原理:系統(tǒng)組成定位測速系統(tǒng)組成示意圖9.2.1組成及工作原理:工作原理

光電檢測器是光柵式定位系統(tǒng)的核心部件,由PIC16C54單片機(jī)、4對紅外對管及輔助電路組成。齒槽板的齒寬和槽寬均為40毫米,紅外管之間間隔50毫米。車輛移動時,4對紅外管所產(chǎn)生的定位脈沖形狀基本相同,相位不同。分析表明,車輛相對軌道每運行10毫米,這4對紅外管的輸出電平有且僅有一個發(fā)生變化,且其變化順序與車輛的行駛方向相對應(yīng),利用PIC16C54單片機(jī)來處理這些脈沖,就可以判斷車輛移動的距離及方向,定位精度為10毫米。車輛沿正向經(jīng)過齒槽板的情形見下圖所示。9.2.1組成及工作原理:工作原理車輛沿正向經(jīng)過齒槽板

根據(jù)上圖定義的車輛行駛的正方向。車輛沿正向/反向行駛時,4對紅外管A、B、C、D的輸出信號分別見下圖所示。9.2.1組成及工作原理:定位及判向原理正向運動對應(yīng)的時間波形圖9.2.1組成及工作原理:定位及判向原理反向運動對應(yīng)的時間波形圖9.2.1組成及工作原理:定位及判向原理

上述車輛正反向運行時的時間波形可以轉(zhuǎn)換為下圖的狀態(tài)轉(zhuǎn)換圖,從中可以看出,4對紅外管輸出的狀態(tài)只有8種,若知道當(dāng)前狀態(tài),下一狀態(tài)只有2種選擇,根據(jù)出現(xiàn)的新狀態(tài),可以判斷出車輛行駛的距離和方向。

車輛行駛時的狀態(tài)轉(zhuǎn)換圖9.2.1組成及工作原理:定位及判向原理

光電檢測器的輸出信號包括定位脈沖信號WV,以及兩位方向信號D2和D1。紅外管的狀態(tài)組合每變化一次,WV就翻轉(zhuǎn)一次。D2和D1與方向的對應(yīng)關(guān)系下表所示。D2D100011011含義無車正向反向停車D2D1與車輛行駛狀態(tài)對應(yīng)關(guān)系9.2.2光柵式定位系統(tǒng)的電路設(shè)計光電檢測器的電路設(shè)計9.2.2光柵式定位系統(tǒng)的電路設(shè)計

在光電檢測器的電路圖中,紅外接收管接收到紅外信號時,它正向?qū)ǎ珹點電壓變低,經(jīng)LM393比較和放大后,輸出低電平;當(dāng)紅外接收管接收接收不到紅外信號時,紅外接收管反向截止,LM393輸出高電平。LM393的輸出信號是狀態(tài)轉(zhuǎn)換圖中的一個狀態(tài)位,它連接到PIC16C54單片機(jī)的引腳RB0。類似地,其它3路紅外接收單元的信號分別連接到PIC16C54單片機(jī)的引腳RB1~RB3。引腳RB5~RB7作為輸出口,輸出2個方向信號D1和D2,及1個定位脈沖信號WV。引腳RA2定義為輸出,用于指示工作狀態(tài)。9.2.3光柵式定位系統(tǒng)程序設(shè)計:總體設(shè)計

(1)程序總結(jié)構(gòu)

PIC16C54不斷掃描4路輸入狀態(tài),一旦狀態(tài)組合發(fā)生變化,則使輸出波形WV翻轉(zhuǎn)一次;同時,程序根據(jù)當(dāng)前狀態(tài)與上一狀態(tài)在狀態(tài)循環(huán)表中的位置關(guān)系,判斷出車輛的行駛方向;如果某一狀態(tài)持續(xù)超過一定時間,則認(rèn)為車輛停在軌道上;如果輸入狀態(tài)不在狀態(tài)循環(huán)表中,則認(rèn)為無車。因此,車輛的運行有“正向”、“反向”、“停車”、“無車”四種情況。9.2.3程序設(shè)計:總體設(shè)計(2)程序用變量說明變量含義HS上次狀態(tài)。PS本次狀態(tài)。TP臨時狀態(tài)存儲器,用于臨時存儲本次狀態(tài)。WV脈沖電平輸出,通過置位和清零來形成波形。D1方向信號的低位。D2方向信號的高位。SK狀態(tài)保持計數(shù)器,指示當(dāng)前狀態(tài)維持了多長時間。TB正向運動的8種有效狀態(tài)列表。PXTB的指針,取值范圍0~7。9.2.3程序設(shè)計:總體設(shè)計(2)程序用變量說明(續(xù))變量含義V1如果車輛正向運行,那么應(yīng)有HS=V1。V2如果車輛反向運行,那么應(yīng)有HS=V2。SK1SK低八位寄存器SK2SK高八位寄存器FLAG標(biāo)志寄存器TEMP延時子程序用臨時變量TEMP1讀取當(dāng)前狀態(tài)模塊用臨時變量CLK1工作狀態(tài)指示時鐘定時器1CLK2工作狀態(tài)指示時鐘定時器29.2.3程序設(shè)計:功能模塊設(shè)計(1)主程序設(shè)計9.2.3程序設(shè)計:功能模塊設(shè)計(2)讀取PS模塊9.2.3程序設(shè)計:功能模塊設(shè)計(3)方向處理(I)模塊

9.2.3程序設(shè)計:功能模塊設(shè)計(4)方向處理(II)模塊

9.2.3程序設(shè)計:功能模塊設(shè)計(4)方向處理(II)模塊方向處理(II)完成PS與HS相等情況下車輛行駛狀態(tài)的判斷。常數(shù)S1是停車預(yù)設(shè)值,根據(jù)PS值,以及計數(shù)器SK與S1的大小關(guān)系,可以判斷出“無車”和“停車”兩種情況。此外,若當(dāng)前狀態(tài)持續(xù)時間沒有超過預(yù)設(shè)值S1,則輸出保持不變。9.2.3程序設(shè)計:功能模塊設(shè)計(5)SK溢出處理模塊9.3基于LPC2212的三關(guān)節(jié)機(jī)器人控制系統(tǒng)

9.3.1三關(guān)節(jié)機(jī)器人控制系統(tǒng)的結(jié)構(gòu)與功能

9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

9.3.3三關(guān)節(jié)機(jī)器人控制系統(tǒng)的軟件設(shè)計9.3.1三關(guān)節(jié)機(jī)器人控制系統(tǒng)的結(jié)構(gòu)與功能

圖9.18是某嵌入式三關(guān)節(jié)機(jī)器人控制系統(tǒng)的結(jié)構(gòu)框圖。其中:●嵌入式控制器采用ARM處理器LPC2212;●USB和RS-232作為嵌入式控制器與上位PC機(jī)的通信接口;●鍵盤和LCD顯示器為人機(jī)交互設(shè)備,分別用于輸入和顯示信息、命令等;●SST39VF160和IS61LV25616AL分別為擴(kuò)展的NORFlash芯片和SRAM芯片,用于存儲程序和數(shù)據(jù);(本來LPC2212片內(nèi)已集成有256kB的高速Flash存儲器和16KB的SRAM,對一般簡單三關(guān)節(jié)機(jī)器人控制系統(tǒng)來說,應(yīng)是足夠的,但考慮到本系統(tǒng)應(yīng)能適應(yīng)不同的需要,具有一定通用性,所以還是擴(kuò)展了存儲器。)9.3.1三關(guān)節(jié)機(jī)器人控制系統(tǒng)的結(jié)構(gòu)與功能

LPC2212ARM處理器RS-232USB通信總線接口

鍵盤接口顯示接口JTAG接口仿真器通信端口PC機(jī)鍵盤LCD顯示器串行通信總線接口伺服驅(qū)動單元1伺服驅(qū)動單元3伺服驅(qū)動單元2控制對象(三關(guān)節(jié)機(jī)器人或其他三軸機(jī)電裝置)SST39VF160(FLASH)IS61LV25616AL(SRAM)

圖9.18嵌入式三關(guān)節(jié)機(jī)器人控制系統(tǒng)的結(jié)構(gòu)框圖9.3.1三關(guān)節(jié)機(jī)器人控制系統(tǒng)的結(jié)構(gòu)與功能

●伺服驅(qū)動單元1~3用于驅(qū)動機(jī)器人的三個關(guān)節(jié)電機(jī),每個單元中包括一個由光電隔離器加差分電路組成的電機(jī)控制輸出通道和一個由差分電路加CPLD組成的電機(jī)信號反饋輸入通道。●JTAG接口及仿真器用作系統(tǒng)調(diào)試?!裣到y(tǒng)的通用輸入/輸出將直接由LPC2212的引腳10經(jīng)光電隔離引出。圖中各芯片及模塊采用5V電壓輸出的開關(guān)電源直接或經(jīng)低壓差電源芯片處理后供電。9.3.1三關(guān)節(jié)機(jī)器人控制系統(tǒng)的結(jié)構(gòu)與功能

該機(jī)器人控制器實際上不僅適用于三關(guān)節(jié)機(jī)器人控制,也適用于對數(shù)控機(jī)床和產(chǎn)業(yè)機(jī)械等其他具有多軸控制與聯(lián)動、開關(guān)量1/O和過程檢測與控制等需要的場合,可以說是一個通用三軸運動控制器。其基本功能如下:⑴系統(tǒng)可以控制三關(guān)節(jié)(運動軸)聯(lián)動,每路伺服驅(qū)動電路均為脈沖量輸出,可控制全數(shù)字交流伺服電機(jī)和步進(jìn)電機(jī)等。⑵系統(tǒng)具有正交編碼脈沖的捕獲能力。正交編碼脈沖是兩個頻率相同正交(相差90O)的方波。當(dāng)它由電機(jī)軸上的光電編碼器產(chǎn)生時,電機(jī)的旋轉(zhuǎn)方向可通過檢測兩個方波序列中的哪一列先到達(dá)來確定,角位置和轉(zhuǎn)速可由方波頻率來決定。用A、B相代表正交的兩列脈沖,Z相每轉(zhuǎn)產(chǎn)生一個脈沖。9.3.1三關(guān)節(jié)機(jī)器人控制系統(tǒng)的結(jié)構(gòu)與功能

⑶每個關(guān)節(jié)(運動軸)均有原點信號、限位信號LIMIT+及LIMIT-輸入,以及驅(qū)動報警信號、驅(qū)動使能信號和驅(qū)動復(fù)位信號輸出等。⑷系統(tǒng)具有嵌入式USB主機(jī)功能,能夠經(jīng)通用串行總線(USB)讀取PC機(jī)下載到U盤的數(shù)據(jù)文件,從而實現(xiàn)與PC機(jī)的通信。⑸系統(tǒng)全部I/O引腳都可編程為輸出或輸入。⑹系統(tǒng)可執(zhí)行三關(guān)節(jié)(三軸)直線和兩關(guān)節(jié)(兩軸)圓弧插補運動,具有位置閉環(huán)和誤差補償功能。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

主要包括嵌入式控制器的存儲器擴(kuò)展電路、鍵盤/顯示電路、伺服驅(qū)動單元電路、特殊功能I/O電路和必要的輔助性電路等硬件電路設(shè)計。

1.存儲器擴(kuò)展電路存儲單元的擴(kuò)展包括程序存儲器和數(shù)據(jù)存儲器的擴(kuò)展。綜合考慮性能和成本、功耗等因素,本系統(tǒng)按16位存儲器進(jìn)行擴(kuò)展。⑴程序存儲器的擴(kuò)展本系統(tǒng)外擴(kuò)了1片2MB容量的Flash芯片SST39VF160。由于LPC2212外部的4個存儲器組中BankO可用于初始引導(dǎo),故將BankO片選信號CS0連接到ST39VF160芯片使能信號CE#端,其地址空間為0x80000000H~Ox801FFFFFH。9.3.1三關(guān)節(jié)機(jī)器人控制系統(tǒng)的結(jié)構(gòu)與功能

圖9.19FLASH芯片SST39VF160與LPC2212的連接

到SST39VF160的信號WE#;OE端連到SST39VF160的信號CAE;低16位數(shù)據(jù)線DATA[00:15]對應(yīng)連到SST39VF160的數(shù)據(jù)線DQ0~DQ15;地址線ADDS[01:20]對應(yīng)連到SST39VF160的地址線A0~A19。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計⑵數(shù)據(jù)存儲器的擴(kuò)展系統(tǒng)外擴(kuò)了一片512KB的高速16位SRAM芯片IS61LV25616AL。系統(tǒng)分配給它的地址空間為0x81000000H~0x8107FFFFH。LPC2212與它的連接如圖9.20所示,即:LPC2212的WE端連到IS61LV25616AL的信號/WE;CS1端連到IS61LV25616AL的信號/CE;OE端連到IS61LV25616AL的信號/OE;BLS1連到IS61LV25616AL的信號/UB;BLSO連到IS61LV25616AL的信號/LB;低數(shù)據(jù)線DATA[00:15]對應(yīng)連到到IS61LV25616AL的數(shù)據(jù)線IO0~I(xiàn)O15;地址線ADDR[01:18]對應(yīng)連到IS61LV25616AL的地址線A0~A18。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計圖9.20SRAM芯片IS61LV25616AL與LPC2212的連接9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計2.鍵盤顯示電路⑴鍵盤電路本系統(tǒng)鍵盤由12個獨立式按鍵組成,它們分別是以下功能鍵:

“暫?!辨I:按下此鍵,暫停運動。

“開始”鍵:暫停后按下此鍵,繼續(xù)運動。

“復(fù)位”鍵:運動或自檢過程中產(chǎn)生異?,F(xiàn)象時,按下此鍵終止一切運動。

“向前”鍵:按下此鍵,執(zhí)行部件沿X軸正向運動.

“向后”鍵:按下此鍵,執(zhí)行部件沿X軸負(fù)向運動。

“向左”鍵:按下此鍵,執(zhí)行部件沿Y軸負(fù)向運動。

“向右”鍵:按下此鍵,執(zhí)行部件沿Y軸正向運動。

9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

“向上”鍵:按下此鍵,執(zhí)行部件沿Z軸正向運動。

“向下”鍵:按下此鍵,執(zhí)行部件沿Z軸負(fù)向運動。

“回零”鍵:按下此鍵,3個運動軸均回到坐標(biāo)原點.

“確認(rèn)”鍵:在運動的原點確定后,“開始”鍵按下后,按下此鍵進(jìn)行執(zhí)行部件的軌跡運動;“暫?!辨I按下后,按下此鍵將退出軌跡運動,返回原點。

“參數(shù)設(shè)定”鍵:系統(tǒng)上電初始化后,按下此鍵,系統(tǒng)初始參數(shù)將顯示在LCD上,然后通過“向前”和“向后”鍵確定所選參數(shù);用“向上”和“向下”鍵調(diào)整所選參數(shù)值,用“參數(shù)設(shè)定”鍵確定所選參數(shù)值。系統(tǒng)執(zhí)行運動指令后,參數(shù)調(diào)整無效,相應(yīng)的按鍵在該功能無效。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

⑵LCD顯示電路本系統(tǒng)采用一款具有240×128點陣的圖形液晶顯示模塊RT240128A作為LCD顯示器。它集控制器、驅(qū)動器、顯示存儲器和液晶顯示屏于一體,能方便地與各種微處理器接口,不僅可顯示一般簡單字符,還可顯示漢字、圖形和曲線等,可方便地提供漢字菜單方式的人機(jī)界面。

RT240128A所需的負(fù)電源利用輸入的十5V電源產(chǎn)生,這樣,它的對外接口僅是一根22芯扁平電纜。LPC2212與RT240128A的接口電路如圖9.21所示。其中,RT240128A的RESET由LPC2212的通用輸出引腳P3.22控制;CE信號由LPC2212外部的存儲器組BANK3的片選信號CS3與地址線A21譯碼產(chǎn)生,當(dāng)CS3和A21位低電平時,使液晶模塊的片選9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

信號LCDCS有效;C/D信號由LPC2212的地址線AO提供,A0=1為指令口地址(地址為0x83000001H),AO=O為數(shù)據(jù)口地址(地址為0x83000000H);Vout是RT240128A的負(fù)電源輸出電壓,經(jīng)電阻R21、R22分壓輸入到V0提供LCD驅(qū)動電壓;LED十和LED一是液晶的背光燈電源;考慮液晶模塊為5V供電系統(tǒng),LPC2212的1/O口供電電源為3.3V,盡管可承受5V電壓,但為保險起見,在液晶模塊與LPC2212的所有接口線中均串接一個阻值為470Ω的小電阻,起保護(hù)緩沖作用。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計圖9.21液晶顯示模塊RT240128A與LPC2212的接口電路9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

3.伺服驅(qū)動單元電路包括位置反饋輸入電路和驅(qū)動脈沖輸出電路。⑴位置反饋輸入電路在機(jī)器人和機(jī)床等運動控制系統(tǒng)中,大量采用光電編碼器作位移/角度/角速度檢測元件,它利用光電轉(zhuǎn)換原理直接將位移/角度/角速度的模擬量轉(zhuǎn)換成相應(yīng)的電脈沖或數(shù)字量,具有分辨率高、體積小、精度高、工作可靠、接口數(shù)字化等優(yōu)點。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

本系統(tǒng)中采用增量式光電編碼器作為位移/速度檢測器件,它輸出方波脈沖信號A、B和零脈沖信號Z,以及它們的反相信號/A、/B和/Z。其中Z脈沖每轉(zhuǎn)出現(xiàn)一次,用于調(diào)整電氣和機(jī)械的零位。A、B信號的相位差90O,利用A、B信號的相位關(guān)系即可判斷位移或速度的方向,對A、B脈沖計數(shù)即可獲得位移或速度值。為了提高分辨率,通常將脈沖信號A、B四倍頻后送入計數(shù)器進(jìn)行計數(shù)。同時,為了提高抗干擾性,在光電編碼器的輸出到四倍頻之間加入差動接收以及光電隔離電路。其原理圖如圖9.22所示。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計圖9.22位置反饋信號處理電路框圖

圖9.22所示的位置反饋信號處理電路既可用標(biāo)準(zhǔn)的IC芯片或PAL、GAL等簡單可編程邏輯器件來設(shè)計實現(xiàn),也可用CPLD等復(fù)雜可編程邏輯器件來設(shè)計實現(xiàn)。本系統(tǒng)采用這兩者結(jié)合的方法實現(xiàn),即圖9.22中的倍頻、辨向和計數(shù)電路采用一塊CPLD芯片XC9572,通過用VHDL語言對該芯片編程來實現(xiàn);而差動接收和光電隔離電路則分別用四路線性差分接收芯片AM26LS32和光電耦合器芯片6NI37實現(xiàn)。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

具體設(shè)計時,可按如下步驟進(jìn)行:①用VHDL語言分別設(shè)計能對3軸反饋信號分別進(jìn)行加減計數(shù)的16位可逆計數(shù)器、四倍頻電路和辨向電路,并一一作功能仿真,驗證其功能,得到一個3軸位置反饋信號核心處理電路方案(程序)。②用同樣的軟件設(shè)計方法,為該核心處理電路設(shè)計一個地址譯碼器,以便對LPC2212發(fā)出的地址信號、讀/寫(OE/WE)信號進(jìn)行譯碼,作為片選信號控制其內(nèi)部相應(yīng)電路的讀/寫操作。設(shè)計地址譯碼器時,地址信號選用A1、A0,其不同的編碼對應(yīng)不同的運動軸;同時,將芯片XC9572地址空間放置在LPC2212外部存儲組Bank3中,將片選信號CS3和地址信號A21組合作為XC9572的片選信號(CS3=0,A21=1時選通),以便將其與液晶顯示模塊RT240128A的地址空間區(qū)分開來。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

各運動軸的具體編碼及地址如表9.1所示。表9.1各運動軸的編碼及地址運動軸編碼(A1A0)對應(yīng)地址X軸01H0X83200001HY軸10H0X83200002HZ軸11H0X83200003H③將上述核心處理電路和地址譯碼器按邏輯關(guān)系連接,設(shè)計成一個項目整體,統(tǒng)一進(jìn)行綜合、生成VSM網(wǎng)表文件、功能仿真、布局布線以及時序仿真,通過后用ISP菊花鏈下載軟件將設(shè)計下載到XC9572芯片中,即完成了整個位置反饋信號處理電路的設(shè)計。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

④將設(shè)計好的位置反饋信號處理芯片XC9572芯片與差分接收芯片AM26LS32、光電隔離芯片6NI37按照圖9.22所示的關(guān)系實現(xiàn)正確連接。其中,AM26LS32與6NI37在系統(tǒng)中的電路連接如圖9.23所示(X、Y、Z三軸各有一套這樣的電路,這里只畫出第一套)。這樣,由光電編碼器反饋輸出的信號(iA十、iA-,iB十、iB-和iZ+,iZ-),經(jīng)AM26LS232處理和經(jīng)6NI37光電隔離后,即可相繼得到編碼器三相信號(iA、iB、iZ)和(Ai、Bi、Zi),其中i=1,2,3。圖9.23AM26LS32與6NI37在系統(tǒng)中的電路連接9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

⑵驅(qū)動脈沖輸出電路系統(tǒng)中采用LPC2212所具有的6路PWM方式輸出驅(qū)動脈沖,可編程實現(xiàn)脈沖和方向信號PLUSn、DIRn(n=1,2,3)的模式或是正負(fù)脈沖PLUSn十、PLUSn-(n=1,2,3)的模式,以滿足不同應(yīng)用的需要。基于與上同樣的原因,系統(tǒng)中選用了四路線性差分驅(qū)動芯片AM26LS31實現(xiàn)將每一路的信號轉(zhuǎn)換為差分信號,具體實現(xiàn)電路如圖9.24所示。同樣,為防止電機(jī)等外界干擾源的干擾信號的竄入,在驅(qū)動脈沖信號輸出前也經(jīng)高速光耦器6N137實現(xiàn)信號的電氣隔離。圖9.23AM26LS32與6NI37在系統(tǒng)中的電路連接9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計4.特殊功能I/O電路運動控制器在實際應(yīng)用中,還應(yīng)為各關(guān)節(jié)(運動軸)設(shè)置一些特殊功能的I/O信息,如限位輸入信號、原點輸入信號、報警條件輸入信號和使能驅(qū)動輸出信號、復(fù)位驅(qū)動輸出信號等,以便作相應(yīng)的處理。同時,還應(yīng)該為伺服電機(jī)驅(qū)動器提供一些輸出信號,去控制其相關(guān)特殊功能。表9.2所示的即為本系統(tǒng)控制器所設(shè)置的一些特殊功能信號,以及與之對應(yīng)的LPC2212連接引腳??紤]到每個運動軸都有左、右兩個限位信號,如果將它們均直接引入LPC2212的外部中斷引腳,不僅沒有必要,也浪費微控制器片上有限的資源,為此本系統(tǒng)為每個軸都引入了一個7409與門,將其左、右限位信號“負(fù)或”后,再輸入到LPC2212相應(yīng)的中斷引腳。這樣,6個限位信號只需對應(yīng)3個中斷引腳。另外,為了提高抗干擾性,實際電路中還在每個I/O信號與LPC2212的對應(yīng)引腳間都引入了一個光電隔離器。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計表9.2特殊功能I/O信號及其對應(yīng)的LPC2212連接引腳I/O信號對應(yīng)的LPC2212連接引腳限位輸入信號(每軸左、右兩個)EIN0(P0.16),EIN1(P0.3),EIN2(P0.15)原點輸入信號(每軸1個)P0.23,P0.24,P0.25報警條件輸入信號(每軸1個)P2.28,P2.29,P2.30使能驅(qū)動輸出信號(每軸1個)P0.27,P0.28,P0.29復(fù)位驅(qū)動輸出信號(每軸1個)P3.22,P3.23,P3.28通用I/O信號(25路)P1.16~P1.25,P2.16~P2.25,P3.16~P3.209.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計特殊功能I/O信號的具體電路連接如圖9.25所示。圖9.25特殊功能I/O信號的電路9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計5.輔助性電路包括工作電源、時鐘和復(fù)位等電路。⑴電源電路本系統(tǒng)需使用3種電源:3.3V,用于LPC2212的I/O口供電;1.8V,用于內(nèi)核及片內(nèi)外設(shè)供電;5V,用于LCM及其它一些外圍器件供電。為簡化電源設(shè)計,只從外部為系統(tǒng)提供一個高質(zhì)量的5V直流穩(wěn)壓電源輸入,然后在內(nèi)部通過兩個低壓差電源芯片LM1117MPX-1.8和LM117MPX-3.3,分別得到3.3V和1.8V的穩(wěn)壓輸出電源,如圖9.26所示。其中輸出端所接的lOμF電容用于改善瞬態(tài)響應(yīng)特性和穩(wěn)定性。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計圖9.26系統(tǒng)電源電路9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

⑵時鐘電路本系統(tǒng)中,根據(jù)LPC2212的最高工作頻率以及PLL電路的工作方式,為LPC2212設(shè)置了lOMHz的外部晶振。為使晶振易于起振,在其兩端并接了一個1MΩ的電阻。晶振電路如圖9.27所示。1OMHz的晶振頻率經(jīng)過LPC2212片內(nèi)的PLL電路倍頻后,最高可達(dá)60MHz。片內(nèi)的PLL電路除有倍頻功能外,還有信號提純的功能,因此,系統(tǒng)不僅可以較低時鐘頻率獲得較高工作頻率,而且可降低因高速開關(guān)時鐘所造成的高頻噪聲。圖9.27時鐘電路9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計

⑶復(fù)位電路本系統(tǒng)使用專用微處理器電源監(jiān)控芯片MAX708SD外加三態(tài)緩沖門74HC125構(gòu)成復(fù)位電路,如圖9.28所示。其中,信號nRST和nTRST分別連接到LPC2212芯片的復(fù)位引腳/REST和內(nèi)部JTAG接口電路復(fù)位引腳/TRST。當(dāng)復(fù)位按鍵SB1按下時,MAX708SD的引腳/RST立即輸出低電平復(fù)位信號,使兩個74HC125A導(dǎo)通,致使nRST、nTRST兩個復(fù)位信號有效。平時MAX708SD的/RST輸出高電平,兩個74HC125A均截止,由上拉電阻R3、R4將信號nRST、nTRST上拉為高電平,系統(tǒng)可正常運行或進(jìn)行JTAG仿真調(diào)試。9.3.2三關(guān)節(jié)機(jī)器人控制系統(tǒng)的硬件電路設(shè)計圖9.28復(fù)位電路

9.3.3三關(guān)節(jié)機(jī)器人控制系統(tǒng)的軟件設(shè)計

本控制系統(tǒng)是基于ARM嵌入式控制器建立的,其軟件只能在PC機(jī)上編寫和調(diào)試,然后將調(diào)試好的程序(擴(kuò)展文件名為*.Tdf的G代碼文件)通過一個USB下載軟件,下載到嵌入式控制器。嵌入式控制系統(tǒng)的軟件包括實時操作系統(tǒng)和用戶應(yīng)用程序兩大部分。由于ARM7TDMI芯片中沒有MMU,所以其操作系統(tǒng)和應(yīng)用程序的地址編譯完全是固定的,并編譯在一起,最后生成一個文件,下載到嵌入式控制器中執(zhí)行。這與在DOS或Windows環(huán)境下的PC機(jī)上開發(fā)軟件是大不相同的。在PC機(jī)上,操作系統(tǒng)文件和用戶應(yīng)用程序是分開的,而且可以有多個應(yīng)用程序同時存在于主機(jī)中;而ARM嵌入式控制器中的操作系統(tǒng)和應(yīng)用程序不可分,當(dāng)然就只能合二而一,形成一個統(tǒng)一的程序了,要想換另一個應(yīng)用,必須重新將它和操作系統(tǒng)一起編譯、重新下載。

9.3.3三關(guān)節(jié)機(jī)器人控制系統(tǒng)的軟件設(shè)計

本嵌入式控制器使用基于μC/OS-II內(nèi)核的RTOS操作系統(tǒng)。其用戶應(yīng)用程序大體包括人機(jī)界面、數(shù)字輸入輸出、運動控制和與PC機(jī)通信等四大功能模塊,各大模塊均由若干子模塊組成,模塊與模塊間的通信通過操作系統(tǒng)提供的消息、消息郵箱等機(jī)制來完成。整個系統(tǒng)的軟件結(jié)構(gòu)如圖9.29的框圖所示。

與PC機(jī)通信模塊:

USB數(shù)據(jù)發(fā)送;USB數(shù)據(jù)接收運動控制模塊:插補算法;位置反饋PID算法μC/OS-IIRTOS數(shù)字輸入輸出模塊:各軸位置采集;驅(qū)動輸出;限位、驅(qū)動

人機(jī)界面模塊:鍵盤輸入;液晶顯示圖9.29系統(tǒng)的軟件結(jié)構(gòu)框圖

9.3.3三關(guān)節(jié)機(jī)器人控制系統(tǒng)的軟件設(shè)計

顯然,整個系統(tǒng)的軟件設(shè)計,首先需要將μC/OS-II實時操作系統(tǒng)移植到ARM處理器芯片LPC2212上,使之能在微控制器上運行。有關(guān)μC/OS-II操作系統(tǒng)的移植方法,可見有關(guān)專門參考文獻(xiàn)(如書后文獻(xiàn)【87】等),甚至可直接采用一些公司(如周立功公司等)提供的移植代碼,本書不贅述。這里僅對用戶應(yīng)用程序的設(shè)計有重點地加以說明。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計1.人機(jī)界面模塊人機(jī)界面分兩部分:鍵盤輸入與液晶顯示。⑴鍵盤輸入模塊鍵盤輸入子模塊負(fù)責(zé)識別鍵盤的按鍵操作,如有鍵按下且合法有效,則轉(zhuǎn)到相應(yīng)的處理任務(wù)去完成相應(yīng)鍵功能。鍵盤輸入采用的是循環(huán)掃描方式:在系統(tǒng)中創(chuàng)建一個鍵盤掃描任務(wù),按照預(yù)定的掃描周期,對鍵盤輸入進(jìn)行檢測。檢測到合法有效按鍵后,就將該按鍵的掃描碼寫入消息發(fā)送給其他任務(wù),通知系統(tǒng)某按鍵被按下。本系統(tǒng)通過建立一個如圖9.30所示的狀態(tài)機(jī)來實現(xiàn)按鍵的掃描及相應(yīng)功能。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計圖9.30鍵盤掃描任務(wù)狀態(tài)機(jī)

9.3.3.1主要應(yīng)用程序模塊的設(shè)計

該狀態(tài)機(jī)在每次去除回彈周期內(nèi)執(zhí)行一次,每KEY_SCAN_TASK_DLY毫秒時間內(nèi)執(zhí)行四分之一個狀態(tài),即:剛開始時,狀態(tài)機(jī)處于KEY_STATE_UP狀態(tài);當(dāng)有鍵被按下時,狀態(tài)改變?yōu)镵EY_STAT_DEBOUNCE,然后延時KEY_SCAN_DLY毫秒;延時后若發(fā)現(xiàn)鍵未被釋放,則狀態(tài)機(jī)再延時KEY_SCAN_ASK_DLY毫秒;再延時后若發(fā)現(xiàn)鍵已釋放,則返回到KEY_STAT_UP狀態(tài);若鍵依然被按下,則任務(wù)通過調(diào)用函數(shù)KeyDecode()得到鍵的掃描碼,并通過調(diào)用函數(shù)KeyButln(),把掃描碼存入鍵盤數(shù)據(jù)緩存區(qū)和通知系統(tǒng)按鍵被按下。如果該鍵按下的時間超過KEY_RPT_START_DLY掃描時間,則啟動自動重復(fù)功能,再次將該鍵的掃描碼存入緩存區(qū),等效于再次按下該鍵,且狀態(tài)機(jī)的狀態(tài)改變?yōu)镵EY_STATE_DEBOUNCE狀態(tài),用于去除鍵被釋放時的回彈。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計⑵液晶顯示模塊液晶顯示模塊負(fù)責(zé)提供液晶顯示所需的硬件驅(qū)動程序,包括液晶顯示器初始化程序和一系列與顯示任務(wù)有關(guān)的其他接口函數(shù)子程序。通過將液晶顯示的硬件細(xì)節(jié)隱藏在這些接口函數(shù)中,其他應(yīng)用程序就可以只需調(diào)用這些硬件無關(guān)的接口函數(shù)來完成顯示任務(wù)了。本系統(tǒng)提供的幾種接口函數(shù)有:.DispInit():液晶初始化函數(shù)。它假設(shè)操作系統(tǒng)的多任務(wù)己經(jīng)啟動,并要使用實時內(nèi)核提供的服務(wù)。該函數(shù)初始化硬件,創(chuàng)建信號量,并設(shè)置LCD模塊的操作模式。必須在使用任何其他函數(shù)之前調(diào)用它。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計.DispChar():單個字符顯示函數(shù)。用于在顯示器的任意位置顯示單個字符。

.DispCIrLineQ:行清除函數(shù)。用于清除LCD模塊的某一行,即用空格字符的ASCII碼Ox20H填充。

.DisCIrScr():清屏函數(shù)。清屏后使光標(biāo)位于左上角。

.DispDefChar():字符/符號定義函數(shù)。用于使字符/符號位于CGRAM區(qū)域,設(shè)置其像素為5×8,代碼為Ox80H~OxFFH。

.DispStr():字符串顯示函數(shù)。用于在顯示器任何位置顯示ASCII字符串。以上這些函數(shù)可以被應(yīng)用程序調(diào)用,以完成需要的顯示功能。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計

顯然,這些函數(shù)是硬件無關(guān)性的。硬件的驅(qū)動部分被封裝在以下三個函數(shù)之中:

.DisplnitPort():I/O端口初始化函數(shù)。用于初始化與LCD模塊相連接的輸入輸出端口。

.DispDataWr():單字節(jié)寫函數(shù)。用于寫一個字節(jié)數(shù)據(jù)到LCD模塊。根據(jù)C/D的狀態(tài),該字節(jié)發(fā)往命令寄存器或數(shù)據(jù)寄存器。

.DispSel():C/D狀態(tài)改變函數(shù)。用于改變C/D的狀態(tài),其參數(shù)只有DISP_SEL_CMD_REG和DISP_SE_AT_REG兩種,分別用來選中命令寄存器和數(shù)據(jù)寄存器。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計3.數(shù)字輸入輸出模塊數(shù)字輸入輸出模塊負(fù)責(zé)完成各關(guān)節(jié)(運動軸)的位置反饋信號采集和驅(qū)動脈沖輸出。對于多軸聯(lián)動控制系統(tǒng)來說,這部分的性能至關(guān)重要。位置反饋信號是由光電編碼器轉(zhuǎn)換而來的脈沖或數(shù)字信號,其采集和限位輸入、驅(qū)動使能輸出一樣,實現(xiàn)起來比較簡單。在本系統(tǒng)中,使用郵箱來存儲光電編碼器位置反饋值,當(dāng)系統(tǒng)執(zhí)行驅(qū)動脈沖輸出程序被DDA周期定時中斷后,位置檢測任務(wù)則將位置反饋值存入郵箱中,而相應(yīng)的位置控制任務(wù)如發(fā)現(xiàn)該郵箱中有新的消息產(chǎn)生,就會對應(yīng)的作出位置比較,修改位置誤差。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計

下面是主程序等待位置反饋值并在有反饋時將它接收并存入郵箱的程序段:

voidMainseTask(void*id){Posmsgpmsg=0;

for(;;){pmsg=WaitMessage();//等待消息

Switch(pmsg->message{Feedback(pmsg->posvalue);//接收反饋值

Break;}DeleteMessage(pmsg)};//刪除消息,釋放資源

}

9.3.3.1主要應(yīng)用程序模塊的設(shè)計

各關(guān)節(jié)的運動方向控制及其驅(qū)動脈沖產(chǎn)生輸出的任務(wù),本系統(tǒng)是基于LPC2212的PWM功能來實現(xiàn)的。LPC2212的PWM功能是建立在標(biāo)準(zhǔn)的定時器之上的,它具有32位定時器、預(yù)分頻控制電路和7個匹配寄存器,可實現(xiàn)6個單邊PWM輸出和3個雙邊PWM輸出,也可采用這兩種類型的混合輸出,具有匹配中斷、匹配PWMTC復(fù)位和匹配PWMTC停止等功能。其比較匹配功能的實現(xiàn)框圖如圖9.31所示。定時器比較匹配由控制寄存器PWMMCR進(jìn)行匹配操作設(shè)置,而PWMMRO-6則為7路比較匹配通道的比較值寄存器。當(dāng)比較匹配時,將會按照PWMMCR設(shè)置的方法產(chǎn)生中斷或復(fù)位PWMTC等,而且PWMPCR可以控制允許/不允許PWM輸出和單邊/雙邊PWM輸出。另外,LPC2212使用了一個PWMLER鎖存使能寄存器,可確保對PWMMRO-6的比較值進(jìn)行修改過程中不影響PWM輸出。當(dāng)修改PWMMRO-6的比較值時,只有使PWMLER的對應(yīng)位置1,在匹配0事件發(fā)生后此值才會生效。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計圖9.31PWM的比較匹配寄存器功能框圖

9.3.3.1主要應(yīng)用程序模塊的設(shè)計

系統(tǒng)采用了配置單邊PWM、復(fù)位PWMTC功能,可輸出脈沖/方向模式和正負(fù)脈沖模式供用戶選擇。在使用單片PWM輸出時,在PWM周期開始時為高電平,匹配后為低電平,使用PWMMRO作為PWM周期控制,PWMMRx作為占空比控制。若PWMMRx的匹配值為0,則該引腳輸出在該PWM周期內(nèi)一直為低;反之,若匹配值等于MRO,則輸出在該周期一直為高。經(jīng)過設(shè)計,本系統(tǒng)可以在同一時刻產(chǎn)生三個關(guān)節(jié)的驅(qū)動脈沖輸出。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計

以下是輸出脈沖/方向模式的例程:voidservo_control(){PINSELO=OxOOOA80OA;//設(shè)置PWM1-PWM6連接到相應(yīng)的輸出引腳

PINSELI=OxOO000400;PWM_Init();//PWM初始化

pwmdataO=cycle_data;pwmdatal=x_plus;pwmdata2=x_dir;pwndata3=y_plus;pwmdata4=y_dir;pwmdata5=z_plus;

9.3.3.1主要應(yīng)用程序模塊的設(shè)計pwmdata6=zdir;while(1){PWMMRO=pwmdataO;//設(shè)置PWM周期

PWMMRl=pwmdatal;//運動脈沖輸出

PWMMR2=pwmdata2;//運動方向輸出

PWMMR3=pwmdata3;PWMMR4=pwmdata4;PWMMR5=pwmdata5;PWMMR6=pwmdata6;PWMLER=0x41;//PWMMRO~6鎖存,更新PWM占空比

}}

9.3.3.1主要應(yīng)用程序模塊的設(shè)計4.運動控制模塊運動控制模塊主要的任務(wù)是實現(xiàn)與運動控制有關(guān)的算法。鑒于μC/OS-II實時操作系統(tǒng)支持對鍵盤事件的響應(yīng),本系統(tǒng)的運動控制程序模塊基于以下思想設(shè)計:提供一個主功能菜單,通過鍵盤選擇不同的菜單功能,每一個菜單功能下對應(yīng)著一個相應(yīng)的處理程序;在通過鍵盤操作選擇不同菜單功能項的同時,還可以往文本框中鍵入信息,進(jìn)行一些參數(shù)的設(shè)置。因此,運動控制程序模塊的設(shè)計,實際上主要就是建立一個基于菜單的控制功能表和設(shè)計相應(yīng)的控制菜單響應(yīng)函數(shù)。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計

⑴基于菜單的控制功能表建立本系統(tǒng)的控制菜單結(jié)構(gòu)如圖9.32所示。主菜單軌跡調(diào)入?yún)?shù)設(shè)置機(jī)器人控制軌跡下載PID參數(shù)重復(fù)執(zhí)行執(zhí)行軌跡運動速度軌跡精度系統(tǒng)時間傳動參數(shù)手動控制自動尋零臂長碼盤KpKiKd減速器返回零點圖9.32控制菜單結(jié)構(gòu)

9.3.3.1主要應(yīng)用程序模塊的設(shè)計

按該菜單結(jié)構(gòu),定義一個對應(yīng)的菜單響應(yīng)函數(shù)指針數(shù)組,數(shù)組中放置的是指向各菜單響應(yīng)函數(shù)的指針。這樣建立起來的響應(yīng)函數(shù)指針數(shù)組實際上就是基于菜單的控制功能表。有關(guān)定義的程序段如下。void*MainFunction[]= {(void*)OnLoadPath,(void*)OnSetPara,(void*)OnRoboControl,(void*)OnUsb_Download}; void*SetParaFunction[]= {(void*)OnSetPID,(void*)OnSetMoveSpeed,(void*)OnSetPathAccurate,(void*)OnSetTime,(void*)OnSetMovePara}; void*RoboControlFunction{[]= {(void*)OnManual,(void*)OnAutoFindZero,(void*)OnImplementPath,(void*)OnRepeatPath,(void*)OnReturn2Zero};

9.3.3.1主要應(yīng)用程序模塊的設(shè)計

有了上述菜單結(jié)構(gòu)及菜單響應(yīng)函數(shù)指針數(shù)組,操作系統(tǒng)便可以進(jìn)行消息分配了。對于菜單上的每一個菜單項都有一個狀態(tài),用mainstatus變量記住這個狀態(tài)。當(dāng)在不同的狀態(tài)下時,根據(jù)菜單控件的當(dāng)前高亮顯示的內(nèi)容,有一個函數(shù)與之對應(yīng)。于是,當(dāng)在某個狀態(tài)下單擊OK按鈕時,便會執(zhí)行相對應(yīng)的菜單控件上當(dāng)前選項所對應(yīng)的處理函數(shù)。例如,若在mainstatus為MAIN_PARASET(對應(yīng)參數(shù)設(shè)置菜單)時單擊了OK按鈕,且此時菜單上的選擇條位于第二項,即“傳動參數(shù)”,則OnSetMovePara()函數(shù)將得到執(zhí)行。再如,當(dāng)在“機(jī)器人控制>自動歸零”狀態(tài)下單擊了OK按鈕時,則其mainstatus為MAIN_ROBOCONTROL,且pMainListCtrl->CurrentSel為2,則會對應(yīng)地調(diào)用OnAutoFindZero()函數(shù)。所有的控制函數(shù),均是按這種方法實現(xiàn)的。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計⑵主要控制菜單響應(yīng)函數(shù)的設(shè)計控制菜單響應(yīng)函數(shù)的設(shè)計,也即與運動控制有關(guān)的控制功能的實現(xiàn)。本三關(guān)節(jié)(運動軸)機(jī)器人控制系統(tǒng)是三個方向的速度和位移控制系統(tǒng)。工作時,首先,通過PC機(jī)根據(jù)運動控制所要達(dá)到的目標(biāo),進(jìn)行圖像數(shù)據(jù)處理、軌跡規(guī)劃、預(yù)處理等工作,從而得到運動控制所需的各種參數(shù),通過USB下載到U盤中;然后,運動控制器通過USB讀取U盤的運動控制參數(shù),存入插補緩沖區(qū)供插補任務(wù)處理;插補任務(wù)在插補任務(wù)周期內(nèi)完成各個軸的位置增量計算,產(chǎn)生各軸所需的控制脈沖給位置控制任務(wù);同時,位置反饋檢測任務(wù)在同周期內(nèi)完成各個軸的實際位置增量計算,并反饋給位置控制任務(wù);最后,位置控制任務(wù)通過理論位置與實際位置的比較,發(fā)出運動指令控制各個軸的運動,實現(xiàn)坐標(biāo)軸的協(xié)同移動。圖9.33所示即為系統(tǒng)控制流程示意圖。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計圖9.33系統(tǒng)控制流程示意圖

由上可見,控制菜單響應(yīng)函數(shù)涉及的控制功能程序模塊、子模塊很多。下面僅就自動尋零、插補控制和伺服驅(qū)動幾個核心功能模塊的設(shè)計作一介紹。

9.3.3.1主要應(yīng)用程序模塊的設(shè)計voidOnAutoFindZero(){//兩個臂均以低速度、高加速度順時針(負(fù)向)運動

DM_ServoLoadTraj(1,VEL_MODE|LOAD_VEL|LOAD_ACC|ENABLE_SERVO|START_NOW|REVERSE,0,SpeedFactor1*20,AccFactor1*550,0);DM_ServoLoadTraj(2,VEL_MODE|LOAD_VEL|LOAD_ACC|ENABLE_SERVO|START_NOW|REVERSE,0,SpeedFactor2*20,AccFactor1*550,0);//等待狀態(tài),當(dāng)碰到限位開關(guān)時停止

for(;!(bAxislCWLimit&&bAxis2CWLimit);)//循環(huán)直到兩個順時針限位開關(guān)都被觸發(fā)

{

【自動尋零模塊】

以下是自動尋找機(jī)器人坐標(biāo)零點的程序模塊:

9.3.3.1主要應(yīng)用程序模塊的設(shè)計DM_DefineStatus(1,SEND_AUX);//獲取軸1極限開關(guān)的狀態(tài)

Auxl=DM_GetStat(1); if((Auxl&LIMIT1)==0)//是否碰到左極限

{DM_DefineStatus(1,SEND_AUX); Auxl=DM_GetStat(1);//兩次檢測,防止錯誤信號

if((Auxl&LIMIT1)==0)bAxis1ACWLimit=TRUE; } else bAxis1ACWLimit=FALSE; if((Auxl&LIMIT2)==0)//是否碰到右極限

{DM_DefineStatus(1,SEND_AUX); Auxl=DM_GetStat(1);//兩次檢測,防止錯誤信號

if((Auxl&LIMIT2)==0)bAxis1CWLimit=TRUE; }

9.3.3.1主要應(yīng)用程序模塊的設(shè)計else bAxis1CWLimit=FALSE; DM_DefineStatus(2,SEND_AUX);//獲取軸2極限開關(guān)的狀態(tài)

Aux2=DM_GetStat(2);if((Aux2&LIMIT1)==0) {DM_DefineStatus(2,SEND_AUX); Aux2=DM_GetStat(2);//兩次檢測,防止錯誤信號

if((Aux2&LIMIT1)==0)bAxis2ACWLimit=TRUE; }else bAxis2ACWLimit=FALSE; if((Aux2&LIMIT2)==0) {DM_Define

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論