2024年4月22日月曜日

安価なアンプICモジュールの使用感や音の違いを比べてみる

別のことで時間を使っていたために少し前のことになりますが、以前から取り組んでいたアンプICモジュールを使ったいろいろな実験の続きです。これまでは、安価なアンプICモジュールとしては定番とも言えるPAM8403Datasheet←PDF)が使われているものを主に使用していました。
#私が使っているものは、Amazonで見つけたかなり安価なアンプICモジュールで、6個入り999円(1個約167円)でした。

Amazonでは、PAM8403の他にも似たようなアンプICを使ったモジュールが販売されていて、使用感や音の違いを調べてみたいと思いました。今回購入したものは、PAM8610Datasheet←PDF)とTDA2822Mのそれぞれを載せたアンプICモジュールです。

PAM8403のときは、USB電源から5Vを供給していましたが、今回の2つを使うにあたって、電圧の違いによって動作が変化するのかも確認しようと思いました。そこで、かなり以前に購入していたYAZAWA(YZW)のACM1000という出力電圧を変えられるACアダプタがあったので、これを使って確認することにしました。ということで、比べてみた感想をまとめておきます。音源は、Linux Mintで動かしている自作PCからYouTubeの検証系動画で使われている音源を使いました。

〈PAM8403〉

  • 増幅された音量は、今回比べた3つの中で真ん中くらい。
  • 出力側の音量を上げすぎると、音がとぎれとぎれになって実用に耐えない。
  • 総評としては、使えなくはないけど、好んで聴くレベルのアンプではない感じ。
    ※音質的には残念なところはあるが、音の出方を確かめるという点ではそこまで悪くない。
  • チープなスピーカーと組み合わせて使うなら十分に役に立つ。
    ※そもそも安い(1個約167円)のだから多くを期待するべきではない。

〈PAM8610〉

  • 増幅された音量は、今回比べた3つの中で一番大きい感じ。
  • 1,000円を超えるアンプユニット(詳細は後日)と音量的には遜色がない。
  • 7.5V〜12V(7.5V〜15V対応)で安定して使うことができた。
    ※5V程度では、全く音が出ない。今回使ったACアダプタの上限が12V。
  • アンプICにはヒートシンク付いていて、動作時はほんのり温かいくらい。
  • ボーカルやトークの声ははっきりしているものの、低音域はあまり強く聞こえず、低音がしっかり聞こえるまで音量を上げると、今度は高音成分がきつく感じるようになる。
  • 総評としては、ぎりぎり常用可能なレベルだが、音楽を聴くのには向いていない。
  • 基板には、シルク印刷で「HW-210」とあり、様々なところで類似品が作られている。Amazonで2個998円(1個499円)だった。
    【参考】「EasyWordMall PAM8610」など

〈TDA2822M〉

  • 増幅された音量は、今回比べた3つの中で一番小さい感じ。
  • シルク印刷で1.8V〜12V対応となっているが、電圧の差で動作変化はあまりない。
    ※電圧が高いと、アンプICが非常に熱くなるので4.5V前後のあたりが一番良い感じ。
  • 初めて使用した際、+−を逆につないでしまってアンプICを焼きかけて、かなり焦った。(余談だね)
  • 実装されている部品点数がPAM8610のアンプICモジュールよりかなり少なく、表面実装部品が使われていない。
    ※改造ベースとして使っても面白いかもしれない。
  • 出力側の音量を上げると、音の輪郭がはっきりする(ボーカルやトークが聴きやすくなる)。低音域もしっかり聴こえるようになってバランスが良いと感じる。
  • 総評としては、音量の小ささに目をつぶれば、普段使いで問題なく使える。
  • 参考になるようなよい活用事例を見つけることができなかった。Amazonで1個732円だった。

ということで、実際に比べてみた感想でした。徐々に沼にハマっていく予感しかしないのですが、実際にもう少し実用的なアンプを購入してしまっています。オーディオ関係の価格は青天井なので、価格が高いものは無理だとしても、身の丈にあった価格帯でより良いものを探したり試したり作ったりしながら、もう少し楽しんでみたいと思います。

