🚀

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

2022/12/02に公開

はじめに

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

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

https://youtu.be/Jdg-V5q8itQ

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

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

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

使ったもの


A. Arduino UNO
B. Adafruit DRV2605L 触感フィードバックモジュール, ピンヘッダ
C. Mini vibration motor 2.0mm
D. ジャンプワイヤ(メス-メス) 2本
E. ジャンプワイヤ(オス-オス) 1本
F. ジャンプワイヤ(オス-メス) 6本
ジャンプワイヤは色数が多い種類がオススメ
G. ブレッドボード

SparkFun版とAdafruit版


DRV2605Lには、SparkFun版とAdafruit版があります。この2種類は配線の仕方が少し違いますが、同じコードで動きます。僕は最初Adafruit版を使っていましたが、度々上の図のように導線が千切れてしまったので、SparkFun版に乗り換えました。今回の記事でもSparkFun版について話をします。

手順

1. はんだづけ

1.1. ピンヘッダをDRV2605Lに固定する


DRV2605Lを購入すると、上の図のような状態で届くので、ピンヘッダとはんだづけする必要があります。

  • ピンヘッダをニッパーで切断して4連続つながっているようにします
  • DRV2605Lにさしてはんだづけで固定します
  • ピンヘッダを基板にはんだづけする方法は、こちらの動画がわかりやすいです

1.2. 振動モータとジャンプワイヤ(メスーメス)をつなげる

ジャンプワイヤ(メス-メス)をニッパーで真っ二つにします。

それぞれの切り口をクリンピングプライヤーでゴム部分を剥き、銅線を剥き出しにします

切断したジャンプワイヤと振動モータをはんだづけします。本当はツールクリップを使うと便利なのですが、今回はなかったのでマスキングテープで固定するというずさんな方法を取りました。

下の図のようになったら完成です。

ただし、2本の剥き出し部分がぶつかると通電して振動しなくなるので、マスキングテープで剥き出し部分を隠すようにしました(※これも絶縁テープや収縮チューブの方を使った方がいいです)。まず赤の方の接合部にマスキングテープを巻いてから、全体にマスキングテープを巻きました。全体に巻いたのは、簡単に振動モータとジャンプワイヤの接合部が千切れないようにするためです。

2. Arduinoと接続

下の図ように配線します。この図だけだと見づらいので、

2.1. DRV2605L・Arduino・ブレッドボード

図左のように6本のジャンプワイヤ(オス-メス)のメス部分をDRV2605Lに接続します。そして、残りのオス部分をArduinoとブレッドボードに挿します。

そして、Arduinoの5Vにジャンプワイヤ(オス-オス)の片方を挿して、もう片方をブレッドボードに挿します。

3. ライブラリのインストール

  • 画面左上にある「スケッチ」を押して、「ライブラリをインクルード」を押します
  • 「Adafruit DRV2605 Library」をインストールします
    • 「DRV」と検索すると、すぐ出てきます

4. サンプルコードを動かす

公式が提供しているサンプルコードbasicrealtimeについて話します。コード全体を貼ると記事が長くなるので、一部を切り取って解説します。

公式サンプルコード
https://github.com/adafruit/Adafruit_DRV2605_Library/tree/master/examples

4.1. basic

  // set the effect to play
  drv.setWaveform(0, effect);  // play effect 
  drv.setWaveform(1, 0);       // end waveform

  // play the effect!
  drv.go();

4.2. realtime

drv.setRealtimeValue(0x00);
delay(1000);

5. おわりに

今回は、モータドライバ「DRV2605」の使い方についてまとめました。

このモータドライバで扱う振動子は振動モータですが、振動による触覚フィードバックを与える振動子にはスピーカー型のものがあります。次回は、スピーカー型振動子についてまとめたいと思います!

参考記事

https://learn.sparkfun.com/tutorials/haptic-motor-driver-hook-up-guide/all
https://github.com/sparkfun/Haptic_Motor_Driver

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


※これは2022年のものです

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

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

著者プロフィール

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

Discussion