66章:高品位DC12Vブラシ付モータPWN10EB12CBのサーボ制御

    作成2016.02.12

     高品位DC12Vブラシ付モータPWN10EB12CBのサーボ制御について検討します。

  1. 高品位DC12Vブラシ付モータ購入先と価格
    *購入先:秋月電子通商
    *品名:高品位DC12Vブラシ付モータ PWN10EB12CB
    *価格:¥300
     高品位DC12Vブラシ付モータPWN10EB12CBの詳細仕様は下記を参照します。
    [66-1.pdf]をダウンロードする。
    *起動電流が小さいため、制御しやすいDCモータです。


  2. モータードライバー TA7291P (2個入)購入先と価格
    *購入先:秋月電子通商
    *品名:モータードライバー TA7291P (2個入)
    *価格:¥300
     モータードライバー TA7291P (2個入)の詳細仕様は下記を参照します。
    [66-2.pdf]をダウンロードする。
    *高品位DC12Vブラシ付モータPWN10EB12CBの制御に適しています。


  3. ベルト式変速機構の外観
     ベルトのかわりに輪ゴムを使用しました。ベルト式変速機構の外観を以下に示します。





  4. エンコーダ部外観
     エンコーダはt0.5mmのアルミ板で作成しました、外観を以下に示します。





  5. スリップリング部外観
     スリップリングを使用してLEDを点灯します、スリップリング部外観を以下に示します。





  6. 全体外観
     全体外観を以下に示します。





  7. PWN10EB12CBサーボ制御回路図
     PWN10EB12CBサーボ制御回路図を以下に示します。





  8. Arduinoスケッチ
     Arduinoスケッチは以下となります。
    //DC_Servo
    #include <stdlib.h>
    int PS1B;
    int gPC_T,gPC_N;
    
    char inputString[50]; 
    boolean stringComplete = false;  // whether the string is complete
    
    int gi=0;
    
    void setup() 
    {
      Serial.begin(9600);
    
      pinMode(2, OUTPUT);
      pinMode(3, OUTPUT);
      pinMode(4, INPUT);
      pinMode(5, INPUT);
      gPC_T=0;
      gPC_N=0;
      PS1B=digitalRead(4);
    }
    
    // the loop function runs over and over again forever
    void loop() 
    {
      String str;
      int PS1=digitalRead(4);
      int PS2=digitalRead(5);
      long T1,T2;
      long DPC=gPC_T-gPC_N;
      if( DPC > 0)
      {
        T1=DPC*400;
        if(T1 > 1000){T1=1000;}
        T2=1000-T1;
        digitalWrite(2,LOW);
        digitalWrite(3,HIGH);
        delayMicroseconds(T1);
        digitalWrite(2, HIGH);
        digitalWrite(3, HIGH);
        delayMicroseconds(T2);
      }
      else
      {
        T1=(1-DPC)*400;
        if(T1 > 1000){T1=1000;}
        T2=1000-T1;
        digitalWrite(2, HIGH);
        digitalWrite(3, LOW);
        delayMicroseconds(T1);
        digitalWrite(2, HIGH);
        digitalWrite(3, HIGH);
        delayMicroseconds(T2);
        
      }
    
      str=String(gPC_T)+"  "+String(gPC_N);
    
      if(PS1B==HIGH)
      {
        if(PS1==LOW)
        {
          PS1B=LOW;
          if(PS2==HIGH)
          {
            gPC_N++;
            Serial.println(str);
          }
          else
          {
            gPC_N--;
            Serial.println(str);
          }
        }
      }
      else
      {
        if(PS1==HIGH)
        {
           PS1B=HIGH;
           if(PS2==LOW)
          {
            gPC_N++;
            Serial.println(str);
          }
          else
          {
            gPC_N--;
            Serial.println(str);
          }
        }
      }
      if (stringComplete)
      {
        //Serial.println(inputString);
        gPC_T = atoi(inputString);
        gi=0;
        stringComplete= false;
      }
    }
    
    void serialEvent() 
    {
      
      while (Serial.available()) 
      {
        char inChar = (char)Serial.read();
        inputString[gi]=inChar;
        if (inChar == '\n')
        {
          stringComplete = true;
          inputString[gi-1]=0;
        }
        gi++;
      }
    }
    


  9. Arduinoスケッチ_テキストファイル
     Arduinoスケッチ_テキストファイルは以下から参照できます。
    Arduinoスケッチ_テキストファイルにいく



  10. 操作方法
    (1)シリアルモニターを開きボーレート9600bpsに設定します。
    (2)CRおよびLFを選択します。
    (3)送信テキストボックスに20を入力して送信ボタンを押します。
    *DCモータが回転して以下の結果が表示されます。
    20 0
    20 1
    20 2
    20 3
    20 4
    20 5
    20 6
    20 7
    20 8
    20 9
    20 10
    20 11
    20 12
    20 13
    20 14
    20 15
    20 16
    20 17
    20 18
    20 19
    20 20
    20 21
    20 22
    20 21
    20 20


  11. サーボ制御のポイント
     サーボ制御のポイントは「目標値-現在値」の値の大きさに応じてどのような制御をするか?ということになります。
     一般的なアナログ制御では駆動電圧を線形でフィードバック制御するのが一般的ですが、駆動電圧を変化させるのは面倒なので、駆動時間制御します。
     「目標値-現在値」と駆動時間の関係は必ずしも線形にする必要はありません。
     本例では以下の関係で制御しました。



     図66-6に示す制御においては、駆動時間がゼロとなることはなく、常に振動状態となります。振動中心は0と1の中間点となります。


  12. 高品位DC12Vブラシ付モータPWN10EB12CBのサーボ制御まとめ
    (1)高品位DC12Vブラシ付モータPWN10EB12CBは起動電流が小さく、制御しやすいDCモータでした。
    (2)ベルト式変速機構のベルトは輪ゴムで十分でした。
    (3)エンコーダはt0.5mmのアルミ板で十分でした。
    (4)手作りのスリップリングもうまく動作しました。
    (5)手作りのスリップリング等摩擦の大きい機構ですが、図66-6に示す制御条件でうまく制御できました。




67章:MPU-6050 使用 3軸ジャイロ・加速度センサーの低コスト回路:に行く。

トップページに戻る。