【Arduino】小型振動モータをモータドライバDRV2605Lで動かす
はじめに
ZAWAWORKSアドベントカレンダー2022、2日目の記事です!
以前、振動モータを用いて「イケメンを見ると子宮が疼く装置」を開発しました。
ただこのとき振動モータは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と接続
下の図ように配線します。この図だけだと見づらいので、
DRV2605L
・Arduino・ブレッドボード
2.1. 図左のように6本のジャンプワイヤ(オス-メス)のメス部分をDRV2605L
に接続します。そして、残りのオス部分をArduinoとブレッドボードに挿します。
そして、Arduinoの5V
にジャンプワイヤ(オス-オス)の片方を挿して、もう片方をブレッドボードに挿します。
3. ライブラリのインストール
- 画面左上にある「スケッチ」を押して、「ライブラリをインクルード」を押します
- 「Adafruit DRV2605 Library」をインストールします
- 「DRV」と検索すると、すぐ出てきます
4. サンプルコードを動かす
公式が提供しているサンプルコードbasic
とrealtime
について話します。コード全体を貼ると記事が長くなるので、一部を切り取って解説します。
公式サンプルコード
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();
- 既存の振動方法があるので、effectの値を変えることでさまざまな種類の振動をすぐに実装できます
- サンプルコード全部見たい方はこちら
https://github.com/adafruit/Adafruit_DRV2605_Library/tree/master/examples/basic
4.2. realtime
drv.setRealtimeValue(0x00);
delay(1000);
- 直接に振動する値を打ち込んで、振動させます
- サンプルコードではchar型の16進数を使っていますが、int型でも動きます
- サンプルコード全部見たい方はこちら
https://github.com/adafruit/Adafruit_DRV2605_Library/tree/master/examples/realtime
5. おわりに
今回は、モータドライバ「DRV2605」の使い方についてまとめました。
このモータドライバで扱う振動子は振動モータですが、振動による触覚フィードバックを与える振動子にはスピーカー型のものがあります。次回は、スピーカー型振動子についてまとめたいと思います!
参考記事
宣伝|大阪の梅田で展示会を開催します!
※これは2022年のものです
12/22(木)~12/25(日)
に、まるでリア充のような体験ができる「バーチャルリアジュウ展」を開きます!
電子工作やVRで、あなたを「バーチャルリア充(ほぼリア充)」に変えます!
クリスマスシーズン、時間に余裕がある方はぜひお越しください!
著者プロフィール
ZAWA WORKS
モテない理系男子の末路。妄想を叶える装置を日々開発中。
Discussion