前回に続きSeeedStudio Grove Begineer Kitのモジュールを見てまいります。今回はブザーです。ピエゾブザーにはパッシブとアクティブ2タイプあるのですが、ビギナ・キット付属のモジュールはパッシブです。しかし手元の部品箱を調べたらアクティブ・タイプも出てまいりました。これを鳴らして比べてみることにいたします。
※「部品屋根性」投稿順Indexはこちら
まずはアイキャッチ画像に掲げましたるブザー3個を御覧いただきましょう。左上のモジュールが SeeedStudio社のGrove Beginner Kit付属のパッシブ・ブザー・モジュールです。4ピンのGroveインタフェースで接続するものであります。その横に「転がっている」2個のブザーは、お楽しみの中華部品キットKuman社K4キットに入っていたブザーであります。オレンジ色のタグを貼り付けた方がパッシブ・タイプ、黄色(黄緑?)のタグを貼り付けた方がアクティブ・タイプです。
まずは、Groveモジュールの方の回路を確認しておきましょう。ダウンロードしたSeeed社の回路図を自分で書きなおして(噛みしめた?)ものであります。ピエゾブザーの型番はそこから拾ってきたもの。
前回調べた、Grove LEDモジュールの回路を踏襲した設計です。直接、マイコンの端子でドライブするようなことをせず、MOSFETのドライバで電流を引くようになっています。安全安心?
まず、アクティブ・タイプとパッシブ・タイプの違いを復習しておくと、
-
- アクティブ・タイプのピエゾ・ブザーは内部に発振回路を内蔵している。DC的に電流を流しさえすれば、内蔵回路の発振周波数で「鳴る」
- パッシブ・タイプのピエゾ・ブザーは、外部から与えられた波形で「鳴る」
つまり、アクティブ・ブザーは直流的に電流を流してあげれば鳴るので、Arduinoで駆動するならば、
digitalWirte()
で制御すれば勝手に鳴るわけです。(その周波数は部品にお任せ。部品のデータシートなどに書いてある。)
これに対して、パッシブ・ブザーは交流的に波形を変化させなければならないので、Arduinoで駆動するならば、以下のようなPWM波形を出力するような関数を使わなければ鳴りません。
-
- analogWrite()
- tone()
物は試しで、パッシブ・ブザーにdigitalWrite()でLow->Highしてみると、まったく鳴らないわけではなく、スイッチングの瞬間
プツ
っという音がしますな。でもそれだけ。アクティブ・ブザーであればHighの期間中、ケタタマしく鳴り続けるのですが(元々、装置の警報音などの目的で使われる部品なので、癇に障る甲高い音になるように設定されているのでしょう。)
まずは、Groveのパッシブ・ブザー・モジュールをArduinoのPWM変調波形で駆動してみます。上の回路図とちょっと変えて、Arduino UNOのデジタル3番端子にモジュールを接続して analogWrite()で駆動してみます。analogWrite()は、端子番号とPWM波形のデューティを引数にとるので
analogWrite(3, 128);
で駆動です。100%デューティ時は255、0%時は0なので、上記の設定だと、ほぼ50%の波形が出てくる筈。なお、鳴りやませたいときは、analogWrite(6, 0)で波形はLowに張り付きます。例によって Digilent社Analog Discovery2で得たGroveインタフェースの1番ピンの波形がこちら。
ほぼ490Hzデューティ50%のPWM波形が出力されているように見えます。これはGvoveインタフェースのピンのところの波形でブザーの端子波形ではありませんが、問題のない綺麗な波形じゃないかと思います。なお、ArduinoのanalogWrite()関数は、ボードと端子によって、PWMの周波数が決まるようです。その情報はご本家arduino.ccのリファレンスに書かれています。
今回使用している Arduino UNO(の互換機)の場合、以下のとおりです。
-
- ピン3、9、10、11なら490Hz
- ピン5、6なら980Hz
上の回路図通りにせず、今回はピン3を使っているので490Hzが観測できました。ピン6を使った場合の周波数は後で確かめます。なおtone()関数を使うと制限がありますが、任意の周波数を出力できるようです。
その前に、Groveモジュールを使わず、パッシブ・ブザーをそのままArduinoの端子に直結した場合の波形を確認しておきたいと思います。Kuman社 K4キットの説明書など、ブザーをそのままArduinoの端子に直結し動作させています。どうもこれはK4キットのみの荒業でもなく、「Arduino業界」では普通のようなので。御覧くだされ。
音は結構「爆音」で鳴っていて目的は果たしています。しかし、Groveモジュール接続のときの綺麗な方形波からするとかなりヤバイ感じの波形になっています。やはりピエゾ・ブザー(圧電素子)もインダクタンス成分がかなりあるのじゃないかと思います。お陰で、黄色の実線の波形でも下は-1Vくらいまで振れてしまっています。ArduinoのMCU、Ateml ATMEGA328Pのデータシート的に許される電圧は-0.5Vまでですから、確実に規格を割れています。上の方も実線は5V以下ですが淡い色の線が6V付近まで達しているので、Vcc+0.5Vは多分守れていないでしょう。まあ、ATMEGA328Pは強いマイコンのようなので平気で動いていますが、昔の弱虫なCMOSデバイスだったらどうでしょうかね。
ついでに、PIN3をPIN6に替えて周波数を観察してみました。analogWrite()関数のリファレンスに書かれているとおり、約960Hzで動作しています。早くなって、波形の方も悪化している感じがします。
パッシブ型は、アクティブ型のつもりで駆動しても「プツ」音1回で鳴りはしませんが、逆に、パッシブ型を駆動するPWM波形でアクティブ型を駆動した場合には鳴ります。ただ、PWM駆動周波数と、本来のアクティブ・ブザーの内蔵周波数が「混じって」変な音色になりました。
波形を見るとこんな感じ。
パッシブ型の直接駆動とは異なり、オーバーシュート、アンダシュートはあまり気にならない感じではあります。
ブザーモジュールもWio Terminalに接続してみないとなあ。