mblock第十一課(伺服馬達)

星期二, 3rd 十一月 2015

伺服馬達:又稱為舵機,可以依照指示角度做轉動的馬達。

一般伺服馬達有三條線,電源(紅色)、接地(黑或棕色)、訊號線(白、黃、橘、藍....)。透過訊號線傳送PWM脈波來控制軸柄的停止位置旋轉角度,使用mblock程式,只要一個指令就可以控制了。

若想使用超過兩個以上的伺服馬達,要以另外的電源供電,而且要記得共同接地。

一、控制伺服馬達轉動

將伺服馬達的三條線,電源(紅色)接5V、接地(黑或棕色)接GND、訊號線(白色)接數位腳D12。

新版的mblock程式將[設置伺服馬達]改成叫做[設置舵機],所以下面的示範程式請自行對照修正。

使用指令 [ 設置伺服馬達腳位......輸出角度為.....]來控制馬達的轉動角度。

每個指令之間要[等待1秒],讓馬達有時間去轉動。

程式下載:伺服馬達.sb2

二、使用鍵盤按鍵來控制轉動角度

注意:

記得先檢查[輸入法]是否為[英],當輸入法不對時,鍵盤按鍵對應的值是錯的,無法正確反應動作。

按下鍵盤上的[空白鍵]讓伺服馬達轉動到0度,[左移鍵]讓伺服馬達轉動到90度,[右移鍵]讓伺服馬達轉動到180度。
[上移鍵]讓伺服馬達轉動角度增加5度,[下移鍵]讓伺服馬達轉動角度減少5度。

程式下載:鍵盤控制轉動.sb2

延伸:

利用拉霸(變數)控制伺服馬達

先做一個[角度]變數,在舞台區會顯示變數的圖案,在圖案上用滑鼠左鍵點一下,就會變成只有數值,在圖案上再點一下滑鼠左鍵,就會出現有[拉霸]小點的圖形。

用滑鼠左鍵拖曳小點往左右滑動,就可以改變變數大小,也就是改變輸出值的大小。

這樣就可以拉霸來控制伺服馬達的轉動角度。

內定最大就是100度,如何可以讓轉動角度達到最大的180度呢?

動動腦想想看吧!

 

程式下載:拉霸控制伺服馬達.sb2

三、用按鍵控制轉動角度

選擇上面的伺服馬達線路,再設置兩個按鍵線路(請參考第八課(按鍵))

A按鍵讓伺服馬達轉動角度會增加1度,B按鍵讓伺服馬達轉動角度會減少1度。

程式設計請參考上面和第八課(按鍵)

四、可變電阻控制伺服馬達轉動

 

可變電阻改變時類比腳A0讀到的值也會改變。

輸入的電壓是0到5V,讀到的數值為0到1023,顯示時需要做公式轉換

A0讀到的數值範圍為0到1023 伺服馬達的轉動角度為0到180度,顯示時需要做公式轉換。

程式中有一個說的指令,可以讓我們看到輸出的角度。

設置伺服馬達的輸出角度為轉換結果。

程式下載:可變電阻轉動馬達A.sb2

程式修正

上面程式執行時發現太過靈敏,會有抖動現象。

在程式中多加一個 [ 將轉換結果四捨五入 ] 的指令,可以改善此情形。

程式下載:可變電阻轉動馬達.sb2

延伸:

將伺服馬達裝到機械手臂上,就可以操控手臂的動作了。

五、光敏電阻控制轉動角度

將上面可變電阻控制伺服馬達的線路中,可變電阻更換成光敏電阻感應線路(請參考第十課(光敏電阻))

伺服馬達的角度隨著光強度而改變,當光強度最大時,伺服馬達轉動到180度,光強度最小時伺服馬達轉動到0度。

程式設計請參考上面和第十課(光敏電阻)

延伸:

伺服馬達連接大門,平常門關起來,當有人靠近時,遮住光敏電阻的光,啟動伺服馬達打開門。

六、創作:

結合前面的零件組合創作。

--------------------------------------

相關連結:

Arduino初級班課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/93477/605771

Arduino課程準備
http://blog.ilc.edu.tw/blog/blog/868/post/93477/599681

Arduino第一課(概論、連接)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/599732

Arduino第二課(LED)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/599733

Arduino第三課(用鍵盤控制LED)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/600369

Arduino第四課(LED紅綠燈)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/600422

Arduino第五課(pwm)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/600854

Arduino第六課(RGB三色LED)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/600855

Arduino第七課(蜂鳴器)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/602388

Arduino第八課(按鍵)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/602288

Arduino第九課(可變電阻)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/602290

Arduino第十課(光敏電阻)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/602291

Arduino第十一課(伺服馬達)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/605139

Arduino第十二課(離線執行)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/605798

-----------------------------------

Arduino進階班課程目錄

Arduino第十三課(超音波感測器)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/620602

Arduino第十四課(搖桿)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/620718

Arduino第十五課(人體紅外線感測器)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/620975

Arduino第十六課(主動式紅外線感測器)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/621311

Arduino第十七課(繼電器) 
http://blog.ilc.edu.tw/blog/blog/868/post/93477/622442

Arduino第二十課(電腦裡的馬達)
http://blog.ilc.edu.tw/blog/blog/868/post/93477/614292