//Logo Image
作者:林能祺、盧嘉泓、洪佳杰(2009-07-16);推薦:徐業良(2009-07-17)

pic_Server V3X控制全向輪平台

本文首先簡介全向輪平台原理,並說明如何使用單一個pic_Server V3X來控制全向輪平台。

1.     全向輪平台簡介

全向輪平台以三個輪子驅動,如圖1所示,三個輪軸以夾角120˚平均分佈的方式配置,輪軸皆指向圓心以控制受力均勻。全向輪經過特別設計,在圓周上裝有與輪軸垂直的小輪,可自由沿兩種方向移動。當驅動馬達提供動力時,全向輪沿著圓周方向轉動,此時全向輪上的小輪則無作用;當驅動馬達則不輸出扭矩時,全向輪往輪軸方向移動,此時全向輪上的小輪成為輔助輪,減少移動時的摩擦力,幫助平台移動。

1. 全向輪平台三輪佈置方式

全向輪平台行走靠著三輪差速以及馬達正反轉,可達到較細膩的控制,如前進後退,左右平移,原地旋轉、斜向移動、半拋物線型移動等等,但在馬達速度上需要較複雜的計算,且因不同的地面的磨擦係數影響,控制較不精準。

2是全向輪平台運動的示意圖,利用基本運動學原理與三角函數計算可推得全向輪平台運動之三輪速度關係。以下是三種基本的移動方式:

2. 全向輪行走示意圖

(1)   沿著Y方向(前進後退)行走時三輪之速度關係如式(1)1號、2號輪的轉速相同,轉向相反,帶動速度為零的3號輪沿著Y方向行走。

                                                                                          (1)

其中全向輪速度以順時針為正。

(2)   沿著X方向(左右平移)行走時三輪之速度能透過輪胎X方向速度分量與圓心的力矩平衡關係式求得如式(2)1號、2號輪逆時針旋轉,3號輪以兩倍速度順時針旋轉。

                                                                                             (2)

(3)   原地順時針旋轉時三輪之速度關係如式(3)

                                                                                                   (3)

若全向輪平台欲往右前方行走,可先知道1號輪以逆時針旋轉,2號、3號輪以順時針旋轉,其轉速再用三角函數做運算即能得出。

2.     pic_Server V3X控制全向輪平台說明

本文使用pic_Server V3X板控制全向輪平台,表1pic_Server V3X功能總表,pic_Server V3X有網路通訊功能,可讓全向輪平台成為可經由網路獨立控制之模組。本節將說明如何使用pic_Server V3X板來控制全向輪平台。

1. pic_Server V3X 功能總表

功能

PIC18F6722接腳

外拉腳位或零件名

數量

類比電壓輸入

RA0RA1RA2

CN4.1CN4.3CN4.5

3

數位訊號輸出入

RC2RA4RA5RB4RB5

CN4.7~CN4.15

5

 

馬達/繼電器驅動

RA5RC1RC2RA3

CN3

4繼電器/

2馬達

MMC記憶卡

RB0~RB3

U6

1

RS232-TTL X2

RC6RC7RG1RG2

CN10CN7.16~CN7.18

2

2*20 背光LCD

RF0~RF7

CN6

1

網路介面RJ-45

RD0~RE7

U2

1

I2C訊號介面

RC3RC4

CN7.7CN7.9

1

蜂鳴器

RG0

Speaker

1

REAL TIME CLOCK

RB2RC0RC5

RB2RC0RC5

1

擴充副IC

透過DI/OI2C

視功能而定

1

2.1  pic_Server V3X板硬體改造

pic_Server V3X的電路設計詳見「(2009-07-06)pic_Server V3X組裝與測試流程」。pic_Server V3X板原有1L293D馬達控制晶片,可控制兩個馬達正逆轉,然而要控制全向輪平台必須控制3個馬達,因此需增加1顆馬達晶片。以下敘述L293D的基本接線與加裝馬達晶片的線路配置。

