2014/10/13(月)D級アンプいじり

Twitterでもちょくちょく書いてますが、最近D級アンプをちょくちょくいじってます。

D級ヘッドホンアンプ

もともとD級ヘッドホンアンプを改良したいとずっと思っていました。D級HPAはいつくか分かってる欠点があります。

  • U1の出力が反転するとき、U1入力で電流を大きく吸い込むため振動してしまう(記事のオシロ波形参照)
  • 2MHzとはいえ発振周波数がそれほど速くないので、オペアンプによって高域がやや歪っぽくなってしまうことがある。

U1の手前にオペアンプバッファを入れることも考えたのですが、それだとますます発振周波数が下がってしまうのが困りもので……。

ふと思い立って電源電圧可変式D級ヘッドホンアンプを作った時に使用した高速コンパレーターICを使ってみたところ、発振周波数が向上して、吸込み電流も少なくなって飛躍的に音質が向上しました。

詳しくは記事にまとめてあるので見てみてください。

純積分形D級アンプ

B.Oさんが検討している回路です。(最新はこちら

最初、改良版を作るときに、純積分形に変更したことをすっかり忘れててずっとこの回路で調整してたのですが、U1、U2を(D級HPAの記事に書いたとおり)変更すると問題がないレベルで音質やスイング特性が向上します。

しかし比べてみると、RC積分形(当方記事の回路)のほうがちょっと音質はいいように感じました。あとは、純積分形の回路はボリュームの抵抗値が入力抵抗となってしまうため、実質ゲインが0dB(1倍)より落ちてしまいました。この辺がちょっと難点ですね。

D級PDMアンプ

元々TPA3110等で使われているフィルタレスD級アンプ(BTLスピーカーアンプ)の原理を調べていて、maximのサイトの解説を読んでたのですが、原理がノコギリ波比較の他励式なんですよね。

他励式D級アンプはいかに直線な基準波(三角波やノコギリ波)を作るかというところが勝負になってしまうので、そうではなくD級ヘッドホンアンプのような自励式D級アンプで同じことができないだろうかと試行錯誤していました。

その時に思いついたのがこれ。

pdm-simulation.png

自励式PWM発振回路のPWM変調部をクロックパルスでサンプリングすることでPDMのような*1動作をさせることができます。

クロックパルスでサンプリングすることでタイミングを揃えることができますから、maximのサイトにあるフィルタレス回路の応用で、XNORを使用してフィルタレスD級アンプ(BTLアンプ)を作ることができそうです。

誰か挑戦してみませんか?

*1 : 「のような」と書いているのは厳密にPDMと等価であることを確認したわけではないという意味です。ほとんど同じようなものになってるとは思いますが。

D級スピーカーアンプ

自励式D級ヘッドホンアンプの原理を応用して、D級スピーカーアンプを作れないかと検討しています。というか、試作基板までは起こしました。こちらは、うまく動いたら記事にします。

スピーカーのように電力増幅を考えると

  • 電圧を上げる必要がある
  • 電流をある程度取れる必要がある

というのがネックで、大型MOSを使用すると貫通電流の問題は避けて通れず、デッドタイム回路を作ると複雑になってしまうし音質も低下する。さてどうしたものかというところで、うまく解決できるかどうか(苦笑)

2014/08/31(日)Free386 | RUN386 DOS Extender Compatible (ASM source)

これは何?

MS-DOS上で動く386|DOS-Extenderです。EXE386とかの仲間。ほとんどの人にとって必要ないプログラムです。

Download/公式サイト

その他

今見返しても非常によく作ってあるなという印象でした。うんづで少し編集してみましたが、とてもあの狭い画面で開発する気はおきない(苦笑)

しかもCPU 16bit←→32bitの切り替えアプリ。デバッガで追えるわけもなく、少しミスるだけでマシン暴走してリセットという運命。昔はよく頑張ってたなぁ。ソースレベルデバッグが当たり前の最近の開発環境から考えるとすごい世界です。

2014/07/31(木)S/PDIFを複数入力したい

WM8804というSPDIF→I2S変換の石をいじっています。このICのS/PDIF入力端子は、そのままSPDIF信号を入力できるようになっています。

wm8804-fig28.png

とはいえ、同軸入力(コアキシャル)と光入力を両方とも扱えるようにしたいと思うと手間です。

  • スイッチで切り替える
  • セレクタで切り替える(信号認識して自動切り替え等)

世の中の作例をみるとこんなところでしょうか。同時に入力した時は使えないだけでいいので、もっとシンプルにならないものかと試行錯誤しました。

続きを読む

2014/02/27(木)オキスーパーホンの修理

古い「沖電気の電話機」を使っているのですが、「短縮登録機能」が使用できない不具合が何年か前からありました。

電話をかけたり、受けたり、既に登録済みの番号をワンボタンで掛ける分には大丈夫だったのですが、追加で登録すると挙動不審で途中で登録が止まって(操作を一切受け付けなくなるハングアップ状態)になってしまうことが多々。

重い腰をあげて分解しました。

oki-superphone-01.jpg

1991年製らしい。そんなに古い製品なのか……。

oki-superphone-02.jpg

開けた所。昔の基板はわかりやすくていいですね。

原因はすぐに特定できました。リチウムコイン電池の電池切れです。本来3Vあるべき電圧が1.2Vしかありません(苦笑)。取り替えて簡単に終わらせようと思ったら問題発生。

こともあろうにこの電池溶接されてる(笑)

電池フォルダーじゃないのかよ。もう交換することなんか考えてない実装です。製造後20年以上動作してたわけですから、設計としてはそこまで間違ってはいないとは思いますが、直すには一苦労。


ラジペンで無理やり外すも端子と基板の接続がスルーホールのみで(ベタ付されてない)、端子をパキってやりそうになりながら引き剥がし。

oki-superphone-03.jpg

再溶接ってわけにもいかないので、半田で無理やり付けた。端子板も電池もあまりハンダ付け向きじゃないので、すぐ剥がれるかもしれないけど、ワット数の高いハンダで半ば無理やり付けてそっと蓋を閉じました。


一応、問題なく動いています。

2013/12/06(金)プリンタを買い替えた

買って以来ずっと後悔していたCanonのCAPTプリンタをようやく買い替えました。

発端

CAPTプリンタの残念っぷりは昔の記事を見ていただくとして、トナーが切れてその後リサイクルトナーで使用しておりました。リンクのような「かすれ症状」がたまに発生するので、その度にトナーを抜き差しして調子を整える(上から軽く押してあげるとしばらく治る)というなんとも面倒な作業の繰り返しです。

最近になってリサイクルトナーのドラムの回転が安定しないのか*1印刷の途中行が潰れる(5mmぐらい印刷が飛ばされる)現象が発生し始めました。かすれるならいいのですが、飛ばされるともうどうにもなりません(苦笑)

とはいっても今更互換トナーを買い直す気も(不良で一回交換してる)、まして純正トナーを買う気もおきず、プリンタを買い換えることにしました。

*1 : トナードラム側の回転用のツメのところに損傷がある

ブラザーのプリンターを購入

身の回りで評判のいいブラザーのプリンタを選択。無線LAN機能付きということでBROTHER HL-2270DWにしました。クライアントPCが無線LANセグメントにアクセスできない場所にあることに後から気づいて、結局Linuxサーバ接続になったのですが(苦笑)*2。1万円なり……って安いな(笑)

トナーが少し割高なのでJUSTIO PRO(上位機)も考えたのですけど、

  • 下位機よりも大型になってまう。
  • 最上位機しか無線LANかついてない。

ということで諦め。この価格帯で日本語PS対応とか熱いのに(^^

*2 : 無線LAN対応だし、小型なので、将来要らなくなったときにも使い回しが効きやすいということで。

Linuxドライバのインストール

LinuxサーバのCUPSで管理することになったのでドライバインストール。CanonのCAPTプリンタでは死ぬほど苦労したこの作業が、ものの30分で終わってしまいました(笑)

i386互換ライブラリをインストールしてない場合は以下のコマンド。

# apt-get install ia32-libs lib32stdc++6

それからドライバを落としてきて次のコマンド。

# dpkg -i --force-architecture hl2270dwlpr-2.1.0-1.i386.deb
# dpkg -i --force-architecture cupswrapperHL2270DW-2.0.4-2.i386.deb

これで、ppdドライバが入ります。

32bit(i386)と書かれていたので少しビクビクしたのですが、インストールすると普通にx64(amd64)用のプリンタフィルタも生成されますので問題ありません。

あとはUSBで接続してCUPS上からプリンタを追加。ドライバを選択して設定完了で終わり(追加時に共有オプション忘れず)。CUPSプリンタ共有でWindowsからも普通に印刷できました。

CAPTプリンタのゴミを削除する(笑)

要らなくなったLBP3310用の設定を削除します。この記事のとおりインストールした場合限定

  1. cups上からプリンタを削除。
  2. プリンタ制御デーモンccpdを止める
    # /etc/init.d/ccpd stop
    
  3. ccpdの自動起動を止める
    # update-rc.d -f ccpd remove
    
  4. CAPTドライバのアンインストール
    # dpkg -P cndrvcups-capt
    # dpkg -P cndrvcups-common
    

ビフォーアフター

  • CUPS上でプリンタやジョブを正しく管理できるようになった。*3
  • Windowsからプリンタのプロパティを開く時に数秒待たされることがなくなった。*4
  • 正しく印刷されるか不安にならずにすむようになったし、正しく印刷されないときにプリンタのメンテナンスをしなければならない(急ぎの印刷の時は最悪)ことがなくなった。
  • Linux上のたまに暴走して死ぬ意味不明のデーモンccpdがなくなりすっきりした。
  • LBP3310よりも小型になって物理的にもすっきりした。

*3 : cupsからはccpdデーモンをプリンタとして認識するため色々ちぐはぐになる。例えばCAPTプリンタではccpdデーモンにすべてのジョブが瞬時に送られ、その上で管理されるためジョブキャンセルもできない。

*4 : CanonのプリンタドライバがCAPTプリンタと通信をするためだと思われますが、CUPS運用は想定されてないらしくタイムアウトするまで待たなければならないという。

まとめ

ようやくまともにCUPSによるプリンタ管理が実現しました。

こんだけ色々書いたあとに言うのもなんですが、不要になったプリンタLBP-3310あげます(苦笑)

LBP3310.jpg

  • 最低限、今入ってる互換トナーを別のものに交換しないとまともに使えないと思います(苦笑)
    • ただし、交換したからといって何の問題もなく使えるかどうかは分かりません。
    • トナーを整理していたら、純正トナー(ただしインクがなくなりかけている)を見つけたので入れ替えたところ問題なく綺麗に印刷されました。
  • Linuxで使おうとすると地獄です。Windows等で使うことをオススメします。
  • 細かい仕様はLBP-3310で検索して調べてください。
  • 2,3度分解しています。その際、背面の紙詰まり検出のプラスチック製のツメを破損しており、ハンダゴテでプラスチック溶接してありますが、再破損する可能性があります。*5
  • また分解の際に一部部品を欠損しています。こちらは動作には支障はないと思います。
  • さっきまで現役稼働していましたがジャンク扱いです。

希望者はコメント欄に。希望者の中からあげたい人に「メールください」とコメントを返すので、その後にメールください。希望者がいなければゴミかな。

希望者がいなかったため処分しました。

一言まとめ

CanonのCAPTプリンタはクソ!!(Linuxで使う場合)

*5 : 何度か再破損したあとかなり本格的に接着し、以後一度も損傷していませんが、今後も絶対壊れないとは言い切れません。損傷すると1枚印刷ごとに必ず紙詰まりエラーとなります。