スポンサーリンク


RAKUTEN

  • スポンサーリンク

« Aitendo M6959 + 秋月I2C LCD その3 | メイン | Aitendo M6959 + 秋月I2C LCD その5 »

2014/01/13

Aitendo M6959 + 秋月I2C LCD その4

TUNEとBANDの数値表示まで動作しました。

Dscf2808  

8桁表示なのでわかりにくいですが、上のBAがBAND電圧のADC値、下のFRがTUNE電圧のADC値を示しています。現在は調整用のためPICの10ビットADC出力値をそのまま表示しています。

このコーディング中にちょっとトラブルがありました。数値を見ていると、BAは安定しているのですが、FRの方は妙にふらつきが見られました。

まずはADCの操作誤りを疑って見直してもわからず、ノイズかもしれないとADCを複数回動かして平均をとっても改善せず、そこでやっとオシロを取り出して波形を見たところ、以下のようになっていました。

Dscf2807 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ラジオをして仕上げたいと思います。

それではまたです。

トラックバック

この記事のトラックバックURL:
http://app.blog.ocn.ne.jp/t/trackback/240957/24601049

この記事へのトラックバック一覧です Aitendo M6959 + 秋月I2C LCD その4

コメント

ezekiel様。こんばんは。
 

「JC12864」で検索するとこのLCDをお使いの方のページがいくつかヒットします。
だいたいシリアルでやられていますが、一番下位の関数だけ下のようにしてパラレル用に変更すれば他はほとんど同じで出来ると思います。
 
コントローラのデータシート
http://aitendo3.sakura.ne.jp/aitendo_data/product_img/lcd/stn/JC12864/st7565r.pdf
 
のP23を見るとパラレルでの信号の定義、P60に制御タイミングが書いてあります。
例えば以下のようにしてP60の動作をするように下位関数を改変します。
(とりあえずコメントで手順だけ書きます。)
 
//************************/
// パラレルコマンド書込 */
//***********************/
void jc12864_write_cmd(unsigned char command)
{
// A0=0とする(コマンドモード)
// CS1=0とする
// WR=0とする
// command をデータバスに出す
// tds8だけ待つ。
// WR=1とする
// CS1 = 1 とする
}
 
//************************/
// パラレルデータ書込 */
//***********************/
void jc12864_write_data(char data)
{
// A0=1とする(データモード)
// CS1=0とする
// WR=0とする
// data をデータバスに出す
// tds8だけ待つ。
// WR=1とする
// CS1 = 1 とする
}

細かいところが間違ってたらすみません。

すみません、ご迷惑おかけします。
パラレルで表示させて見たいと思っています。

i2cの通信の仕方も興味が有りまして、見習い職人さんの
今回オープンにされていますi2cのソフトの中味の仕方を見て
少し勉強してみたいと思っていますので、どうしても理解出来ないところが有りましたら、また教えて頂ければ有り難いです。
すみません、色々と勝手なお願いばかりして。
宜しくおねがします。

ezekiel様。おはようございます。
「JC12864 」のページを見ました。ドットマトリクスタイプですね。
インタフェースがパラレル/シリアルの2モード有り、どちらを選ぶかで使い方が変わってくるようです。どちらでお使いのご予定でしょうか?

I2C修行者様。はじめまして。
 
DACでの制御も面白そうですね。TUNED信号と組み合わせるとオートスキャンもできそうですね。
 
現状のVR方式はDSPラジオでありながら、特に短波を聴くときに微妙なアナログ調整で合わせていく感じが懐かしくて、結構気に入っていますので、しばらくはこれでいじってみたいと思っています。

PUP様。おはようございます。
情報ありがとうございます。この抵抗はちょっと気になりますね。電圧調整範囲が狭まると思いますが、もしかしたらそれが前提で周波数範囲が設定されているのかもしれないですね。

こんばんは
凄い実行力ですね、考えた事を形にする。
私には真似が出来ませんね。

今回見習職人さんが作られている件とは、関係無い事ですみませんが
ディスプレイに関する事で教えて下さい。

128×64のSTNの液晶の使い方の基本はどの様に成っているのでしょうか。
何か参考に成るサイトでも有りましたら教えて下さい。
物はaitendoの「JC12864 」です。

すみませんお忙しかったら、一段落されてからでも結構です。

はじめまして、私もaitendoの福袋 R を購入して何から作ろうかと思案しております。M6959の記事を興味深く拝見しております。
以前に単体でaitendoからM6959を買い、そのまま組み立てましたが、バンドや周波数が読めず、同じようなことを考えておりました。私はもう少し先も考え、どうせ電圧を読むのならMCU側でDACを使って電圧を発生すればボリュームも使わずに正確にバンドや周波数の制御もできる(もちろんLCDへの表示も)のではと考えました(全く実行しておりませんが)。要するにI2Cの信号制御の代わりに電圧による制御をやろうということです。この考えは馬鹿げていますかね (Hi Hi)。では、電圧読み出し方式の進展を期待します。

見習職人さん、おはようございます。

既にほぼできているんですね、すごい!!
aitendoさんのDSP6959の仕様を確認すると、TUNE-VOLの前後に3.3Kの抵抗で、下駄をはかせたようになっていますね。
http://www.aitendo.com/product/7353
これは、ボリュームのMINとMAXの前後で周波数が変化しない事の改善案?でしょうか??
では、完成を楽しみにしております。・・・・

PS
私は、加工は大好きですが、回路、プログラムが未熟で、みなさんに協力していただきながらの完成までたどり着く・・・です・・・。
今回のカウンターは、是非私のラジオにも実装したいと思います。
PICのハードルが高いですが、頑張ってみようかと思います。

コメントを投稿