PR

Arduino+モータードライバ(DRV8876)でDCモーターの回転制御

記事内に広告が含まれています。

 モータードライバ基板(DRV8876モジュール)を使用してDCモーターの回転制御を行ってみました。使い方を簡単にまとめておきます。

スポンサーリンク

概要

入手したDRV8876モジュール

 pololuのドライバ基板。

動作条件など

モーターチャンネル一つ
電源電圧4.5~37v
論理入力電圧最大5.5v
最大連続電流1.1A
瞬間最大電流2.0A
電流センサ出力2500mV/A
PWM周波数最大100kHz

 電流センシングが気になります。

準備(ピン配置、回路、ソース)

ピン配置

 phase/enableモードで使いそうなピンのみ説明します。

ピン説明
VIN4.5~37v入力
GND
VMシステム内の他のデバイスに逆方向保護された電力を供給
OUT1モーター出力1
OUT2モーター出力2
ENPWM信号を入力(速度制御)
PH正転/逆転(方向ピン)
PMODEHIGH:PWMモード LOW:phase/enableモード
~SLEEPLOW:低電力スリープモード
CS電流センシング

Arduinoと結線(回路図)

 PMODEピン:LOWでphase/enableモード。ENピンにPWM信号。PHピンに2番ピンで回転方向。CSピンにArduinoA0ピンを接続して電圧(電流)測定します。

 ブレッドボードで繋いでます。ArduinoにはPCからUSBで5v給電。モーターへは安定化電源から6.6vを給電してます。

スポンサーリンク

ソースコード

uint32_t raw;
float current;
float vol;

void setup() {
  Serial.begin(9600);
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
}

void loop() {
  analogWrite(6, 100);
  raw = 0;
  for (int i = 0; i < 1000; i++) {
    raw += analogRead(A0);
    // delay(1);
  }
  vol = 5.0 * (raw / 1000.0) / (1 << 10);
  Serial.println(vol, 3);
  delay(3000);
  digitalWrite(2, !digitalRead(2));
}

 おおよそ3秒おきに回転方向を反転。シリアルモニタで電圧値を表示させているスケッチです。このスケッチ書き込んで稼働確認してみました。

稼働確認

 問題無く回転しました。電流センサーもきちんと動いてる感じ。

 リアクションホイールに使用するモーターをDCモーターにするかBLDCモーターにするか悩んでいるところです。

コメント

タイトルとURLをコピーしました