スポンサーリンク


RAKUTEN

  • スポンサーリンク

« 2013年12月 | メイン | 2014年2月 »

2014/01/28

Aitendo M6955 + 秋月LCD+ロータリーエンコーダ その4

次はLCDを動かそうと思ってその分の回路だけ引いてみました。

Encoder_lcd2_2 

(2014/02/02 LCDコネクタ周りを修正しました)

回路図の右の方に秋月のLDC超小型グラフィックLCDモジュールAQM1248A(変換基板に搭載)を追加してます。

 

前回使ったキャラクタタイプがI2CだったのでなんとなくこれもI2Cだろう、と思っていたのですが、いま頃になってこのLCDがI2CではなくてSPIだと気づきました。

 

DSPラジオモジュールとM6955と同じI2Cバスにぶらさげて、同じサブルーチンで動かすつもりだったのですが、少なくともサブルーチンは分けないとダメですね。ピンを共用するかどうかはちと考えます。

 

しかし、SPIということなら、去年FRISKに入れたOLEDもそうだったのを思い出して、SPI用のピン配置をそのときの回路と一緒にしました。これでその時使ったサブルーチンがそのまま使えるはずです。

 

早く動くのが見たいところですが、さすがに平日の深夜に半田付けまではできないので、今日はここまでです。

 

それではまたです。

2014/01/27

Aitendo M6955 + 秋月LCD+ロータリーエンコーダ その3

平日ですが、ちょっと時間が取れたのでロータリーエンコーダのテストをしてみました。

Dscf2837 動画じゃないので全然わかりませんが、回転方向、回転速度、スイッチ状態によって以下のようにLEDの色を変えるようにしてみました。

 ・右回し/速めに回し   : 青点滅

 ・右回し/遅めに回し   : 紫点滅

 ・左回し/速めに回し   : 緑点滅

 ・左回し/遅めに回し   : 黄色点滅

 ・スイッチオン        :回転を無視して赤点灯

動画は少なくともLCD表示と連動してからにしたいと思います。

ソースは以下の通りです。

「encoder_test.c」をダウンロード

最初ms単位のインターバルタイマ割り込みでエンコーダ状態スキャンしていたのですが、それだと取りこぼすことがわかり、現在は100us周期です。意外と速いものですね。チャタリングは3回同じ値が続いたかどうかの判定で回避しています。(多分出来ていると思います。)

  

今のソフトはロータリーエンコーダの動作確認用にはとりあえず良いと思いますが、ラジオのインタフェースとしては実際に操作してみないと何とも言えません。まだ先が長いですが、いずれラジオとして完成してから調整していきたいと思います。

 

それではまたです。

2014/01/26

Aitendo M6955 + 秋月LCD+ロータリーエンコーダ その2

まずCPUとロータリーエンコーダの接続から始めました。

Dscf2834_2 Dscf2836

CPUは以前OLED用に使ったPIC24FJ64GA002にしました。

基板はAitendoのFRISKサイズのものを使い、CPUを乗せたらちょうどエンコーダ分のスペースができたので、一緒に乗せてしまいました。これで、エンコーダを軸ねじで基板ごとケースに固定する予定です。

回路図は以下の通りです。

Encoder_test_v2

エンコーダのLEDは赤と青・緑でVfが違ったので、抵抗値を変えてIfを合わせています。

ロータリーエンコーダのSW端子はオンで電源側に繋がる仕様なので通常大きめの抵抗でプルダウン、SWが押されるとハイレベルになるようにしました。

 

ラジオモジュールとLCDの電源が3.1〜4.5Vです。電池2本だと減ってくると3Vを切ってLCDが薄くなるので、3本で4.5Vとしました。LCDは2.4〜3.6V、M6955は2〜4.5Vでした。ロータリーエンコーダのLEDのVfが3V以上あり、3.3Vでは不足しますので、4.5Vとしました。

しかし今度はCPUが2〜3.6Vなので落としてやる必要があります。3.3V降圧レギュレータの手持ちがなかったので、部品箱にあったシリコンダイオードを使ってVfで電圧を落とすようにしました。

 

