2021年2月25日木曜日

VFD_LD8035E_CLOCK 開発日誌(12) マイコンをPIC32MMからPIC16F19155に変更しました。

 マイコンをPIC32MMからPIC16F19155に変更しました。

左がPIC32MMで右がPIC16F19155です。


このマイコンはプログラムメモリが8kW(14kByte)しかないため、プログラムを小さくしなければなりません。 PIC32MMからPIC16F1955にプログラムを移し替えた当初85%程度のメモリ消費量でしたが、プログラムを見直して65%程度のメモリ消費量まで小さくできました。


また、周辺peripheralが充実しており、PWMやCCP、CLC、CWGを使うことでプログラムを簡素にする事ができます。


下図がマイコンをPIC16F19155に変更した全体の回路図となります。 マイコンの電源も5Vを使用する事が出来る為、3.3VのレギュレータやVFDドライバHV5812のコントロール信号のPULL-UP抵抗を省略する事ができました。



PIC16F19155は、PWMやCCP、CLC、CWGが充実していて、またMCCの画面もPIC32MMに比べて若干分かりやすい気がします。 これらのperipheralを使用して構成したVFD部分の表示ロジック回路を下図にしまします。

7セグメント8桁部分のデータ送信にはSPIから送っています。SPIで16ビットのデータを送信した後、OUTPUTピン(STORBE)をソフトウェアでH⇒Lと駆動して設定します。

フィラメントの為の電源は、PWM3とCWGをプッシュプルモードで使用して、HブリッジのBD6211Fを駆動して得ています。 またCWGの出力ABをORで受け、反転させて出力し、HV5812のBLANKINGに入れる事で、各桁の明るさの調整としています。(※しかしながらこの方法では個別桁の明るさ調整の効果はあまり確認できませんでした。)


圧電スピーカーのBEEP音についても、PWM4を使用して基本の音を作成しています。

それを鳴らしたり止めたりするのに、OUTPUTピンRA6を経由して、CLC1,CLC2のCLCIN0へHigh, Low信号を送っています。これとPWM4の信号をCLCのAND回路を使って出力する音のON-OFFを制御しています。 PWM4の出力をCLC2へ入力するところで反転しているのは、圧電スピーカーをAC駆動する為です。(RC7がHのときRC6をLとする。またはRC7がLのときRC6をHとする。)


20210225(+12.0h)


※PIC16F19155を選んだのは(株)秋月電子通商で扱っているからというのがありますが、

RTCCがあるのとバッテリーバックアップ用のVBAT端子があるのが大きなポイントだったりします。

時計としての主な機能を組み込んで現在70%のメモリ消費量なので、あとどれくらい機能を盛り込めるかはメモリしだいとなります。

あと組込みたい機能としては、

1.RTCCのキャリブレーション機能

2.表示のディマー機能

3.シリアルのモニタ機能

といったところです。




2021年2月22日月曜日

VFD_LD8035E_CLOCK 開発日誌(11) スイッチと圧電スピーカーを追加

 回路にスイッチ4つと圧電スピーカーを追加しました。

スイッチで、下記メニューを表示して設定します。

・時間設定

・アラーム設定

・アラームON

・アラームOFF

・各セグメントの明るさ設定


スイッチを押すたびに、圧電スピーカーからBEEP音をならすようにしました。 このBEEP音はPIC32MMのPWM機能で鳴らします。 何種類か音を鳴らせるように工夫したのですが、なぜか時々BEEP音が鳴らない事があり原因不明です。 たぶんプログラムがヘタッピーなのでしょうが、時々発生する不具合というのは問題点を見つけるのが難しいものです。


最新の回路図を描きに添付します。

20210216(+4.0h)


2021年2月13日土曜日

VFD_LD8035E_CLOCK 開発日誌(10) SOSC動きました。。。しかしながら原因不明、、、

 動かなかった SOSCですがあちこち弄っているうちに復活しました。。。止まっていた原因不明です。


使用しているPIC32MM0256GPM048ですが、OscillatorにErrataがあります(ありました)。

Silicon Revision がA1にこの問題があったようなので、念のため今使っているPICのリビジョンをMPLAB X IPEで調べてみます。


Read Device ID をクリックすると Device Revision ID = 0xA2 と表示されますので、Oscillater の問題は解消されているようです。
ついでにDevice ID を確認するには、window >Target Memory Views > Device ID Memory とクリックすれば、Device ID が773C053と読み取れるようです。

せっかくなので、真ん中あたりにある「Erase」ボタンを押してPICをキレイにしておきました。


この後、MPLAB X で再度、SOSCを試していたところ、、、なんといつの間にか動いているではありませんか。。。謎すぎます。。。


