寫Arduino控制程式 3
日記:
今天知道Arduino不能夠同時使兩個馬達作動,於是今天將馬達的控制程式改成有順序的動作,達成利用Arduino控制兩個馬達,但在測試的過程發現懸盤上的馬達在手臂伸出去後沒辦法收回來,原因可能是馬達的力量不夠,目前有兩個方案:(1).減速機 (2)馬達變更為可控制角度的馬達。
減速機優點:
1.提高馬達的輸出力。 2.加長手臂移動的時間,控制馬達運轉時間的方法會更精確。 3.馬達到定位後受慣性和重力的影響會變小,因為馬達本身的阻尼透過減速機會變大。
缺點:
複雜
更換馬達優點:
用了可以解決大部分問題
缺點:
目前沒想到
應該是利用第二種方案的可能性比較大,還沒有決定好。
備註:
1.今天將控制兩個馬達的程式完成 ( 程式1 ),若採用減速機來解決馬達輸出力不足的問題,這套就接上旋盤旋轉的程式完成。
2.若採用更換馬達來解決馬達輸出力不足的問題,會在新增角度控制的程式到程式中,還沒有寫出來。
程式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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #include <Servo.h>
Servo myservo1;
Servo myservo2;
void setup()
{
Serial.begin(9600);
myservo1.attach(9);
myservo2.attach(10);
}
void loop()
{
int d;
int e;
//att.write(90);
myservo1.write(90); //啟動時固定
myservo2.write(90); //啟動時固定
if(Serial.available()){
d = Serial.parseInt();
Serial.println(d);
if(0 <= d && d <= 130){
//e=1000*asin(d/130)*180/PI/144; //將輸入的距離轉換成需要旋轉的時間
myservo1.write(175); //1固定正轉
delay(250); //旋轉此時間會讓馬達與安裝面垂直
myservo1.write(5); //慣性補正
delay(10);
myservo1.write(91); //引力補正
delay(1000);
myservo2.write(175); //2固定正轉
delay(250); //旋轉此時間會讓馬達與安裝面垂直
myservo2.write(5); //慣性補正
delay(10);
myservo2.write(91); //引力補正
delay(1000);
myservo2.write(175); //2固定正轉
delay(375); //正轉移動到目的地所需的時間
myservo2.write(5); //慣性補正
delay(10);
myservo2.write(91); //引力補正
delay(1000);
myservo1.write(175); //1固定正轉
delay(375); //正轉移動到目的地所需的時間
myservo1.write(5); //慣性補正
delay(10);
myservo1.write(89); //引力補正
delay(1000);
myservo1.write(5); //固定反轉
delay(375); //反轉相同時間復歸
myservo1.write(5); //固定反轉
delay(270);
myservo2.write(5); //固定反轉
delay(e); //反轉相同時間復歸
myservo2.write(5); //固定反轉
delay(270);
}
}
}
|
結語:
手臂總算有一個能夠控制的程式出來了,等到輸出力不足的問題解決後測試的手臂就算完成了,接下來就可以依使用尺寸做一個實際使用的手臂。
Comments
comments powered by Disqus