QY20 表示部(LCD)を自作①

2023/11/26

RP2040 YAMAHA QY20 実験 電子回路

 YAMAHA QY20が使用不能になる原因の多くは、いかの3つです。

  • 表示されなくなる
  • 音が出なくなる、バランスが悪くなる、ノイズが多くなる
  • 全く動かない
音は、コンデンサの交換や断線部の修復で、ほぼ修理可能です。全く動かない多くの原因は、断線ですが、IC故障もあり、復旧に時間がかかったり、修復不可能な場合もあります。

表示されなくなる原因は、以下の3つに分けられます。
  • 表示用コンデンサの容量抜け
  • 表示用の-10vを作り出すMAX680の故障
  • 液晶自体の損傷(液晶漏れ、焼け)
液晶自体の損傷ならば、液晶部の問題ない不動QY20から移植するしかありません。すなわち、1台は捨てることになります。動かないQY20を手に入れることも簡単でないので、液晶部を作ることにしました。

ますは、サイズの合う液晶を探します。オリジナルの液晶は、DMF50202Nです。128x64dots、モノクロ表示。QY20の液晶表示窓は、約58mm x 42mmです。サイズで合いそうなのは、MSP2807です。
試しに購入して、格納できるサイズか確認しました。オリジナルはこんな感じ。

MSP2807はこんな感じ。ネジ穴を合わせる別部品を作る必要はありそうですが、収まるサイズでした。

表から見た全画面は、こんな感じ。画面として使えそうです。


このMSP2807は、340x200dotsなので、同じドット数だと小さな表示なります。なので、QY20の1dotあたり、2x3dotsで表示することにします。すなわち、256x192です。少し縦長なりそう。処理能力があれば、2.5x3dotsにして、0.5は補間処理を入れるのも想定しておきます。

問題はLCD制御変換です。dot変換するために、一画面をバッファリングする必要あります。MSP2807は、1dot当たり16bitsのため、一画面分を転送するので、125kbytes必要です。さらにSPI通信のみです。PIC16F系では、メモリも速度も無理です。なので、Seeed XIAO RP2040を使うことにしました。これでも、処理速度が足りないかも。

Arduino IDEを使って、MSP2807を動かすプログラムを作成。ライブラリなどをいろいろ探しましたが、直接SPIでコマンド書いたほうが、プログラムも簡単で、無駄な処理もなくなりました。しかし、1画面当たり、200ms位かかります。うーん遅すぎ。SPIは、16Mで動かしています。確かに、128k x 1024 x 16 / 16M = 0.128で、データ転送だけで128ms必要です。


QY20のLCDコントローラ出力を調べると、なんと15msで一画面を作っていました。まぁ、128x64dotsの単色なので、そうでしょうね。

SPIの転送速度をどれだけ上げられるか、または1dots当たりのビット数が少ない、同サイズの液晶を探す必要がありそうです。まずは、これで作ってみて、ロジックの確からしさと、使用に耐えられる表示か確かめることにします。

QooQ