スポンサーリンク

ArduinoとBTS7960ドライバで775モーターを制御する

bts7960モータードライバ電子工作

Amazonで買えるBTS7960モータードライバをArduinoに接続、DCモーターを速度制御してみたのでやり方を紹介したいと思います。

スポンサーリンク

BTS7960モータードライバとは

BTS7960正面画像

DCモーターをPWMで速度制御できる汎用基盤です。電源が直流6~27Vのモーターに使用可能。
簡単に説明すると、モータードライバ無しで電源を繋げただけのDCモーターは1方向で無負荷で定速回転しかしませんが、モータードライバを使うことで回転方向と速度の制御ができるようになります。

仕様

入力電圧6 ~ 27 VDC
最大電流43 Amp
PWM周波数最大25kHz
制御入力電圧3.3 ~ 5 V
制御モードPWM又はレベル

データシートより抜粋

https://www.handsontec.com/dataspecs/module/BTS7960%20Motor%20Driver.pdf

制御入力

Pin機能説明
1RPWM右回転レベル又はPWM信号入力
2LPWM左回転レベル又はPWM信号入力
3R_EN右回転 動作有効 (High 有効、Low無効)
4L_EN左回転 動作有効 (High 有効、Low無効)
5R_IS右回転動作 電流アラーム
6L_IS左回転動作 電流アラーム
7Vcc+5V
8Gnd接地






スポンサーリンク

準備したもの

775モーター、BTS7960モータードライバ、ELEGOO UNO、ハーネス

BTS7960モータードライバ

Arduino UNO

以前購入したELEGOOの入門キットを使用

775モーター

今回電源は12Vで使用。私が使っている物はAliExpressで買った遊星歯車減速機付き。

ボリューム 10k ohm





スポンサーリンク

BTS7960モータードライバでモーターを回してみる

接続図

BTS7960とAruduino UNO、モータ接続図

BTS7960とAruduino UNOを上図のように接続。
BTS7960側は[R_PWM], [L_PWM], [R_EN], [L_EN]の4点のみ、[Vcc]と[GND]は接続不要です。
Arduino側は10から13番ピンのデジタルアウトプット、Arduinoの電源はUSB接続にしました。

プログラムコード

一からプログラムして出力を出すこともできますが、GitHubにライブラリデータがあったのでこちらを使用しています。

ダウンロードして解凍したフォルダ [ BTS7960Library-master ] を [ AruduinoIDEインストール先 / libraries ]内に保存して使用します。


サンプルコード

#include "BTS7960.h"

//ピン番号設定 BTS7960(uint8_t RPWM,uint8_t LPWM,uint8_t L_EN,uint8_t R_EN)
BTS7960 m1(10,11,12,9);



void setup() {
}

void loop() {

  //BTS7960 Motordriver 有効
  m1.enable();

  //正転 最大速度まで加速
  for(int speed = 0 ; speed < 255; speed++) m1.setSpeed(speed);
  // 逆転 最大速度まで加速
  for(int speed = 255 ; speed > -255; speed--) m1.setSpeed(speed);

  // モーター停止, m1.setSpeed(0)と同様
  m1.stop();

  m1.disable();



}

ライブラリデータのExampleに使い方の説明がありましたので日本語でコメント書いてみました。




モーター正転加速➡減速➡逆転加速➡減速を繰り返すプログラム

#include "BTS7960.h"

//BTS7960(uint8_t RPWM,uint8_t LPWM,uint8_t L_EN,uint8_t R_EN)
BTS7960 m1(10,11,12,13);


void setup() {
}

void loop() {

  //enable the BTS7960 Motordriver
  m1.enable();

  //increase to fullspeed
  for(int speed = 0 ; speed < 255; speed++) {
    delay(50); 
    m1.setSpeed(speed);
  }
 
  // decrease speed to full backwards
  for(int speed = 255 ; speed > -255; speed--){
    delay(50); 
    m1.setSpeed(speed);
  }

  for(int speed = -255 ; speed < 0; speed++) {
    delay(50); 
    m1.setSpeed(speed);
  }
 delay(1000); 

}

とりあえずモータードライバが動くか試すために上記コードを書き込んでみました。
ArduinoIDEにライブラリデータを入れてコピペで書き込めば動きます。




スポンサーリンク

ボリュームのつまみでモーターの回転方向と速度制御する

接続図

Arduino UNO, BTS7960, 775モーター, 10kohmボリューム

A0への入力に10kΩのボリュームを追加。
ボリュームで回転方向と速度を制御するように作ってみます。

プログラムコード

#include "BTS7960.h"

//BTS7960(uint8_t RPWM,uint8_t LPWM,uint8_t L_EN,uint8_t R_EN)
BTS7960 m1(10,11,12,13);

const int VOL = A0;

void setup() {


}

void loop() {

    int ad;
    int speed;

    ad = analogRead( VOL );

    speed = ad * 510.00 / 1023 - 255.00 ;

  //enable the BTS7960 Motordriver
  m1.enable();
  m1.setSpeed(speed);


}

A0でAD変換された値 [ad] はボリュームを右いっぱいに回すと1023、左いっぱいで0が入ってきます。
速度設定 [speed] は-255で左回転最高速度、0で停止、+255で右回転最高速度となるのでボリュームがセンターの位置で0、左いっぱいで-255、右いっぱいで+255となるように計算式を書いてボリュームのつまみでモーターの回転方向と速度が制御できるようになりました。

ライブラリを使うと簡単です。

ご参考まで。

コメント

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