あとはソフトです。とりあえずエンコーダRGB-LEDをチカチカさせているだけの状態です。エンコーダ入力のハンドリングができたら一度アップしようと思います。

 

それではまたです。

Aitendo M6955 + 秋月LCD+ロータリーエンコーダ

M6959が結構良く聞こえましたので、そのシリーズで次はLWも聞いてやろうと思い、LW対応のM6955に目をつけました。

Dscf2832 これはI2C制御で前回のM6959とはインタフェースが異なります。

前回と逆にVRの電圧値を読み取って対応する周波数をI2Cで設定しようかな、と最初思いましたが、ちょっと思うところがあって、ロータリーエンコーダ方式にします。

 

Dscf2833 別途秋月電子で買ってきた部品です。LED付きロータリーエンコーダグラフィックタイプの小型I2CーLCDおよびピッチ変換基板です。

 

ロータリーエンコーダはチューニング用ですが、回転速度を見て周波数ステップ幅を変えることでおおざっばな調整からファインチューニングまで1個で対応、ついでに速度に合わせてLED発光色も変えると面白いかな、という考えでこれにしました。

 

グラフィックタイプLCD使用は、M6955がRSSI(受信強度)レジスタを持っていますので、その読み取り値を使ってスペアナ的なバンド状態表示ができたら良いな、という考えによります。

CPUは前回PIC12Fではメモリサイズで苦労しましたし、グラフィック表示も考えていますので、過剰性能かもしれませんがメモリの大きいPIC24Fにしようかと思います。

 

業務多忙のため平日はできず週末進行となりますので、2月末頃完成が目標です。

 

それではまたです。

2014/01/19

Aitendo M6959 + 秋月I2C LCD その9

一応(ほぼ?)完成しましたので、メイキングと動作を動画にしました。

ちょっと音が小さくてピンボケです。。。。

回路は変えていませんが、LCDの接続が間違っていたので修正したものをアップします。

M6959_lcd2_v2_2

(過去記事の回路図は赤字修正済みです。)

プログラムは以下の通りです。

「PIC12F_FMAIN_V2_1.c」をダウンロード  (2014/01/19 PM9 CONFIG BUG FIX)

「PIC12F_I2C_V2.c」をダウンロード

プログラムサイズと有効桁数の両方でかなり苦労しています。

周波数演算でINT型では演算途中でオーバフローするのが明らかなので始めは普通にLONG型を使おうとして一気にサイズオーバになりました。LONG用のライブラリをリンクするためですね。

