📖

【Arduino】小型振動モータをモータドライバDA7280で動かす

2022/12/01に公開

はじめに

ZAWAWORKSアドベントカレンダー2022、1日目の記事です!

以前、振動モータを用いて「イケメンを見ると子宮が疼く装置」を開発しました。

https://youtu.be/Jdg-V5q8itQ

ただこのとき振動モータはON・OFFをしているだけで、振動の強さや周波数は制御できていません。それらを制御するには、モータドライバを使えばいいことに後々気づきました。

今回は、改めてモータドライバを用いた振動モータの制御方法をまとめます!

ちなみに僕が使ったことがあるモータドライバは「DA7280」と「DRV2605L」の2種類です。今回は「DA7280」についてまとめ、2日目には「DRV2605L」についてまとめます。

今回使った部品


A. Arduino UNO
B. DA7280搭載 触覚フィードバックドライバキット
C. ジャンプワイヤ オス-メス(色数が多いジャンプワイヤがオススメです)
D. ピンヘッダ

はんだづけ

DA7280搭載触覚フィードバックドライバキットは、部品がバラバラな状態なため、自分ではんだ付けする必要があります。

まず振動モータとモータドライバを接着します。

次にモータドライバにピンヘッダをはんだづけします。
その前に、購入したピンヘッダをニッパーで切断し、1つだけのものと、8つ連続で繋がっているものの2種類を用意します。
切った勢いでピンヘッダが飛んでしまうので、左手で抑えながら切るといいです。ちなみにピンヘッダが飛ぶのを抑えるときに人差し指が痛くなるので、自分はいつもグローブをつけています。

そして、ブレッドボードを使ってモータドライバにピンヘッダをはんだづけします。

以下の画像のようになれば完成です。

配線図

以下のように配線をしてください。

コード

ライブラリの導入

こちらをPCの「書類(Documents)」の中にある「Arduino > libraries」のフォルダの中で、ZIPファイルをダウンロードして展開してください。(Gitが使える方はgit cloneしてください)
https://github.com/sparkfun/SparkFun_Qwiic_Haptic_Driver_DA7280_Arduino_Library

サンプルコード

公式のGitHubから拝借しました。
本家は英語のコメントを書いてありましたが、DeepLの力で和訳しました。

#include <Wire.h>
#include "Haptic_Driver.h"

Haptic_Driver hapDrive;

int event = 0; 

void setup(){

  Wire.begin();
  Serial.begin(115200);

  if( !hapDrive.begin())
    Serial.println("Could not communicate with Haptic Driver.");
  else
    Serial.println("Qwiic Haptic Driver DA7280 found!");

  if( !hapDrive.defaultMotor() ) 
    Serial.println("Could not set default settings.");

  // 周波数トラッキングは、ICがモーターの共振周波数を確認するために行っています。
  //PCBを制限する(絞る)とエラーが発生し、共振に至らないため動作が停止することがわかりました。
  //このエラーを回避するために、ここを無効にしています。
  hapDrive.enableFreqTrack(false);

  Serial.println("Setting I2C Operation.");
  hapDrive.setOperationMode(DRO_MODE);
  Serial.println("Ready.");

  delay(1000);

}

void loop(){

  // 頻繁にアップロードすると、Haptic Driver ICがフォルトを投げます。
  // 念のため、そのエラー(0x10)を解除しておきましょう。
  //event = hapDrive.getIrqEvent();
  //Serial.print("Interrupt: ");
  //Serial.println(event, HEX);
  //Serial.println("Clearing event.");
  //hapDrive.clearIrq(event);

  // 最大値は127です。
  hapDrive.setVibrate(25);
  delay(500); 
  hapDrive.setVibrate(0); 
  delay(500);

}

おわりに

今回は、モータドライバ「DA7280」の使い方についてまとめました。次回は、「DRV2605L」についてまとめたいと思います!

宣伝|大阪の梅田で展示会を開催します!


※これは2022年のものです

12/22(木)~12/25(日)に、まるでリア充のような体験ができる「バーチャルリアジュウ展」を開きます!
電子工作やVRで、あなたを「バーチャルリア充(ほぼリア充)」に変えます!

クリスマスシーズン、時間に余裕がある方はぜひお越しください!

著者プロフィール

ZAWA WORKS
モテない理系男子の末路。妄想を叶える装置を日々開発中。

Discussion