TUNEとBANDの数値表示まで動作しました。
8桁表示なのでわかりにくいですが、上のBAがBAND電圧のADC値、下のFRがTUNE電圧のADC値を示しています。現在は調整用のためPICの10ビットADC出力値をそのまま表示しています。
このコーディング中にちょっとトラブルがありました。数値を見ていると、BAは安定しているのですが、FRの方は妙にふらつきが見られました。
まずはADCの操作誤りを疑って見直してもわからず、ノイズかもしれないとADCを複数回動かして平均をとっても改善せず、そこでやっとオシロを取り出して波形を見たところ、以下のようになっていました。
12us位の周期でTUNE電圧が0.4V位下がります。
PICマイコンのADC入力操作の間違いでドライブしてしまうのかな?と思ってPICを外してみたのですが、それでも出てます。VREF電圧を見たらそちらはは安定しているので、なぜだかわからないけどM6959が自分でTUNE電圧に何か出しているようです。
普通にVRを繋いで使っている分には全く問題ない現象ですが、今回のようにスヌープして電圧を測定しようとする場合には困ります。これは平均とっても解消できるレベルではないし。
悩んだ末、 TUNE電圧に関してはADCサンプル結果で同じ電圧値が3回以上続いた場合に値を採用するようにソースを直しました。(正確には量子化誤差とノイズがあるはずなので下位2ビットを無視して同じ値かどうかを見ています。)
たまたまこの低下をサンプルしてしまった場合はやり直します。ADC周期からみて、偶然この低下タイミングが連続することもないはずです。
この回収後に数値表示を見ている限りでは安定した数値が得られるようになっています。
しばらく見ていた限りでは数値変動は±1ですので、ほぼ量子化誤差だけで、ノイズ影響も心配なさそうです。
今回のソースは以下の通りです。M6959の表示用としてはまだ途中ですが、PICとI2C−LCDによる単なる電圧表示用ソフトとしては使いまわせそうですので、参考に公開いたします。
「PIC12F_ADC_TEST_1.c」をダウンロード (2014/01/19 PM9 CONFIG BUG FIX)
「PIC12F_I2C.c」をダウンロード
TUNE電圧が数値化して見れるようになりましたので、商用放送を使って受信周波数とTUNE電圧数値の関係から周波数表示の演算係数を出すことができるはずです。
なお、BANDに関しては分圧抵抗から計算されるBAND電圧値と実際のバンド選択の対応が確認できましたので、その計算式を使って表示に持っていくことができそうです。
(これはFM,AMの他はSWをラジオ日経の3.925MHz、6.055MHzで試しました。)
このあとはもう少し特性を確認の上で、最終的なバンド&周波数表示付きM6959ラジオをして仕上げたいと思います。
それではまたです。
最近のコメント