L293D馬達晶片可控制4個馬達同向轉或是2個馬達正逆轉,L293D的左右半邊各掌管一組馬達正逆轉的電壓電流輸出入。如圖3所示,U.3.3U.3.6(M1AM1B)掌管一個馬達的正逆轉,另一組U3.11U3.14(M2AM2B)則掌管另一個馬達的正逆轉,U3.16腳接+5V為晶片之工作電壓,U3.1U3.9各為控制馬達的ENABLE線,線路圖上預設為ENABLEU3.8腳為馬達電壓輸入(外部電壓),U3.4U3.5U3.12U3.13腳為馬達之接地線。

U3.2U3.7為第一組馬達正逆轉控制訊號,U3.10U3.15為第二組馬達正逆轉控制訊號腳,控制訊號的腳位則分別接上picRA5RC1RC2RA3,由於這幾隻訊號腳位內部無pull-highpull-low的功能,需由外部加上一電阻將腳位拉低,讓腳位不會呈現floating狀態,提高訊號雜訊比,讓pic不會誤動作,為方便組裝,採用一排阻共接地。

3. L293D腳位接線圖

為了要控制第3顆馬達,必須再增加接1顆馬達晶片與1個排阻,並使用馬達晶片上的兩個腳位來控制馬達的正逆轉,如圖4、圖5所示。

4. pic_Server V3X板加掛馬達晶片正面

5. pic_Server V3X板增加馬達晶片背面拉線

對照圖3 L293D腳位,並複製接線圖,在pic_Server V3X板上增加一馬達晶片,完成如圖4、圖5的改線,其中馬達晶片的訊號輸入腳分別接到的picRG0RA2,外拉腳位分別為CN2.9CN4.5,編譯程式時需要增加pic控制馬達的訊號指定到這兩個腳位,其中RG0原本是給蜂鳴器的腳位,但現在需拿來作為馬達控制的訊號腳位,所以必須將pic_Server V3X板上原有的蜂鳴器移除。

2.2  pic_Server V3X板控制馬達程式說明

編譯程式時,由於pic_Server V3X是由pic_Server V2升級,因此程式設定值以及定義需要做更改,如下圖6紅框所示,其中需要定義PIC_SERVER_VERSION  3第三版並引用pic_server_lib.h,並在副程式pic_server_lib.hpic_server_motor中做部份修改,將在後面說明。

6. 引用程式與定義

C:\YZ_PIC\Samples\Library_6.0\pic_SERVER_v3x\pic_server_motor.c檔案中修改如下圖7中的紅色框,增加給第三個馬達使用的PWM,同時在motor_off()中增加set_pwm3_duty(0),以及G0A20,關閉馬達的所有動作。

7. 副程式pic_server_motor

C:\YZ_PIC\Samples\Library_6.0\pic_SERVER_v3x\pic_server_init.c中增加A2G0在初始化時為零,再來修改ADCport,原先為A0~A3,修改為A0~A1,以避免腳位衝突。

8. 副程式pic_server_init.c

接著新增設定PWM3的初始設定,設定方法如圖9紅框所示。

9. 副程式pic_server_init.c

測試主程式的部分如圖10所示,與pic_Server V2一樣,副程式motor( motor , speed )依舊不變;運用終端機keyin的方來測試程式,當我們敲擊鍵盤時,程式會擷取鍵盤的訊息,同時並供給各個馬達的速度及方向,其中紅色框內括弧中第一位數字表示第幾顆馬達(最多三顆馬達),第二位數字表示馬達速度(速度範圍為-1515)。

最後一行程式當程式運作正常時,會讓pic_Server V3X板上的LED燈每秒閃爍一次,若程式卡在迴圈裡或是當機不工作則LED不會閃,藉此檢查系統是否仍在運作。以上便完成以pic_Server V3X來控制全向輪平台3顆馬達的正逆轉。

10. 測試主程式