2024年4月13日土曜日

micro:bitからモータドライバモジュール(TB6612FNG)を使ってDCモータ(マブチ130同型)を動かせるかやってみる〜プログラムを作って完成

前回の続きです。FT-DC-002や自作ロボットカーベースをラジコンカーに仕立てて、モータドライバICモジュール(TB6612FNG)とmicro:bitマイクロビットブレイクアウトボードキットを使用)でラジコンカーを作るところまでは終わりました。

今回は、2つのmicro:bitにそれぞれ「ラジコンカー」と「コントローラ」のプログラムを流し込んでみます。MakeCodeを使って作ったプログラムは、以下のとおりです。備忘も兼ねて少し解説も加えておきます。

〈ラジコンカーのプログラム〉

モータドライバICでモータを制御するために、micro:bitからPWMでアナログ出力をしておく必要があります。それから、どちら向きに電気を流すか、または、流さないかを制御しています。デジタルで「1」は、電気を流すことを表し、「0」は、電気を流さないことを表しています。この電気を流すことによって、モータドライバICのモータ側の電気のON/OFFや正逆回転が制御されることになります。

〈コントローラのプログラム〉

micro:bitの傾きを検知して、停止、前進、後退、右回、左回の5つを制御するプログラムにしました。同時に、現在の状態を示す矢印(「↑」…前進、「↓」…後退、「←」…左回、「→」…右回、「−」…停止)を5*5LEDマトリクスで表示するようにしました。こちらのプログラムは、サーボモータで動かしたい場合でも共通して使うことができます。

FT-DC-002と自作ロボットカーベースで試してみましたが、問題なく動作してくれました。強いて問題点を上げるとすれば、やはり配線の複雑さですね。サーボモータのときのようにmicro:bitから直接制御できず、モータドライバICを挟まなければならないため、どうしても配線は複雑になります。モータドライバICが組み込まれたブレイクアウトボードやワークショップモジュールのようなものが出来上がるとラジコンカーを簡単に作ることができそうです。せめてもの対策として、ユニバーサル基板にモータドライバICモジュールを載せて、micro:bitのブレイクアウトボードに簡単に接続できるように工夫してみたいと思います。

2024年4月7日日曜日

micro:bitからモータドライバモジュール(TB6612FNG)を使ってDCモータ(マブチ130同型)を動かせるかやってみる〜ラジコンカーの作成

前回の続きです。FT-DC-002や自作ロボットカーベースをラジコンカーに仕立てます。組立・配線作業をする前に、DCモータ(マブチモーター130同型を使用←黄色のギヤボックスにはまっている、よくあるギヤ付きモータ)にバイパスコンデンサ(パスコン)をはんだ付けします。今回は、0.1μFのセラミックコンデンサを使いました。モータドライバICモジュール(TB6612FNG)とmicro:bitマイクロビットブレイクアウトボードキットを使用)の配線は以下のとおりです。

実際の配線は、以下の写真のようになっています。線が多くてどうしてもごちゃごちゃした感じになってしまいますが、わかりやすくする工夫は今後の課題だと思っています。



モータを動かす電源は、単4乾電池2本で3.0Vを用意しました。ブレイクアウトボード上のmicro:bitには、microUSBコネクタからも給電します。これは、micro:bit自体を動かす電源とモータを動かす電源を別に用意することで、効率よくモータを動かすことができるようにするためです。microUSBケーブルでの給電の他に、電池からの給電も可能です。その際は、電池ボックスを別途用意する必要があります。

この構成で、自作のロボットカーベース(タミヤダブルギヤボックスを使用)も問題なく動かすことができました。DCモータ自体は回転が速いので、ギヤボックスはどうしても必要になります。その点で黄色のギヤ付きDCモータはかなり安価なので、今後はFT-DC-002に付属していたもの(自宅にも在庫が豊富にある)と同様のギヤ付きDCモータを活用する方向で考えていきたいと思います。

