材料清單
1.機構件 * 1
2.Arduino Nano 開發板 * 1
3.Arduino Nano 擴展板 * 1
2.Arduino Nano 開發板 * 1
3.Arduino Nano 擴展板 * 1
4.28BYJ-48 步進馬達 * 2
5.步進馬達驅動板 * 2
6.SG90 伺服馬達 * 1
7.2節AA電池盒 * 1
8.DC5521 電源插頭 * 1
9.16500 貍電池 * 2
組裝
整體上大致很好組裝,唯一要注意的是畫筆要先固定在固定桿上面,然後 SG90 伺服馬達維持在 90 度的情況下將固定桿鎖緊。
另外,為了避免輪子卡死,在將輪子鎖緊到 28BYJ-48 步進馬達時,要注意輪軸跟馬達固定板應該留一點空隙,約 0.5mm 即可。
調整 SG90 伺服馬達的角度,是為了讓車子行走時畫筆也能夠正確地提筆與下筆。如果沒有調整好伺服馬達轉動的角度,有可能會出現若干狀況,例如畫筆卡住地面影響車子行進,或是畫筆沒有接觸地面以致沒有畫出線條...等等。
測試車子前進、後退的能力
程式採用 Arduino 官方 Stepper 函式庫,經過測試,激磁 512 步可以讓 28BYJ-48 轉動一圈(360度)。
ScratchBot 輪徑為 60mm,如果激磁 5120 步,輪子將會轉動 10 圈。套用公式
圓周長 = 直徑 * Pi
,可以計算出車子會行走如下之距離
車子行走距離 = 60 * 3.1416 * 10 = 1884.96 mm
約 1885 mm。
程式碼
//2016/08/13 輪子各轉10圈,讓車子前進、後退。
#include <Stepper.h>
#include <Servo.h>
const int stepsPerRevolution = 2048;
Stepper mRight(stepsPerRevolution, 2, 4, 3, 5);
Stepper mLeft(stepsPerRevolution, 6, 8, 7, 9);
const int steps = 512;
int laps;
Servo Pen;
void setup() {
mRight.setSpeed(10);
mLeft.setSpeed(10);
Pen.attach(10);
PenDown();
laps = 10;
}
void loop() {
Forward(steps * laps);
Back(steps * laps);
}
void PenDown() {
Pen.write(116);
}
void PenUp() {
Pen.write(90);
}
void Forward(int steps) {
for(int i=0; i < steps; i++) {
mRight.step(-1);
mLeft.step(1);
}
}
void Back(int steps) {
for(int i=0; i < steps; i++) {
mRight.step(1);
mLeft.step(-1);
}
}
void Move(int steps) {
if (steps > 0)
Forward(steps);
else
Back(steps);
}
Upload 上述程式碼到 Arduino,讓 ScratchBot 實際跑一下。用皮尺量一下車子行走的距離,並觀察直線歪斜的程度。
問題
1.如果車子實際行走的距離不等於計算的距離時該怎麼辦?
2.如果原本應該是直線,實際畫出來有偏斜時該怎麼辦?
3.想要畫一條長100mm的直線,程式該怎麼寫?
變更設計
繪圖機構 - 由於繪圖機構目前是整組設置在車體內部,雖然此舉可以讓 ScratchBot 的外觀比較簡潔,但相對地也造成讓玩家不方便更換畫筆。玩家必須先拆開頂板上的螺絲、掀開頂板、取出整組繪圖機構、更換畫筆、放回繪圖機構、蓋上頂板,最後鎖緊螺絲,手續上真是繁雜。
考慮在下一版本將繪圖機構變更到頂板上面,雖然影響車子的外觀,但對於玩家在換畫筆時應該會便利不少。
輪子 - 在測試時發現輪子會打滑,影響繪圖精度。或許應該為輪子加上橡膠外胎,但好像沒有 60 mm 直徑的市售品。雖然市售品有 40mm 的,但如果改成 40mm 的輪子,那麼將會影響到固定在底板下方的電池盒,真是頭痛啊!
有了,繪圖機構組一旦變更位置安裝到頂板上方,那麼在原地方就騰空了,電池盒可以放到那兒,也就可以使用 40mm 的橡膠輪子,這件事情就解決了。
相關連結
控制步進馬達 https://zh.wikipedia.org/wiki/%E6%AD%A5%E9%80%B2%E9%A6%AC%E9%81%94
後記
在用程式調整 SG90 角度時,不慎將 ScratchBot 摔落地上,導致輪子變形損壞,還好後來用快乾膠修復,但已經無法恢復原狀,勢必會影響會圖精度。
沒有留言:
張貼留言