mNEFOのメモ帳

ツイッターとかに書ききれなかったメモの集まり

盆休みの成果(Web Serial)

HTMLやjsはよくわからんのでAIに相談しながら作ったやつ。 AIには引き出し役になってもらう感じで進めた。RP2350時計のUIとしてHTMLが使えるのはいいけど、 HTML側からの命令群がどうしてもコピペになる(ソースや世界が別なのでどうしようもない)のがちょっと面倒。 共通の定義ファイルとか作れると楽だろうけど難しいな。 mnefo.github.io

RV-8803-C7の割込みの罠

RV-8803-C7の割込みには数種類あって、CONTROLレジスタにフラグを立てて好きなのを選ぶ感じです。 今回はPeriodic Countdown Timer Interrupt(周期カウントダウンタイマー割込み)を使いたいのでデータシートの4.5.2の手順の通りやればいいはずですがうまくいきませんでした。 データシートだとCONTROLレジスタはデフォルトオール0であとは使うフラグを立てればいいだけなのですが、プログラムを書いて調べたところUIEビットが初期状態で立っておりいったん消す必要があった感じです。

ニキシー管のダイナミック制御におけるクロスフェード

縦軸は仮にデューティーとしているが、正しくはカソードの出現割合で60FPSで60回出現させたら最大という意味です。 (本物のデューティーはアノード側で制御しているので) 数字の0を表示しているときに0の出現回数を徐々に落として疑似的に暗くすると同時に、次の1の数字の出現回数を徐々に増やし明るくする。 すると0→1へ変化するとき徐々に重なりながら変化するクロスフェードとなる。 現在前述の考え方でカソード側の変数を変化させるようプログラムをしていますがなぜか無慈悲にパキパキ入れ替わるだけとなりクロスフェードしてくれない状態です。 (以前に作ったPIOではない制御ではうまくいっていた手法が通じなくっている)

概念図

PIOでのニキシー管の制御におけるクロック分周

RPシリーズのPIOは特に何も設定をしなければCPUのクロックそのままで動作します。 RP2350では150MHzです。前述のニキシー管制御アノード側PIOの一周期(.wrap_targetに戻るまで)が例えば800ステップだとすると、 150*106/800=187500、1秒間に18万7千500回繰り返すことになります(18万7千500FPS)。 そんな数字は当然ニキシー管自体が付いてこれない領域なので、CPUクロックを分周させて速度を落とします。 2分周なら75MHz、、、といった具合です。8管制御の場合、90FPSあたりが限度(これ以上増やすとゴーストが消えなくなってくる)です。 その時の分周は単純に150*106/(90*800)=2083となります。2083分周させればちょうどいい感じに800ステップのpioを90FPSでこなせるのです。 150*106/2083=72011 800*90=72000 とほぼ一致します。デューティーを可変させると当然PIOのステップ数が変化してしまいますが、同時に分周も設定してやるようにするとどんなデューティーでもおなじFPSで制御できるのです。 尚、RPシリーズのPIOの分周を途中で変更したいときはsm_config_set_clkdivではなく、pio_sm_set_clkdivをつかう。 前者はSMの初期設定時にしか有効にならない。途中で変えるなら後者。

RP2350Bでニキシー管時計

RP2350Bでニキシー管時計を鋭意作成中です。
当初はRP2354Bと16MBでフラッシュの二段構えにしようと試作をしたのですがどうもうまくいかず2350Bへ。

試作時(青い基板)
- マイコンRP2354B
- アノード TLP188
- カソード SN75468 + 91Vツェナーダイオードのクランプ
- アノード&カソード駆動 全部PIO(8アノード+10数字+2ドット)
- 電源 いつものLM3487と1:10トランス
- 高圧電源ノイズ除去 BNX02501L
- RTC RV-8803-C7
- GPS L80-R(入手性重視)
- Sensor SHT30-ARP-B2.5KS (パッケージテープ保護品)
- スイッチ TMHU26、チャレンジング防止シュミットトリガSN74LVC3G17DCUR
- 出来れば4層基板に挑戦

完成品(黒い基板)
- マイコンはRP2350Bへ
- センサーをSHT30からSHT40へ、LPS22HBもついか

なぜ2350Bかというと、ニキシー管の制御をPIOでやってみようかなと。
PIO制御自体は無事に構想通り実装できたのですがあまりにも正確無比に制御されているせいか、今までのクロスフェードの制御方法だといい感じにぼんやりしてくれない(ぱきぱき無慈悲に前後の数字がダブるだけ)のでいい実装を考え中の日々。
あとはWeb Serialだとかあまりの領域にlittleFSを載せて設定やログ取りをできるようにしたいと考えている。

H2D 3000時間経過

2代目のH2Dになってプリント時間3000時間が経過した。それまでに故障した部分は次の2点。
- 2026/02 ツールヘッド基板故障
- 2026/06 ACボード交換
ツールヘッド基板はちょうどノズルのclogと重なったので故障→温度制御エラー→clogだったのだと思う。交換は死ぬほどめんどくさかった。
wiki.bambulab.com
ACボードはチャンバーを最大の65℃で長時間プリントしていると急に温度センサーエラー(0℃になってしまう)症状の改善版への交換。
こちらもまあまあ面倒だったがツールヘッド基板よりは楽勝だった。
wiki.bambulab.com
電気系のトラブルがメインだがメカ系は特に異常もなくプリント品質も保てている。目指せ10000時間。