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)