ほんまかいな、そーかいな、南アフリカ と ちょびっと シドニー そして日本だ!

南アフリカ(2004年)と、シドニー(2005年)での生活の近況報告です。そして日本でも(2007年から)

PICでぴぽぱ、DTMF Generator (その2)

2013年02月05日 | Gadgets
PICのクロックを20MHzから32MHzに変更したので、このままでは、ダイアルトーンの発振周波数が合わない。
で、一応、計算してみた。
命令サイクルがクロックの1/4なので1秒/32Mhz*4=0.125u秒
一番低い周波数が697Hzで1サイクルが1435u秒
波形のデータに37サンプルあるので、1サンプルあたり1435/37=38.8u秒
38.8u秒を0.125u秒ごとにカウントすると、310カウントで256カウントをこえるので、プリスケーラーを1:2で行うと、
310/2=155カウントすればよいことになる。 Timer0は、カウントアップなので、256-155=101で初期値を101にすれば良いことになるが、割り込み後の処理中もカウントされるのと、Hitech-Cのコンパイラがフリーバージョンなので最適化されていないことなどから、ここからは、カットアンドトライで調整。
結果、106くらいで落ち着きそう。
で、プログラムをテスト用に変更して、単一の周波数で一つづつ確認してみると、次のような感じになっている。

設定周波数     実測値
697Hz       690Hz
770Hz       773Hz
852Hz       852Hz
941Hz       446Hz
1209Hz      1217Hz
1336Hz      1347Hz
1477Hz      1473Hz

なんか、ビミョーにずれているけど、調べてみたら、許容誤差1.5%くらいあるみたいなんで、なんとか範囲内かな…。

発信周波数がそこそこいけそうなので、今度は、もう少し大きな音にしたくなり、1石くらいのアンプでも組めば良いかなと思っててきとーにやってみたら、見事に失敗。
音は、小さいわ、なんか歪んでいるわでそのまま出力した方がまだまし。
やっぱり、ちゃんと組まないとだめですね…。
一応、オシロでみてみると、電源を半波整流したような脈流になっちゃってる。
もともと、電圧はそこそこ出ているので、クリップしちゃってるのかな?
いろいろ、抵抗の値をカットアンドトライしてみるんだけどなかなか埒が明かない。
おー、そういえば、回路シミュレーターなんてのがあったぞ! と、いうことで、LTSPICEでやってみると、
すごいもんですね。 今の回路を入力してみると、ちゃんとオシロと同じ波形。
あーでもない、こーでもないと設定を変えてみて、結局、最終的に以下のような回路になった。


ボタンを押していない間は、スリープモードになり、アンプの電源も3番ピンの信号がLowになって流れなくなるように一応省電力を図っている。
実測では、ボタンを押すと40mA、放すと0.01mAくらいになっていた。
ま、とりあえず、電話機にこの音を聞かせたら、それなりにちゃんとつながったし、これで、よしとするかな・・・。
動画は、こちらから・・・。
PICでピポパ、DTMF発信機


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。