次回は、いよいよプログラムの作り方をまとめていきます。MakeCodeを使ってプログラムを作ってmicro:bitに流し込んで完成です。

2024年4月2日火曜日

micro:bitからモータドライバモジュール(TB6612FNG)を使ってDCモータ(マブチ130同型)を動かせるかやってみる〜実験の下準備

以前から、「micro:bitでロボットカーを動かす」ことを教材化しようと個人的に研究をしていますが、これまで使ってきたものはServoモータを使用していることが多かったため、ディスカウントに限界を感じていました。安価で手に入るマブチモーター130)のようなDCモータ(自宅にも在庫が大量にある)を使うことができれば、かなりのディスカウントになります。DCモータを動かすためには、micro:bitで直接コントロールすることはできず、モータを動かすための電源とモータドライバICが必要はなずです。

過去にTA7291Sdatasheet)を使ったモータドライバICモジュールを作って、Arduinoやその互換機で動かしていましたが、このIC自体が1モータにしか対応していないため、これを2つのモータを動かすために使うとなると回路が大きくなってしまいます。(以前作ってみた1モータ+サーボステアリングなら使える可能性もありですが)そこで、たまたまAmazonで見つけたTB6612FNGという2チャンネルのモータドライバICを載せたモジュールを使ってみることにしました。
#購入時は、モジュール2個で1,499円でした。似たようなものでDRV8833というモータドライバICを載せたモジュールもあって、性能は若干落ちるようですがより安価なようです。

これを、FT-DC-002というアルミ筐体でDCモータを挟む構造になっているロボットカーキットやタミヤユニバーサルプレートダブルギヤボックス(ユニバーサルプレートと組み合わせるならツインモーターギヤーボックスの方がぴったりサイズです)とボールキャスターを組み合わせて作ったロボットカーベースに載せて動作実験をします。
#この自作ロボットカーベースは、スタジオMYUさんの「ミュウロボ」を参考にして作ったものです。

今回の作業は、サヌキテックネットさんの「DCモーターを制御する」を参考にしながら進めます。TB6612FNGモジュールは小さなブレッドボードに載せて、micro:bitはブレイクアウトボード(秋月電子通商の「micro:bit マイクロビットブレイクアウトボードキット」を使用:基板に「AE-MBIT-BREAKOUT_V」とシルク印刷されていた)に挿して、ジャンパワイヤーでつないで使うことにします。

ブレイクアウトボードに挿したmicro:bitをモータの制御に使ってラジコンカーを作り、もう一つのmicro:bitをラジコンカーのコントローラとして使います。見た目がごちゃごちゃした感じになってしまいましたので、もう少し整理してわかりやすくしていきたいと思います。

と、ここまででだいぶ情報量が多くなってしまいましたので、続きはあと2回に分けてまとめていきます。記事を公開したら、下のリストにリンクをはっていきます。

2024年3月23日土曜日

Raspberry Pi 4でOS(Debian)が起動しなくなる(ログインできない)現象を解決しました

以前Raspberry Pi 4のアップデートをしていて気づいたことなのですが、microSDカードに入れたOS(Debian)が起動しなくなる現象が発生してしまい、どうしたものかと悩まされました。症状としては、MacBook ProでmicroSDカードにOSをインストール(Raspberry Pi Imagerを使用)したものをRPi 4に入れて起動すると、しばらくは使えるのですが、追加ソフトをインストールしたりアップデートしたりしているうちに起動しなくなるという現象です。否、起動はするけれどログインができなくなるというのが正しいです。これではまともに使えません。

検証のためにOSを再インストールするところからやってみることにしました。使ったのは、Gigastoneの16GB microSDカードです。新しいRaspberry Pi Imagerは、インストール時にユーザ名&パスワードやWi-Fiなどの設定ができるのでとても便利になりました。できあがったmicroSDカードをRPi 4に挿して起動すると、普通に起動してくれます。

