2015.11.25
繼上一次修理挖土機,當時候使用0-180度的 MG995-伺服機馬達,根本無法完全的伸縮,過了幾天重買了馬達,這是連續旋轉的MG995,其實外觀沒有差別,唯獨有差的就是內部的齒輪,其中沒有擋片還有控制晶片聽PPM訊號
所有東西都沒有變,只有程式碼更動
------------------------主程式------------------------------------------------
#include <Servo.h>
Servo servo_up;
int pin_up = 7;
int read_up = 9;
int value_up;
int move_up;
Servo myservo;
void setup(){
servo_up.attach(pin_up);
Serial.begin(9600);
pinMode(read_up,INPUT);
}
void loop(){
value_up= pulseIn(read_up, HIGH, 25000);
Serial.println(value_up);
Serial.print(",");
if(value_up >= 1450 && value_up <=1550){
f_move_up(1500);
}
else if( value_up >=1050 && value_up <=1250){
f_move_up(1800);
}
else if (value_up >1250 && value_up <= 1450){
f_move_up(1650);
}
else if( value_up >1550 && value_up <= 1750){
f_move_up(1350);
}
else if(value_up >1750 && value_up <= 2000){
f_move_up(1200);
}
else{
f_move_up(1500);
}
delay(10);
}
-------------------------------------END---------------------------------------
--------------------------------副程式------------------------------------------
void f_move_up(int time){
servo_up.writeMicroseconds(time);
}
-------------------------------------END---------------------------------------
這個程式碼是將訊號讀進來後,一樣做判斷式處理,連續旋轉的伺服馬達是聽「脈衝訊號」,範圍「1000-2000 us」,所以使用副程式、servo library來驅動馬達。
傳入副程式「f_move_up」的「time」就是脈衝訊號長度。
我將讀到的訊號切成四等分,「很慢」、「慢」、「快」、「很快」,這樣遙控時就會有區別;燒入程式後,完成如下影片
相信如果懂得人一定很矛盾,為什麼要這麼麻煩?原本訊號就是聽PPM 那就可以直接連接馬達,不用多轉一次訊號
有兩個原因:
第一:原本想要設定極限值,這樣馬達就不會過轉,最後把軸弄斷,如影片第一軸已經斷了
第二:因為我忘記了,做完成功才想到......哈哈哈哈哈
最後一章就是修改遙控器的,因為發現慣用模式不一樣,所以需要修改,請連接:
挖土機維修-(三) 修改遙控器(FS-CT6B)