解決手臂動力問題
日記:
今天決定了動力不足的解決方案,選擇的方案是更換馬達,原因是因為可以迅速的解決問題。於是便將除了驅動旋盤的馬達外全部換成一般型的伺服馬達。控制程式找了別人寫的馬達控制程式修改,還沒有改完。
原本打算嘗試看看減速機,但可能會多花很多時間,之後可能會再找時間看看。
今天還想了一套只用一個馬達的夾取手臂,最後因為更換馬達的決定而放棄這個方案沒有做出來。
今天還看了看研究室裡名叫創意性機構設計分析的書,覺得我先前做試的順序有很多問題,還沒有整理出來。
新手臂構想:
做一個四連桿,曲桿和搖桿等長,再將連接桿延長安裝夾頭,用馬達去驅動曲桿來控制。
初始位置為曲桿垂直地面,夾取位置為[ rsinT+C , r - rcosT +C ] T為角度,C為補正。
構想圖
備註:
1.伺服馬達是在虎尾的無名電子買的。
別人寫的馬達控制程式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | #include <Servo.h>
Servo servoLeft; // 宣告左邊伺服馬達
Servo servoRight; // 宣告右邊伺服馬達
void setup() {
servoLeft.attach(10); // 將 Pin 10 指定為左邊伺服馬達
servoRight.attach(9); // 將 Pin 9 指定為右邊伺服馬達
}
void loop() {
initial(); // 馬達位置歸零
delay(2000); // 執行後停止兩秒
same_degree(); // 左右伺服馬達同樣各轉30度
delay(2000); // 執行後停止兩秒
initial(); // 馬達位置歸零
delay(2000); // 執行後停止兩秒
dif_degree(); // 左伺服馬達轉30度,右伺服馬達轉150度
delay(2000); // 執行後停止兩秒
}
void initial(){
servoLeft.write(0);
servoRight.write(0);
}
void same_degree() {
servoLeft.write(30);
servoRight.write(30);
}
void dif_degree() {
servoLeft.write(30);
servoRight.write(150);
}
|
來源:
修改後的程式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
void setup() {
servo1.attach(8);
servo2.attach(9);
servo3.attach(10);
}
void loop() {
initial(); // 馬達位置歸零
delay(2000); // 執行後停止兩秒
same_degree(); // 伺服馬達同樣各轉40度
delay(2000); // 執行後停止兩秒
initial(); // 馬達位置歸零
delay(2000); // 執行後停止兩秒
dif_degree(); // 伺服馬達同樣各轉90度
delay(2000); // 執行後停止兩秒
}
void initial(){
servo1.write(0);
servo2.write(0);
servo3.write(0);
}
void same_degree() {
servo1.write(40);
servo2.write(40);
servo3.write(40);
}
void dif_degree() {
servo1.write(90);
servo2.write(90);
servo3.write(90);
}
|
結語:
發現自己的思考有很多問題,有點混亂、挫折,想整理整理,看看書。
Comments
comments powered by Disqus