この後しばらく待つと、タスクバーの右側にアップデートのインストールを促すアイコンが表示されるので、アップデートをインストールしてreboot。いつもの手順で「Recommended Software」からScratchなどのソフトウエアをインストールしてreboot。ターミナルから「sudo apt install fcitx-mozc」で日本語入力ができるようにしてreboot。と、この辺りまでは順調に起動するのですが、「Add / Remove Software」からArduinoLMMSをインストールすると、rebootした後にログイン画面が表示されるようになり、正しいパスワードを打ち込んでも先に進めなくなってしまうのです。この状態でShutdownを選んでも、再び起動するとまた同じ状態になります。つまり手詰まり状態というわけです。

これは、microSDカードの問題なのではないかと考えて、在庫していたTOSHIBAの16GB microSDカードにOSをインストールして同じ手順でやってみましたが結果は同じでした。

もう一台のRPi 4とRPi 400には32GBのmicroSDカードを使っているので、16GBでは容量不足ということが考えられます。そこで、これも在庫していたVerbatimの32GBのmicroSDカードにOSをインストールして使ってみることにしました。16GBのmicroSDカードでインストールした手順と同じ手順で作業を行い、再起動すると無事に使える状態で起動してくれました。さらに、LibreOfficeGIMP、ゲームなどを入れても問題なく起動するようになりました。つまり、単に容量不足だったという面白くない落ちだったようです。

ちなみに、RPiのフォーラムに「GUIログインができなくなった。(←Google先生に日本語訳してもらった)」という書き込みを見つけて、この解決方法も参考にしようと思っていましたが、容量の大きなmicroSDカードを使って解決してしまったのでこの方法は試していません。もし、容量の大きなmicroSDカードを使っても解決しないときには、試してみる価値はありそうです。

〈おまけ〉
アップデートの際に参照するサーバは、デフォルトの設定でも自動的に近くのミラーサーバを選んでいるようですが、明示的に近いところを指定したければ、リポジトリの設定を変更して日本のサーバを直接参照するようにもできます。効率よくアップデート作業をしたいときは、こうした細かな設定の変更がストレスを低減してくれると思います。
MiniPC.JUST4FUN.BIZさんの「Raspbianを日本のリポジトリサーバに変更する・buster」が参考になりました。

2024年3月16日土曜日

100均の材料でスピーカーのエンクロージャーを自作してみた

これまでPAM8403Datasheet)を載せたアンプモジュールを利用して、スピーカーを鳴らしてみる実験をしてきましたが、スピーカーむき出しの状態で実験を続けていたので、そろそろスピーカーのエンクロージャーを作ってみたくなりました。汎用のエンクロージャー自作キットも販売されていますが、できるだけお金をかけずにそれらしいものを作ってみようと思います。

YouTubeなどでもエンクロージャーを作っている様々な動画がアップされていますが、近所のDAISOでスピーカーのエンクロージャーに加工しやすそうな木製の箱をいくつか買ってきました。DAISOに限らず、100円ショップには何に使えるか不明なものの何かに使えそうな木箱類が数種類置いてあります。見た目はそっくりでも、寸法が微妙に違ったり使われている部材の厚みが違ったりして完成イメージに合ったものを探すのに苦労しましたが、ステレオスピーカーにしたいのでできるだけ寸法や材料が同じものを2つ1組になるように購入しました。

これらを自宅に在庫していたものと組み合わせて使うことにして、寸法を計って加工していきます。切り口をできるだけきれいにするために、マスキングテープでコーティングして、スピーカーを入れる円をホールソーで切り抜きました。切った後は、サンドペーパー(紙やすり)できれいに処理をしておきます。円をスピーカーのサイズに合わせるために、ルーターにヤスリをつけて目的のサイズまで削ります。スピーカーがぴったり収まる大きさに調整できたら、スピーカーを取り付ける前にニスを塗っておきます。

ニスが乾いたら最終的な組み立てをして完成させます。何となくそれっぽいものができたのではないかと自己満足しています。一応、中にフェルトを貼ってみましたが、これもDAISOで購入したものを使いました。完成したものは以下のようなものです。


スピーカーむき出しよりは、見た目は少し良くなりました。音質が良いのかどうかはわかりませんが、格安なスピーカーを自分好みのエンクロージャーに収めるというのも面白いのではないかと思いました。

