いつもありがとうございます
SMD工房です。
YOYOPOVの技術を利用し、
ハンドスピナーで動画再生するSPINPOVを作成しました
このSPINPOVはMakerFaire Tokyo 2017で展示したものです。
静止画も表示可能です。
基板(表)はこんな感じです↓。
全て手はんだです。
基板裏です。
電池が重りになっています。

SPINPOV基板(裏) posted by (C)SMD工房
■SPINPOVスペック
・CPU : PIC18F14K50
・色: RGB各8bit
・画像枚数: 680枚
・LED : RGB各32個 (1005サイズ)
・1周 : 256分割
■SPINPOV製作から検出された課題1 : CPUの致命的なエラッタ(公式にはエラッタとしては掲載されていない)
ハンドスピナーの回転速度を上げた状態でも正しく表示するには、それに見合ったLEDドライバーの転送速度が必要になります。
しかし、SPIの速度を最速にすると、なぜか鈍った波形が出力され、データ転送できなくなる問題に遭遇しました。
SPINPOVではSPIの転送速度を一段階落として使用しているため、回転速度を早くすると転送が間に合わなくなります。
データ転送が間に合わないことを検知した場合は、データ更新を飛ばして画像が荒くすることで回避しています。
■SPINPOV製作から検出された課題2 : CPUの性能限界
LEDドライバーのデータをラッチするにはシリアルクロックに合わせてラッチ信号を出力するのですが、シリアルへの送信を開始してからタイミング待ちしてラッチ信号を出力しても、ラッチ信号の微妙なズレによってデータのラッチが不安定になります。シリアルの開始と命令の処理のタイミングによるものでこのCPUを使用する限り発生する問題の様です。
SPINPOVではラッチタイミングだけソフトシリアル処理でこの問題を回避していますが、データ転送速度が大幅に遅くなってしまうため、データ転送が間に合わない原因の1つになっています。
■SPINPOV製作から検出された課題3 : CPUの仕様限界
CPUからLEDドライバーへのグローバルクロックを供給する場合、6MHzが限界です。
6MHzでは、ハンドスピナーの回転速度を上げた際に、中間調の色がドットに見えてきます。
SPINPOVでは12MHzのMEMSモジュールクロックを使用し、CPUとLEDドライバーにクロックを供給していますが、モジュールクロックが高価なため、できればCPUからグローバルクロックを供給したいと考えています。
ハンドスピナーを遊んだことがある人はお分かりと思いますが
長い時間回転させるには、ハンドスピナー起動時の回転速度をできるだけ速くしたいと思います。
しかし、SPINPOVの高速回転に対応するには、CPU変更が必須です。