仕方がないので基本INT型にして演算途中で桁あふれする所で100で割った数値とその余りに分割して別々に演算するようにしましたが、それでも不足して。。。その後はとにかく各所を切り詰めてなんとかコンパイル・リンクできるようになりました。現在のコードでROM使用率98.4%です。良く入ったものです(^^;

 

ご注意ですが、全くの現物合わせで作っていますので、モジュールの個体差に合わせて調整の必要があるはずです。ソース内のbandfreqmin[]、bandfreqmax[]の数値を各バンドごとに調整するように作ってありますので、ご参考にされる場合はそこをご調整ください。

 

今のソースでは私の使っているモジュールに合わせてFMとAMは調整してみましたが、SWは未調整です。いま聞いてみたSWで表示と実際の周波数をいくつかサンプルしてみました。

左が正しい周波数、右が表示です。

   ・ラジオ日経  3.925 -> 3.87MHz
   ・朝鮮の声   9.65  -> 9.60MHz
   ・台湾国際放送  11.605 -> 11.59MHz

数10KHz低めに出ています。係数の丸め込み誤差の影響かなと思いますが、素子の特性かもしれません。現物合わせなんでなんともいえないですね。

各バンドのbandfreqmax[]を少し大きめに調整すると合いそうですが、目安としては結構使えていますのでとりあえずここまでとしてしまいました。

各バンドで2点のサンプルがあればもっと適切に調整できますが放送局任せだと中々都合よくいきませんね、そのうちよい調整方法を思いついたらなんとかしようかと思います。

  

とりあえず今回はここまで。

それではまたです。

Aitendo M6959 + 秋月I2C LCD その8

ふと思いついて前回のAM,FMグラフを正規化してみることにしました。

 

正規化は、 それぞれの周波数範囲(FMAX〜FMIN)を0〜1、電圧変動範囲(VMAX〜VMIN)も0〜1に変換することで行います。つまりFMでしたら70〜93MHzを0〜1に、電圧範囲はVRを値を最小にした状態でのADC値(測定値では327)、最大(1023)を0〜1にします。

 

正規化し、AM,FMのデータ散布図を合成した結果が以下の通りです。

Photo

表の黄色が正規化された数値です。散布図も予想以上に綺麗に並んでくれました。

これでAM,FMともに同じ一次式で周波数計算ができそうです。

データから求めたところでは、その式は以下の通りです。

 ● 正規化周波数 f  = 1.182 *  正規化ADC値 - 0.074

   ※係数はたまたま私が使っているモジュールの値なので

     物によって多少違うと思います。

これから表示周波数を以下で計算できます。

 ● 実際の周波数 F = f * (fmax-fMin)  + fmin

確認できていませんがSWも同じ式で計算できること期待しています。

実はSWに関しては簡単なMHz帯正弦波発信回路を組んでみまして、それで電圧と周波数の関係を取ろうとしているのですがうまくいっていません。。。。受信周波数でTUNED信号がオンするはず、と思ってやってみたところオンしませんでした。

 

発振回路の出力はオシロで見ていますし、市販の短波ラジオで試すと発振周波数でラジオの受信LEDが光るので、狙った周波数はでているはずなのですが。。。このDSPモジュールは変調されていないと認めてくれないのでしょうか?

 

そちらはもうちょっと手間がかかりそうなので、まずは上の計算式をプログラムに入れようと思います。といいながら、実はそっちのほうも今PIC12F683メモリサイズの制限で難航中です(^^; 各バンドの周波数テーブルと上の計算式を入れようとしたtらぎりぎりで足りなくなりまして。

中々スムーズにはいかないですね。また進展したらアップします。

 

それではまたです。

2014/01/18

Aitendo M6959 + 秋月I2C LCD その7

AMとFMで周波数のわかる商用放送局を受信してそのときのADC読み取り値との相関を取ってみました。

 

結果は以下の通りです。

Photo_2

FMの方は途中のコブがちょっと気になりますが、どちらもほぼリニアといっても良いと思います。これなら簡単な一次式で計算ができそうです。

ただし、係数はバンドによって変えないといけないと思われます。

 

この後SWの各バンドでも同様に確認をしますが、AMやFMほどには周波数サンプルにできる局がなさそうだし、私は発信可能な無線機を持っていないので(2級アマ無線の免許はあるのですが開局したこともないペーパです)ちょっと細工をしたいと思います。

 

それではまたです。

Aitendo M6959 + 秋月I2C LCD その6

前回のハード改修に続きましてソフトの動作です。今の表示は以下のような感じです。

バンド切り替えとTUNEDを表示するようにしました。周波数についてはすみませんがまだADC値のそのまま表示です。

Dscf2811 Dscf2812 Dscf2813

左からFM、AM、SW例です。AMの*がTUNEDを示しています。

しかしLCDの下の方はホコリが付きやすいのですね。掃除してから撮影すればよかった。

現状のソースをご参考に公開します。

「PIC12F_FMAIN_1.c」をダウンロード  (2014/01/19 PM9 CONFIG BUG FIX)

「PIC12F_I2C.c」をダウンロード

あとは周波数表示で完成の予定ですが、どうもいじってみていて周波数と電圧が単純比例でないような感じがしていて、ちょっと手間がかかるかもしれません。

補足ですが、8ピンPICを使っていてIO数が少ないため、PICKIT用のプログラムピン2本をVR電圧観測のアナログ入力と共用しています。このため、PICKITを使ったプログラムする際にはVRを中央位にしておく(つまりVREF-P/Nに対して25KΩの抵抗が入った形にする)必要が有りますのでご注意ください。

また進展したらアップします。

それではまたです。

Aitendo M6959 + 秋月I2C LCD その5

昨夜出張から戻りましたので、少し改良しました。

まずハードの方で、電池が減ってくるとADCの読み取り値が変動してしまう現象が有り、それに対処しました。この現象はお恥ずかしい話で、PIC内蔵ADCのリファレンス電圧をVCCにしていたのが原因で、電池駆動なんだから変動してあたりまえでした。

対応として、M6959モジュールのVREF−PをPICのVREFに入れるようにしました。しかしVREFはTUNE電圧観測用にAN1として使っていたので、そちらをAN2にシフト。さらにAN2のピンをTUNED信号の観測用にGP2としてに使っていたので。。。もう入力の空きがなかったのでTUNED信号は抵抗を介してSDAに使っているGP4に入れてしまいました。

修正した回路図は以下の通りです。

M6959_lcd2_v2

(2014/01/19PM6 :回路図間違いを修正しました。)

上のIOシフト以外に、LED−KをGNDに繋いでいます。最初はここを繋がないでLED−AをPICに繋いでいたのですが、なぜかそれだとVRによるTUNEが効かなくなり、ここを繋ぐとそれが解消することが分かったのでこうしています。理由はわかっていません。

 

GP4については、通常は出力モードにしてSDAとして使っていますが、TUNED信号状態を読むときに入力とします。

SDAはI2CプロトコルのACKタイミングでも入力としてM6959が応答を返しますので、そこでTUNED信号とかちあってしまいますが、元々ACK応答を見ていないので、まあいいや、ということにしてしまいました。

なお、もうひとつあいている入力専用ピンGP2をTUNED観測に使おうかとも思ったのですが、ここはリセットと兼ねていて、リセット使用をオフにしてもPICKITとかち合うためプログラム時用の切り替えスイッチをつける方法しか思い浮かばずに断念しました。

長くなりますのでこの改修に対応したソフトは記事を分けます。

それではまたです。

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

それではまたです。

Aitendo M6959 + 秋月I2C LCD その3

LCDテスト表示ができました。

Dscf2806

ちょっとソフトバグで手間取ってしまいました。I2Cの制御は以前別のDSPラジオIC用に作ったものを流用したのですが、そのSTOP制御が間違ってまして。。。

 

そのときは顕在化しなかったのですが、今回のこのLCDは許してくれないらしく、最初の書込みはうまくいくのですが、その終結が認識されないため、その後の書き込みが妙な具合にずれていく、という現象となり、解析にかなり苦労しました。

 

とりあえず、最初の写真のように、テキストと数字の表示ルーチンができましたので、

そのテスト用ソースをアップします。

「PIC12F_I2C_TEST_1.C」をダウンロード (2014/01/19 PM9 CONFIG BUG FIX)

「PIC12F_I2C.c」をダウンロード

 

この次はADCを動かして、BAND電圧とTUNE電圧の確認をやります。

 

それではまたです。

2014/01/12

Aitendo M6959 + 秋月I2C LCD その2

とりあえずケースに入れて配線しました。ソフトがまだなので表示はできませんが、ラジオとしては動いています。

Dscf2792 Dscf2798
真中と右下のVRがチューニング用です。PUP様のアイディアをマネさせていただいて、50KΩVRと直列に5KΩVRを入れてファインチューニング用としています。

右上のVRはバンド選択用です。抵抗直列でタップを出す配線がなんとなく嫌だったのと、切り替えスイッチの適切なのがなかったためこうしています。

TUNE電圧で周波数を推定する以外に、BAND電圧もPICマイコンで観測して、バンドをLCDに表示しながら選べるようにする構想です。

回路図は以下の通りです。

M6959_lcd  

(2014/01/19 PM6 回路図誤りを修正しました。)

PIC12F683のAN0,AN1でTUNE、BAND電圧を観測、GP4,5でLCDを制御します。

あと細かいところですが、GP2でTUNED信号を見て、LCD表示に反映させようと考えています。

このあとソフト作成に入ります。

それではまたです。

2014/01/11

Aitendo M6959 + 秋月I2C LCD

コメントで頂いたPUP様からの情報でM6959ではLWバンドは選べないとわかりました。

 

また、ブログ記事を拝見していて、このモジュールはチューニング用ボリュームの位置と周波数の関係が安定している、ということもわかりました。

 

と、いうことはボリュームの電圧を測定して演算すればある程度の周波数表示ができるはず、と考えて次はそれにトライしてみます。

 

表示は手持ちの秋月電子超小型8x2行LCDでやってみます。これは小型だしI2C制御なので配線も簡単にできます。

Dscf2776  Dscf2777

これとPIC12F683を使う構想で半田付けを始めました。

とりあえずPICKIT3でプログラムできるところまで作りました。

Dscf2779  Dscf2780

Dscf2783  

回路図はこのあとM6959と組み合わせて動作できるようになってからアップします。

 

それではまたです。

2014/01/05

AitendoのDSPモジュールM6959

昨日買ったAitendo福袋の中身を早速一つ動かしてみました。

やってみたのはDSPラジオモジュール(18バンド)[M6959]です。

Dscf2767 Dscf2768

これはFM/MW/SWで合計18バンドという優れモノです。

操作は選局、音量ともにVR操作によります。回路的にはVref-PとVerf-NをVRで分圧して入れていますので、AD変換して電圧値を見ているのですね。

接続図を見るとバンド切り替えは直列10KΩ抵抗x16のタップ切り替えになっていますが、これだって同じように電圧を見ているのでしょう。16個も抵抗持たせるのめんどくさいので、これもVRにしてしまいました。ということでお試し回路図は以下の通りですl。

M6959 

かなり簡単な回路だし、今回はお試し用で適当配線なのですぐできました。

配線結果は以下の通りです。

Dscf2770 

半固定はたまたま有った50KΩ2個を選局とボリュームに使いました。

VRは100KΩで、バンド切り替えに使っています。

聞いてみたところ、電源オンでFM放送があっさりと聞えました。バンド切り替えはどうかなあ、と思ってバンド切り替え用VRを回していくと、AM放送もあっさり聞えました。音も中々良いです。ほんとにDSPラジオはいやになるくらい簡単に動きますね。

とりあえず動くことと、バンド切り替えが電圧制御だけで簡単にできることが確認できましたので、バンド切り替え方法をもう少し改善して、ケースにいれてやろうかと思います。

あとはSWの確認と、できればLWについても。。。。このモジュールの説明にはないですが、乗っているDSP6959の説明にはLWの記載が有ります。チップのデータシートを見ても8ページにLW(150KHz〜285MHz)の記述がありますので、多分LWにも対応しているのだと思います。

データシート中国語なんでさっぱりなんですが(^^;回路図を見ると、今はGNDに落としているBAND-FMピンを使うことでLWも選べそうに見えます。ネットで調べるとその帯域使っているのはロシアの放送位らしいので選択しても聞えるかどうか分かりませんが、一度実験はしてみたいです。

それではまたです。

2014/01/04

Aitendoの福袋2014

あけましておめでとうございます。昨年末からだいぶ間があいてしまいましたが、今年も暇を見て更新していきますのでよろしくお願いします。

 

今日都内の親戚の家にでかけましたので、途中で秋葉原のAitendoに寄って福袋を買ってきました。

Dscf2757  Dscf2758

今日の午後4時半頃に行ったところ、店舗内に置いてあったのは5箱、R,M,Aの3タイプでした。ホームページによるとLもあったみたいですが、それは売り切れなのかありませんでした。

 

各タイプの説明は特になかったので、RがRadioだろうと推測してRを購入しました。

他のも欲しかったのですが、一人ひと箱なので仕方なしです。

Dscf2759  Dscf2760

リストによるとDSPラジオモジュールが5種類、ラジオキットが3種類です。

マル秘袋は超シンプルラジオモジュールEN803でしたので、全部でラジオ9種。

他にラジオ表示器、電池BOX、マイクロスピーカ、プロトタイプシールド基板、

,なぜかIDE変換基板、DCモータ。

あいかわらず太っ腹ですね。

 

各ラジオは暇を見て動かしていきたいと思います。

しかし他のタイプの中身が気になります。

Mがマイコン、Aがアナログ、Lがロジックですかね?

http://www.aitendo.com/product-list/862 に説明がありました。

Lは液晶中心、AはANUX他、MがMP4他、ということです。

R以外だとLも欲しかったところですが、残念ながら既に全部在庫切れですね。

 

  

それではまたです。