新たな問題として、スピーカーむき出しで使っていたときには問題がなかったのに、自作エンクロージャーに収めたらノイズが乗るようになってしまいました。アンプの電源を入れると鳴り始めるので、配線のどこかでノイズを拾ってしまっている可能性があります。このノイズ対策として、フェライトコア(←北川工業さんの解説がわかりやすかったです)で配線をはさむことにしました。すると、ほぼ気にならない程度までノイズを抑えることができました。(変わり方に驚きました)

今回は、壊れても良いつもりでチープなスピーカーと安価なD級アンプを使いましたが、他のスピーカーでもエンクロージャーを作ってみたくなりましたし、他のアンプICを使ったアンプモジュールを試してみたくもなりました。やりたいことはどんどん増えていくのですが、なかなか時間が取れないのが難点です。(いつものパターン)

2024年3月10日日曜日

歴代Raspberry PiのOS(Raspbian)のアップデート作業

自宅には、歴代のRaspberry Pi(RPi)たちがあるのですが、仕事の忙しさにかまけて放置状態になっていました。しばらくぶりに初代のRPi起動してみて、aptコマンドでアップデート作業を試みたのですが、うまくできずすぐに終了してしまいました。エラーの内容を見てみると、aptのリスト自体がなくなっているようなメッセージになっていました。これは、OSのサポートが切れているのではないかと考えて、自宅にある歴代RPiにインストールされているOSを確認することにしました。

Raspberry Pi OS(Raspbian)の世代を確認するためには、LXTerminalを起動して「lsb_release」コマンドを使います。
FebShopさんの「ラズベリーパイ用OS Raspbianのバージョンの調べ方と歴代バージョンについて」を参考にしました。
#歴代Raspbianについては、ものものテックさんの「ラズパイに過去リリースされたRaspberry Pi OSをインストール」からたどることができます。

$ lsb_release -a

自宅にある歴代のRPiにインストールされていたOSは、以下の通りでした。
#エンクロージャーなどに収めてしまったRPiのモデルを確認するには、「$ cat /proc/cpuinfo | grep Model」を使えば確認することができます。

  • RPi  …Raspbian GNU/Linux 9.13(stretch)
  • RPi + …Raspbian GNU/Linux 10(buster)
    ※小型タッチパネルモニタ一体型にしたものと併せて2台
  • RPi 2 …Debian GNU/Linux 11(bullseye)
  • RPi 3 …Raspbian GNU/Linux 10(buster)
    ※2台
  • RPi 4 …Debian GNU/Linux 11(bullseye:64bit)
    →2台のRPi 4の内、1台で使っていたmicroSDカードがダメな感じだったので、別のmicroSDカードを用意して最新のDebian GNU/Linux 12(bookworm:64bit)を入れ直しました。
  • RPi 400…Debian GNU/Linux 11(bullseye:64bit)
  • RPi Zero W…Raspbian GNU/Linux 10(buster)

ここから、各種RPiのアップデート作業を開始します。LXTerminalでの作業が続くのと待ち時間が長いのが難点ですが、以下のようなコマンドで順番に作業をしていきました。
ラズバイの実さんの「【ラズパイ初心者おすすめ】RaspberryPiを、最新の状態にアップデートする方法」が参考になりました。

$ sudo apt update && sudo apt -y upgrade

$ reboot

$ sudo apt autoremove -y && sudo apt autoclean

$ sudo apt dist-upgrade -y

$ reboot

$ sudo rpi-update ※このコマンドは、頻繁に使うものではないようです。

$ reboot

$ sudo apt autoremove -y && sudo apt autoclean

初代RPiは、OS(stretch)用のリポジトリのリストがないということで、アップデートには失敗してしまいましたが、その他は、無事にアップデートを完了しました。どうやら、現在のサポート対象世代は「buster」以降で、「stretch」以前のOSでは、アップデートが上手く行かないようです。初代RPiは、古いOSでの動作確認に使うことにして、しばらくこのまま使っていこうと思います。