PIC [スピーカー出力]

PIC16F84A を使って単純な音の出力を試みます。今回もC言語で挑戦します。
更新日 2016-02-13

設計

まずはコチラのページをご確認ください。とてもシンプルな構成です。これに挑戦します。

仕様

PIC16F84A を使います。予定する出力周波数は最高で17,900 Hz (モスキートーン) を予定しています。サイン波を出したいので ラダー抵抗回路も用います。20MHz のセラロックを使います。以下は回路図です。
スピーカ出力 回路図 モスキートーン

ラダー抵抗回路

ラダー抵抗回路は、電圧の簡単なD/A 変換回路 です。今回はPIC16F84A のRB0〜RB6 を出力として使う為、以下の回路になります。なんでこんな回路を 使うかというと、サイン波を7bit つまり128階調の電圧で表現したいからです。ちなみデジタルなオンオフでできる波形は矩形波(短径波ではない)になります。 RB ポートは一括してオンオフを設定出来るため、処理速度的にも有益です。
なお10kΩですがバラツキはあるもので、デジタルテスターで一つ一つ計測して選びます。

アンプ

今回は10Ωのスピーカー(ツィーター)2機で出力したいので、秋月通商から出てるHT82V739使用ミニモノアンプ基板 を利用します。1200mW の出力が可能です。さらにコンパクトに8pin にまでできます。ちなみにHT82V739 自体は共立エレショップでも買えます。

PIC プログラミング

MPLAB IDE でPIC16F84A 用のプロジェクトを作成します。

ソースコード

speaker_main.c を参照下さい。サイン波の計算をその都度行うと処理速度が間に合わないので、あらかじめ計算しておいた値をPORTB に次々にセットする事にします。計算はC# で作った CalculateDAC.exe にて行いました。
Calculate DAC スクリーンショット  C# CalculateDAC プロジェクトファイル一式
Hitech C を使っていますが、体験版の為最適化されません。上記のソースコードは結構ギリギリです。改良するなら4K ワードあるPIC16F シリーズを使う方が良いでしょう。

テスト

まずはブレッドボードで動作確認をするべきです。十分に検証してください。

組み立て

テストを無事終えたら組み立て作業です。ハンダは一度盛ったら外せません。慎重にやりましょう。

ハンダ付け

まず基板にパーツを載せて、だいたいの位置合わせだけやります。後はどんどんハンダ付けします。一時的に過熱できるスイッチボタン付きハンダごてが便利です。 配線にはハンダの熱でも溶けず、柔軟で取り回しを維持してくれるETFE 線というのを使います。フラックスは爪楊枝で適量付けながらやるとラクです。
電子部品は熱に弱いので、ヒートクリップというアルミ製の放熱工具を併用します。この工具も十分熱くなりますので注意です。
一気に仕上げてしまうと配線チェックが分かり難くなるため、こまめにテスターでチェックしておくと良いでしょう。(実際、今回の最初の製作品はどこか不安定で 廃棄となりました)

アクリルケースを自作

アクリル板を使ってケースを作ります。ヒンジ部は造形補修剤プラリペアでくっつけてます。プラリペアも硬化が速いので便利です。パソコンのマザーボード用 台座ビスを使っていますが、インチねじは基板の穴よりも若干大きい為、ドリルで拡張する必要がありました。

スピーカーを自作

今回は20kHz 近辺での出力を想定しているため、ミニツィーターユニットを購入しています。2個セットで600 円程度。名古屋大須の第一アメ横ビル2F 突き当たりの パーツショップ「ボントン」に売ってます。ケースはアクリルで作成しました。配線しただけです。

完成図

かなりコンパクトにできました。ボタンを押すと3分間音波を出力します。再度ボタンを押すと切れます。ボタンを長押しするとより低周波の聞き取りやすい矩形波を 出力します。

HT82V739-DIP-A を使う場合

秋月のHT82V739使用ミニモノアンプ基板を使いましたが、このチップにはDIP 版のHT82V739-DIP-Aもあります。こちらを使うとより安上がりです。ただし1uF (x2)と100uF (x1)の積層セラミックコンデンサーが必要です。

回路図

HT82V739-DIP-A
5Pin をLow にすると動作します。これで動作をオンオフするとプチノイズを抑える事ができます。