Kondo servo motor with arduino

0 nhận xét

Summary:

Kondo サーボモータ KSR シリーズはPWM/Serial制御により角度を制御することができます.
      Fig. 1 Kondo servo motor KSR シリーズ と Arduino Mega マイコン 

今回はSerial通信でモータの角度制御およびモータから,角度データを取得する方法について紹介したいと思います.汎用性が高いArduino のマイコンボードを使います.

KSRシリーズでは ICS3.5の通信規格が採用されています.詳しくは製品のホームページを参照してくだい
http://kondo-robot.com/faq/ics3_5-command-reference

マイコンとサーボモータを接続するため,インターネットで検索すると3ステートバッファを採用した事例もありますが,私は今回3ステートバッファを使わない方法を紹介します.
 接続回路は次の図のようになります.

Fig.2  Servo motor と arduino mega の接続
Arduino Uno も使用できますが,送信データと受信データが混じらないようにarduino megaを使います.Serial3からパソコンにデータを送信するために,USB-serial変換モジュールを利用します.
Arduinoのプログラムは次のようになります.(マイコンに送信する時,rx0を外してください)

void setup() {
  Serial.begin(115200,SERIAL_8E1);
  Serial3.begin(115200);
   delay(500);
}
int k=-5;
byte buf[3];
char buf_1[6];
int target_angle=9000;//-135  0  135 deg-> (3500 7500  11500)に相当する.
int incomingByte[6];
void loop() {
  buf[0]=0b10000000;

  buf[1]=(target_angle>>7)&0x7f;
  buf[2]=target_angle&0x7f;
 Serial.write(buf,3);//角度を指令する
 Serial.flush();
   if (Serial.available() > 0) {
     for (int n=0;n<6;n++){
       incomingByte[n]=Serial.read();
     }
   }
  delay(1);
  int angle =(incomingByte[4]<<7)|incomingByte[5];//受信したデータを角度に変換する.

  Serial3.print(angle);
  Serial3.print("\t");
  Serial3.print(target_angle);
  Serial3.print("\n");
  target_angle+=k;
  if(target_angle<3600){
    k=5;
  }
  else if (target_angle>10000){
    k=-5;
  }
  delay(20);
}



Facebook Comments
Blogger Comments
Share knowledge

Copyright © 2016 - Share knowledge ®