Encode Motor

Encode Motor 除了能做出一般 Motor 的轉動功能外 , 它還能精準地將 Motor 的位置、速度和旋轉方向的準確回饋 ,

並且將這些 Motor 的運動轉換成訊號(digital signal) , 在 robo pro coding 上會以 step , counter 等數值呈現 (encode)

回饋給 TXT 4.0 Controller 進行精確的編程控制。

專題目的 :

  • 學習利用 Encode Motor 的 Counter 準確地轉動至特定位置
  • 學習 fischertechnik 轉盤結構
  • 使用 Display Screen 顥示 Encoder motor 的 counter 數值
  • 同步多組 Encode Motor

所需用料 :

TXT 4.0 Controller x 1

Switch (input) x 1

Encode Motor x 1

電線 x 2

3-Pin Encode Motor 電線 x 1

電源 x 1

轉盤結構 x 1

轉盤結構的建構方法 :

電線接駁方法 :

Switch > I1

Encode Motor 2Pin > M1 (O1,O2)

Encode Motor 3Pin Black > C1

Encode Motor 3Pin Red > 9V Out +

Encode Motor 3Pin Green > 9V Out -

連接 TXT Controller :

詳細的連接方法可查看 : 按此

Controller Configuration :

先取出「TXT 4.0 Controller」

在「Input 」取出「Mini Switch」

分別在「Motor」取出「Encodermotor」及「Counter」取出「Encodermotor counter」

將「Encodermotor」加至「Motor」, 會默認變成「M1」 ;

將「Encodermoter counter」加至「Counter/Digital Input」 ; 會默認成「C1」

將「Mini switch」加至「Input」, 會默認成 「I1」

請相應自己的電線接駁位置

Display Configuration :

加入「TXT_Display」

將「TEXT」留空用作顯示 Encode motor counter 的數值 ,

Font Size 建議改大以更清楚顯示文字內容。

TEST INTERFACE 測試 :

拖拉 M1 改變紅圈的數值去讓 Motor 轉動 , 數值為 0 - 512 ; 數值愈大 轉速愈大 ,

Counter 的數值代表 Encode Motor 內的 encode sensor 觸發的次數 (不代表 motor 轉動周數) ,

試以 M1 512 為例子 , 測試轉台由起點轉動一周的 counter 數值是多少 ?

你會得出 counter 的數值約為 3600 , 可推斷出 1/4 cycle = 900 , 1 cycle = 3600

透過測試出來的 counter 數值來進行稍後的編程。

在較高的轉速和較長的運作時間下,移動的位置會比慢速的稍微不準確。

利用 Counter 控制轉動幅度 | 編程教學 :

首先從「Counter」取出這3組command , 接下來會說明每個commnad的用處。

將「reset counter」放至「program start」的下方 , 在每次編程開始時都先將 counter 的數值歸 0 ,

以確保執行接下來的編程時 counter 都會是由 0 開始計算

從「Logic」取出「if do」作為 Input的檢測及觸發output

前往「Input」將「is mini switch ___ open」拖拉出來 , 以檢測 switch 的狀態

將「is mini switch closed」加入至「repeat forever」裡的「if」中,

並將 switch 的狀態改成 closed , closed 代表 switch 被按下的狀態

在「Motor」取出「set motor speed」及「stop motor」

將「set motor speed 512」放至 do 的後方 , 意思是當按下 switch 時 , 啟動 Encode Motor

在「loops」中取出「repeat while」以檢測 counter 的數值

在「logic」取出「=」 , 「Math」取出「0」 , 作檢測 counter 數值之用

加入「get counter value < 900」至「repeat while 」裡面 ,

目的是當 counter 數值未達 900 時 , 前面「set motor speed 512」都會繼續執行 ,

換言之當達到 900 時再停止 motor  便會是 encode motor 轉動「 counter = 900」的距離

i.e. 900 是在 Interface Test 測試時得出的 1/4 轉台 cycle

在「Display」取出「set input text」以及在「Until」取出「wait _ s」

放至 while loop , 將 「set txt_input」設定成「get counter value」讓 Display Screen 顯示當下的 counter 數值 ,

「wait 1 ms  」的用意是讓顯示的數值以較慢的速度呈現

最後加入「stop motor」至「while loop」的後方 , 完成 while loop 內的 < 900 counter 後 關上 Encode Motor

按下「start program」傳送並啟動編程

按下 Switch , Encode Motor 會開啟轉動並推動轉台 ,

當 TXT 4.0 Controller 上的 Display Screen 數值至 899 (<900)時 ,

Motor 便會停止轉動 , 而轉台則會在移動1個quarter (1/4 CYCLE)

示範影片 :

同步控制多個 Encode Motor :  

在工業世界中很多時候需要控制超過一組的 Motor , 例如汽車的運行、機械人的走路等等

它們都需要多組的 Motor 同時做出一樣的動作才能做出效果 eg 2組 Motor 同時啟轉做出向前行駛

我們會以剛才的轉台作例子向大家介紹 "sync" 這個 command 來同時控制多個 fischertechnik encode motor

電線接駁方法 :

加入另一個 Encode Motor :

Encode Motor 2Pin > M2 (O3,O4)

Encode Motor 3Pin Black > C2

Encode Motor 3Pin Red > 9V Out +

Encode Motor 3Pin Green > 9V Out - (C3左面)

注意2個encode motor的3pin sensor wire都需插至 Controller

將另一個 Encode Motor 加入 Controller 的 Configuration :

只需加入 Motor 即可 , "sync"同步無需用到「counter」功能

編程教學 :

點擊 「set motor」及「stop motor」 command 上的「+」 , 會出現 「sync with motor M2 」

按下「+」後 , Encode Motor (M2) 便會跟原本的M1 Motor 同步所有動作 (速度、開關)

唯獨方向可以不一樣 , 可點擊「ccw」來改變 Motor 的方向

影片示範 :

Step Size + 簡單同步編程 :

在「Motor」取出「set motor...step size」

透過 step size command 可以控制 Encode Motor 的轉動距離 , 與早前用過的 counter 相似

同樣按「+」使2組 Encode Motor 同步運行 , 改變 step size 的數值以改變轉動距離

step size 的最大值為 65536