さて今回色々調べていて、何点か重要な点がありましたので、下記に記載しておきます。

  • 新しいPICのSOSCには、”High Power mode” と”Normal(Low) Power mode”があります。
  • オシロノプローブをSOSCIに当てると発信がとまります。 今回はSOSCOにプローブを当てて確認しました。 ※"Microchipの(SOSC)水晶振動子回路の設計における注意点 DS00002351A_JP"では、SOSCI側にプローブを当ててドライブ電圧を確認するとなっていますが、新しいPICでは発信が止まってしまうようです。
  • High Power mode では、SOSCOと VT-200 crystal の間に510kの抵抗を入れて400mVぐらいでドライブします。
  • Normal(Low) Power modeでは、SOSCOと VT-200 crystal を直結し、300mVぐらいでドライブします。
  • MCCではデフォルトで”Normal(Low) Power mode”が指定されるようです。

以下”Normal(Low) Power mode”と”High Power mode” の所設定と観測波形です。

PIC32MM0256GPM048の場合の設定か所は、FDEVOPT registerの SOSCHP bitです。


”Normal(Low) Power mode”の場合のCONFIG設定出力です。

”Normal(Low) Power mode”の場合のSOSCIの観測波形です。



”High Power mode”の場合のCONFIG設定出力です。

”High Power mode”の場合のSOSCIの観測波形です。

※注意SOSCIの出力に510kΩの抵抗を入れた先の Crestalに入力する端子部分の観測波形となります。


とりあえず動きましたので、続いてスイッチ操作によるメニュー表示などのプログラムコーディングに入りたいと思います。

20210213(+5.0h)

2021年2月11日木曜日

VFD_LD8035E_CLOCK 開発日誌(9) SOSC動かず、、、

 今回 PIC32MM0256GPM048 を使っているのですが、、、ここにきてどうやってもSOSCがどうやっても発信せず、途方にくれています。。。困った。。。


SOSCには、32.768Khzのクリスタルを繋ぎ、、


MCCからシステムの設定で、SOSCを使用するに指定、、



しかしながら、SOSCの信号は、下記のような変な信号、、、





CONFIGの、SOSCEN・SOSCSELをONにしようがOFFにしようが全くかわらず。。3日ほど悩んでますが解決せず。。。




VFD_LD8035E_CLOCK 開発日誌(8) VFD フィラメント駆動方法。

 VFDのフィラメントの駆動には、Hブリッジドライバ BD6211F を使用して、交流で直列に繋いだ6個のVFDのフィラメントに電圧をかけています。


各VFD管の明るさを調整する為、そのVFD管を光らせる時にPWMでフィラメントの電力を増減させるアイデアです。


1.PWM信号①⇒JKフリップフロップ⇒HブリッジのLRをシーソーのように交互にHighにする信号②の生成。

2.上記①と②の信号をAND回路で合成してHブリッジを駆動する信号を生成。


1-①PWM信号の生成


1-②JKフリップフロップで1/2に分周し、HブリッジをONにする信号を生成。


PWMとJKフリップフロップの信号をANDで合成。
※PWMの出力をCLCINA, JKフリップフロップの出力をCLCINBにつないでいます。
PWM信号とJKフリップフロップの出力をMCCで直接指定できないため、一旦ポートに出力して、再度CLCINA,CLCINBに入れています。

※JKフリップフロップの入力はCLCINBから反転させてロジックにつないています。


上記手順で生成した出力信号です。一番上の赤から、、

赤:PWM出力

黄:JKフリップフロップ出力

青:AND①出力

紫:AND②出力


これで調整幅はすくないものの、各VFD管の明るさを個別に調整できるようになりました。

しかしながら、この明るさの調整は気休め程度です。 


VFD管を1msecでダイナミック駆動した所、各VFD管の明るさの差が少なくなりました。下記に表示の様子をしまします。 20210207(+6.0h)








2021年2月4日木曜日

VFD_LD8035E_CLOCK 開発日誌(7) 試作全体の仮組完了し表示テスト。

 試作全体の仮組まで終了しました。20210130(+3.0h)

CPU部分は、以前に組み上げた基板を流用しています。



とりあえず、通電してテストプログラムを作成し、VFD管が表示される所まで確認しました。

しかしながら、VFDドライバへのデータ伝送をSPIを使用して試みているのですが、思惑通りに動かず、VFDドライバ駆動部のロジックの解決にはちょっと時間がかかりそうな雰囲気です。20210131(+3.0h)

VFDの各管の表示にバラつきがあるのですが、これはVFDのフィラメントを直列に接続して片側に電流制限抵抗を入れたのが原因と思われます。

全体の回路図は以下のような感じ。


VFDドライバのシフトレジスタへのSPI機能によるデータ伝送が出来るようになりました。最初SPIモード1で上手く伝送できず、色々と試しました。

SPIモード0でデータを送っています。20210203(+4h)


またVFDドライバHV5812とグリッドの接続が1ピンづつずれていたので、配線を修正しています。


KT0913 FMラジオの作成(8) 出来上がったPCB基板にミスあり。

  FusionPCB から基板がとどきました。20240121. 1月11日に発注したので10日で出来上がって届きました。 早速組み立てましたがが、イヤホンジャックのフットプリントが裏返っており、痛恨のミス。。。 しかしながら、他にも問題が無いか一通り組み立ててチェックしました...