SSブログ

モータードライバでモーターを動かしてみる。PLLで。 [Arduino]

さて、ATtiny25/45/85 には、外付けのクリスタルがなくても高速なPWMを出力できるモードがありました。
これは動作クロックとは別で、64MHz(低電圧時は32MHzのモードを使用)まで行けます。
PLL (Phase Locked Loop) というらしい。
ここまで高速ではなくてもいいですが、Timer0を空けるために、Timer1をつかうのでこのモードを使ってみました。
これで前回と同様なものに仕上がったはず。

// モータードライバ(BD6211F)のテスト (ATtiny45 1MHz版, PLL)
//    FIN   RIN   VREF  OUT1  OUT2
//     L     L     x     HiZ   HiZ   スタンバイ
//     H     L     VCC   H     L     正転
//     L     H     VCC   L     H     逆転
//     H     H     x     L     L     ブレーキ(停止)
//     PWM   L     VCC   H    #PWM   正転(PWM制御A)
//     PWM   H     VCC   L    #PWM   逆転(PWM制御B)(PWM duty比と出力が逆になる)

#define  BD6211F_FIN      1                  // OC1A
#define  BD6211F_RIN      0

void setup() {
  pinMode( BD6211F_FIN ,     OUTPUT );       // OC1A
  pinMode( BD6211F_RIN ,     OUTPUT );
  // 20-100kHzほどのPWMを作成
  PLLCSR = _BV(LSM) | _BV(PCKE) | _BV(PLLE);      // 非同期低速PLL動作 (32MHz)
  TCCR1  = _BV(PWM1A) | _BV(COM1A1) | _BV(CS11);  // 2分周
  OCR1C  = 255;                                   // 62.5kHz (32MHz/2分周/256clk)  
}

void loop() {
  int motorPWM;             // モーターの出力
  // ■正転(PWM制御A) スピードアップ
  for( motorPWM = 1; motorPWM < 16; motorPWM++) { 
    OCR1A =  motorPWM * 17; 
    digitalWrite( BD6211F_RIN , LOW      );
    delay( 1000 );
  }
  // ■ブレーキ(停止)
  OCR1A = 255;
  digitalWrite( BD6211F_RIN , HIGH );
  delay( 2000 );
  // ■正転(PWM制御A) スピードダウン
  for( motorPWM = 15; motorPWM > 0; motorPWM--) { 
    OCR1A =  motorPWM * 17; 
    digitalWrite( BD6211F_RIN , LOW      );
    delay( 1000 );
  }
  // ■逆転(PWM制御B) スピードアップ
  for( motorPWM = 1; motorPWM < 16; motorPWM++) { 
    OCR1A =  255 - motorPWM * 17; 
    digitalWrite( BD6211F_RIN , HIGH     );
    delay( 1000 );
  }
  // ■スタンバイ
  OCR1A = 0;
  digitalWrite( BD6211F_RIN , LOW  );
  delay( 2000 );
  // ■逆転(PWM制御B) スピードダウン
  for( motorPWM = 15; motorPWM > 0; motorPWM--) { 
    OCR1A =  255 - motorPWM * 17; 
    digitalWrite( BD6211F_RIN , HIGH     );
    delay( 1000 );
  }  
}

これで、Arduinoの時間系の関数を使えるはず、、。

bd6411test_circ.jpg
回路は前回のそのままで。

しかし、また別に新たな問題が発覚しました。また次回。
タグ:モーター PLL
nice!(1)  コメント(0)  トラックバック(0) 

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。