デフォルトで設定されているメニュー を完全に無効化して設定しなおす方法
デフォルトのメニューは type: disabled にすると部分的に無効化できるが、順番を変えるのが index を指定したりでめんどうさい。
以下のように display セクションで menu_root を指定してやると、自分で好きなように定義できる。
[display] menu_root: __main0 [menu __main0] type: list name: Main ...
デフォルトで設定されているメニュー を完全に無効化して設定しなおす方法
デフォルトのメニューは type: disabled にすると部分的に無効化できるが、順番を変えるのが index を指定したりでめんどうさい。
以下のように display セクションで menu_root を指定してやると、自分で好きなように定義できる。
[display] menu_root: __main0 [menu __main0] type: list name: Main ...
DS18B20 デジタル温度センサが便利。1-wire で複数のデバイスを同時に扱える。Klipper も対応している。
Raspberry Pi の場合 1-wire を有効にして GPIO4 (PIN7) に信号線を接続する。3.3Vから 4.7kΩ (信号線の長さで調整する)) でプルアップする。
あたりをモニタリングする。庫内温度は上と下で10℃ぐらい差があるのでどっちも見たい。
以下のように見える。22312 は1000倍した℃なのでこの場合は22.3℃
$ ls /sys/bus/w1/devices/ 28-03039794629e 28-0306979425a5 28-030f979445fd w1_bus_master1 $ cat /sys/bus/w1/devices/28-03039794629e/w1_slave 65 01 55 05 7f a5 a5 66 c5 : crc=c5 YES 65 01 55 05 7f a5 a5 66 c5 t=22312
以下のように設定する。
[temperature_sensor temp1] sensor_type: DS18B20 serial_no: 28-03039794629e sensor_mcu: host_mcu min_temp: 0 max_temp: 100
ただし、以下のように host_mcu が定義されていないとエラーになる。
Unknown config object 'mcu host_mcu'
rpi 自身をセカンダリーmcuとしてセットアップする必要がある。
上記ページの指示に従って host_mcu のサービスを起動する。そして printer.cfg に設定を追加する
[mcu host_mcu] serial: /tmp/klipper_host_mcu
これで動くようになる
しょうがないけど 1-wire は遅い。
OS起動直後、なんらかの原因で一部の 1-wire デバイスと通信できずに serial_no が認識されないと Klipper が起動に失敗する。
また 1-wire の通信に失敗すると Kilipper がエラーを吐いて止まることがある (1度あった)。のであまり大量に繋げたりしないほうが安全そう。念のためフェライトコアを噛ませている。
立方体とかをプリントすると角が膨らんでいることに気付くと思う。こういうのをできるだけなくすのが Pressure Advance 機能になる。
https://note.com/eitoku_note/n/n78f0d240940a このマクロをつかわせてもらう。
一番下は現在の設定値なので、その次のラインから console に表示されている値と突きあわせて見ていくのが早い。今回は 0.03 が適切だった。
Klipper はなるべく早く起動して、ディプレイに起動してますよというアピールをしてほしい。しかしいろいろ設定した printer.cfg だと、なるはやで起動というのが難しいことがある。例えば 1-wire のデバイスを設定していると、1-wire のデバイスが OS に認識されるまで klipper を起動できなくなってしまう (さもなくばエラーになる)
ということで、最小限の cfg を作って最小限の gcode を実行してすぐ終了するようなことを OS 起動初期にやりたい。
klippy.py に -i で gcode 入力ファイルを渡すとそのファイルだけ実行して終了してくれる。これをバッチモードという。
mcu のファームウェアを make したときにできる out/klipper.dict が必要になる。これは形式的にはJSONファイルで、mcu との通信プロトコルの規約が入っている。
以下のように cfg と gcode と dict を渡すと gcode の実行をして終了する。
/home/pi/klippy-env/bin/python /home/pi/klipper/klippy/klippy.py /home/pi/klipper_config/bootstrap.cfg -i /home/pi/klipper_config/bootstrap.gcode -d /home/pi/klipper/out/mcu_klipper.dict
以下のようにする。なるはやで起動してさっさと終了してほしい意図がある。もっといい方法があるかもだけどとりあえずうまくいっている。
$ cat /etc/systemd/system/klipper_bootstrap.service #Systemd Klipper Service [Unit] Description=Bootstrap klipper Before=klipper.service Wants=udev.target [Install] WantedBy=multi-user.target [Service] Type=oneshot User=pi RemainAfterExit=yes ExecStart= /home/pi/klippy-env/bin/python /home/pi/klipper/klippy/klippy.py /home/pi/klipper_config/bootstrap.cfg -i /home/pi/klipper_config/bootstrap.gcode -d /home/pi/klipper/out/mcu_klipper.dict
systemctl enable klipper_bootstrap.service
shutdown 時も同様のことをしたいが、batch モードではない klipper が終了するときに mcu を shutdown 状態 (estop) にしてしまいうまくいかない。batch モードではこの shutdown 状態を解除する方法がおそらくない (FIRMWARE_RESTART する前にエラーで死んでしまう)
一番良いのは Klipper を経由せずに (Rapsberry Pi の GPIO で) 起動状態を示す LED などを外出しすること。
Octopus の基板上の RGBヘッダは Stealthburner が使うので、さらにストリップを追加しようと思うとなかなかピンが見当らない。BLTouch のところがあいてるなら使える。(PB6)
片側15個、合計30個の NeoPixel ストリップを固定した。
LED Strip Holder for Voron 2.4 の 250mm を2つ。上の左右フレームの内側にとりつけた。ついでに diffuser もつけている
CoreXY な駆動方式の3Dプリンタには元々興味があって、とはいえ現状の Original Prusa i3 2.5 でそれほど問題もなかったのだが、Voron 2.4 という3Dプリンタを知り、なんかわからんが格好がいいので急に作ってみたくなった。
3Dプリントパーツ以外をセットにして売ってるところがいくつかある。今回は FORMBOT の Aliexpress から買ってみた。UPS で結構届くのがはやかった。
Voron 2.4 はデフォルトでは Afterburner という名前がついたエクストルーダだが、実は Stealthburner という新しいバージョンがでており、新規で作るならこちらを作ったほうがよい。パーツに一部非互換があるので別途部品を買う必要がある。
exhaustまわり、操作画面部まわり、エンドストップ、Afterburner 相当のインジェクションモールドのプラパーツが「オマケ」でついてきた。ほぼプリント済みだったが Afterburner はまるっとプリントせずにいたので、とりあえず動かすことができそうでありがたい。
このプラパーツは機能的にはオリジナル同様だが細部が違う。インジェクションモールドでは袋状のものは作れないので2パーツ貼りあわせる必要があったりする。
Raspberry Pi は付属しないが SD カードは SunDisk の A1 のちゃんとしたのがついていた。パチもんではなくちゃんと製品登録もできた。
Voron は基本的に全てのパーツを ABS (104℃ぐらいで軟化する) で出力することとしている。局所的に温度が高くなることがあるので PETG (84℃ぐらいで軟化する) も推奨されていないようだ。(Original Prusa はホットエンドダクト以外は PETG になっており ABS 出力も今のところ問題ないが……)
PETG は非常にプリントしやすいため、できれば PETG でやりたかったが、ここで不安を残すのも精神に良くないので ABS との和解を試みてすべて ABS で出力することにした。
だいぶ前に Original Prusa i3 にかぶせていたエンクロージャはABSをプリントしないこととなかなか邪魔なこともあって捨ててしまったので、一時的にということでダンボールで箱をつくった。これで内部は40~50℃ぐらいになる。
ABS はとにかくあらゆる部分が反るので嫌なのだがこのぐらいの温度なら割とマシになる。とはいえ接着性が低いのでベッドとノズルの調整がよりシビアだったり、パーツ形状によっては一時的に反った部分ができてノズルにあたるので気を使う。
出力するパーツ数は結構多い (Prusa が 3D プリント部品を最小限にしているのと対照的)し、大きいものが多い。動作に必須な部品だけでも3~4日かかる。全部プリントするには一週間以上かかると思ったほうが良い。パーツを注文しても全部届くまで1ヶ月ぐらいかかるだろうからのんびりやって良い。
IPA(無水エタノールでもいいけど高いので…)と柔らかめのグリスが必要。この手順でやった。グリスはSuper Lube 21030というNLGI(ちょう度) 2 で PTFE系のプラスチックに安全なやつ。
グリスポートがあればグリスポートから注射器で注入するのが正しいようだが、安いリニアレールでは見せ掛けのグリスポートで中に入っていかない場合があるようだ。
マニュアルがよくできていて迷うところはほぼない。Gantry の組み立てまわりはマニュアルだけだと完璧にできないと思うので YouTube とかを見るべき。
あとはA/Bベルトを通すのが以下の点でなかなか困難
https://github.com/VoronDesign/Voron-Trident/issues/65
Voron 2.4 のマニュアルにはデッキサポートが抜けてる。使いかたは Trident のドキュメントを見るとわかる。あとからだとやりにくいので罠
あまり気にしてなかったが部品セットには配線も含まれており、これがとてもよくできていた。すべてのコネクタが圧着済みかつ長さも適切なので、デフォルト設計なら何も考えずに組み立てできる。
WAGO の接続端子が複数ついており、配線部分でははんだ付けをする必要がなかった (マニュアルの5端子WAGOコネクタに加えてヒーター接続用と思われるの2端子WAGOコネクタもついていた)。
制御は Klipper という3Dプリンタ向けファームウェアを使うのが一般的のようだ。
Klipper は Raspberry Pi で動く Python のコードと、コントローラーボードに書きこむファームウェアからなる。gcode の解釈や補正など計算負荷が高いことは Raspberry Pi 上で行ない、コントローラボードはIOの制御だけをする。LinuxCNC と同じようなイメージ。
そして Klipper は既存の3Dプリンタのシリアルポートでの通信をエミュレートするようなインターフェイスになっている (/tmp/printer)。つまり Klipper 自体は gcode (など) を受けとってデバイスを制御するだけの役割を持つ。
UI はこのシリアルポートを利用できるものならなんでも使える。Voron のドキュメントではMainsail, Fluidd, Octoprint が列挙されている。
Rasbperry Pi 3 B に Mainsail のイメージを書きこんで使うことにした。Mainsail は Raspberry Pi Imager のメニューに入ってるので気楽。Mainsail は Klipper のインターフェイスとなるソフトウェア。イメージを書きこめば GUI なしで、ウェブインターフェイスが勝手に起動するようにセットアップされている。
より正確にいうと Klipper とやりとりしているのは Moonraker という Klipper のウェブAPIフロントエンドで、Mainsail はそのクライアント実装といえる。
とりあえず燃えずにQGLできるとこまではきた。Afterburnerはオマケでついてきたやつ。換装するとき楽なように4芯のケーブルを一緒に配線したがどうなるか…… pic.twitter.com/kn7tA4ZXZp
— ショ糖 (@cho45) November 19, 2022
Stealthburner 用の部品が届く前に本体の部品が一通りきてしまったので、とりあえず Afterburner を乗せて組み立てて動作確認をした。
テンプレートの printer.cfgからたくさん書きかえていく。最低限の設定をしたあと、G-code で動かしつつ調整する。
とりあえずステッピングモーターの方向がすべて逆だったので dir を反転した。
ベッドの max_power が 0.6 になっている。Rule of thumb is 0.4 watts / cm^2 と書いてある (経験則では 0.4W/cm^2 ぐらいが適切)。250x250mm なら 625cm^2 なので、250Wぐらいが適切。300Wヒーターなため、0.83 に設定する。
なんで最大パワーを出さないかというと、ヒーターは中央を加熱するため熱伝導が十分されていないとベッドが歪んでしまうからで、早く加熱してもメリットがないということのようだ。
なおヒーターは100V AC商用電源を SSR で PWM 制御する設計になってる。
結局 Afterburner をつけて動作確認しているうちにすぐ部品が届いてしまったので、一度もホットエンドにフィラメントを通すことなく Stealthburner に換装した。
Afterburner と Stealthburner だと NeoPixel LED 用の配線が増えている。このことはわかっていたので、Afterburner をつけて組み立てる時点で1セット配線を追加しておいた。
X-carriage にも互換性がないのでA/Bベルトも外す必要があった。思ったより苦労はしなかった。
Stealthburner は gear_ratio: 50:10 なので printer.cfg を直す必要がある。NeoPixel はとりあえず Voron 公式の stealthburner_leds.cfg を使った。
そしていろいろ調整して一発目のプリントはとりあえず成功。角がちょっと膨らむのは Pressure Advance というので調整していくらしい。
Voron 2.4 のいいところ
Voron 2.4 のよくはないところ
https://github.com/FaqT0tum/Orbion_3D_Space_Mouse
良い点
悪い点
ちゃんと使おうと作ろうとすると以下3つの知識がそれぞれある程度ないと難しい。
Arduino のライブラリごりごりで書かれているのであまりコード量はなく複雑なこともやってない。
メニューを開いたとき、エンコーダの反応がすこぶる悪いが、ビジーループでエンコーダを読む設計なのに、i2c ディスプレイに毎ループデータを送ってるせいなので、そのへんのコードを直すとよくなる。結構同様のロジックがちらばっており、直すのに若干手間がかかる。
エンコーダを読むコード (scroll()) もなんか変なコードになっているので書きなおしたほうが手を入れやすい。
NDでコードを公開できないのでやったことだけ
あんまり作ってる人がいなくてなんでかなーと思っていたが難易度の高さの割に得るものがそれほどでもない点にあるのかなと思った。ハードウェアの形的にはかっこいい。
液晶風の画面は決まった形をオン・オフするだけなので、canvas にコードで描くのは大変なだけで無駄が多い。かといってセグメントを1つ1つ画像にわけて座標指定で配置していくのも面倒くさい。
と考えていくと SVG を埋めこんで、SVG の要素を JS で操作するのが効率が良い。ワークフローとしては SVG の作成と JS の実装で綺麗に境界を作ることができる。
Inkscape の良いところは以下の点
Inkscape でオブジェクトに名前をつけると、svg 上では inkscape:label 属性に入る。これを利用して JS から操作すれば Inkscape で保存した SVG をそのまま利用できる。
Inkscape で保存した SVG をそのままファイルとして置いて、fetch() で取得し、HTML5 な HTML で特定の要素の innerHTML に入れてしまうのが手っ取りばやい。(XML の Processing Instruction については Chrome ではコメントに変換されるが、仕様上パースエラーなので消しておく)
名前空間の扱いが謎だが、querySelector() の場合以下のような形で指定することができる (つまり名前空間を扱わず、prefix も含めて属性名とする)
svg.querySelectorAll('g[inkscape\\:label="digits"] > g')
あとは適当に style.visibility を操作するだけなので省略
svg 要素は HTML では SVG 2 で定義されると書いてある。つまり「HTML は SVG を知っている」。SVG 2 では HTML 内でも svg が使えることを考慮して書かれている。
SVG の仕様上、HTML 内では SVG の名前空間は HTML パーサによって与えられると書いてある。このため、HTML 内 svg 要素には xmlns は必要ない。 https://svgwg.org/svg2-draft/single-page.html#struct-Namespace
HTML LS
In HTML, the xmlns attribute has absolutely no effect. It is basically a talisman. It is allowed merely to make migration to and from XML mildly easier. When parsed by an HTML parser, the attribute ends up in no namespace, not the "http://www.w3.org/2000/xmlns/" namespace like namespace declaration attributes in XML do.
また https://html.spec.whatwg.org/#elements-2 に例示があるが、HTML としては xmlns は何の効果もうみ出さない。例えば svg 要素の中に xmlns:foo="foo" という宣言と共に <foo:bar /> というのがあっても、これは HTML パーサによって自動的に与えられる svg の名前空間に属し、foo:bar という要素名になる。
2016年の6月に組んでからCPUマザボを変更せずにきたが、この Core i7 6700 が Windows11 非対応だったり、今時さすがに4コア8スレだったり、PCIe レーン数が少なすぎて NVMe SSD が使いにくかったりで、そろそろかと思い組替えることにした。
ケースとグラボ以外はほぼ新調。ここに書いてない SATA のドライブは継続して接続している。あとはケースファンもすべて入れ替えた。
電源は 80+ Platinum で安かったやつ(1万円ぐらい)を買ってみたがパッケージやケーブルが良くできていて非常に豪華だった。
プロセスルールの数字が良いからなんとなく最近なら AM5 ソケットになった Ryzen 7000 シリーズかなと思っていたが、13th Intel が結構強いようだった。個人的には以下の点で Intel 優勢とおもった
DDR5 が十分性能と価格が落ちつくには何年もかかりそう。そして AM5 なマザーボードはだいぶ高い。Intel なら手元の DDR4 メモリも利用できる。
i9 は水冷するような超ハイエンド向けというイメージがあり、i5 はちょっと微妙というイメージがある (別にそんなことないみたいだが)。
と考えていくと理性的に最適なのは i5 ではないかと思うが、大は小を兼ねるので i7 とした。i9 は高すぎる。
フルロードせず電力制限をかけたとしても、その制限においてはクロックが上がるので上位CPUが無駄というわけではない。
Windows 11 にアップグレード不可な PC に入っていた Windows 10 のライセンスだったが、普通に Windows 11 のインストールメディアをつくってインストールし、構成を変更したという宣言をしたら引き継ぐことができた。
マザーボードデフォルト設定だとCPU電力無制限になるようだ。つまりサーマルスロットリングが常時起こるまで発熱し、クーラーの排熱性能上限ぐらいのパッケージ消費電力で落ちつくという挙動になる。
アイドル時の CPU の Package Power は 5W~10W ぐらい。GPU Power が 15W ぐらい。Z690チップセットが TDP としては 6W。
効率カーブが載っているPSU の評価結果 2% of spec = 13.2W 出力時の効率が 42% 程度で、20~30W ぐらいの効率は50~60%程度のように見える。つまりセンサ読み Package Power が 25W なら電源クランプで読むと 50W ぐらいになってしまう (実際はマザボ上のVRMの効率もあるわけで)。
なおこのマザボは多少光るけどオフにしても消費電力への影響は微々たるもの。
電力無制限で cinebench を回すと当然サーマルスロットリングが起き、最初は250Wぐらいだが徐々に Package Power が落ちて 220W 前後で落ちついてくる。これがこのクーラーの限界ということになる。実際、AS500 というクーラーはTDP 220Wまで対応と書いてあるので、実測でもその通りといえる。
あんまり限界性能を出すのも恐いので、UEFI から最大電力 (long / short duration power limit) を 180W に制限することにした。PL は原理的にシングルスレッド~数スレッドでは超えないので、全コア使い尽くすようなときに若干性能が下がるイメージだと思う。
定格は3.4GHz(Pコア)/2.5GHz(Eコア)ターボブーストで5.3GHz(Pコア)/4.2GHz(Eコア)。
なお Tjunction max はいわゆる絶対最大定格ではないようだ。Intel 的な絶対定格は内部に非公開で持っており、必要とあらばシャットダウンする仕掛けで、Tjunction max はこれを目標にサーマルスロットリングするぞという値。
つまり基本的には CPU 側で防衛しており、サーマルスロットリング自体も「問題ない」とされている。クーラーの性能上限(=サーマルスロットリングが起こる状態)までCPUは電力を消費して発熱する設計になっている。
Widgets.exe 関係で msedgewebview2.exe がやたら VRAM (GPUメモリ) を消費している。全く使わない機能なのでアンインストールする。
winget uninstall "windows web experience pack"
Windows を再インストールして、
wsl --import-in-place Ubuntu D:\wsl\ubuntu\ext4.vhdx
みたいなことをしたら以上のようなエラーをいわれるようになってしまった……
ただ、管理者権限だと起動できる。該当する .vhdx ファイルのプロパティのセキュリティタブを見てみると変更権限などが一般ユーザになかったため追加したらうまくいった。
Windows11 にしたところ Intel X520-DA1 な NICが認識しなかった。
ドライバを検索しても「ないよ」と言われる。天下の Intel だぞおかしいと検索すると無情にも Intel 公式に「解決方法X520 対応の次のドライバーリリースは バグ修正のみであり、新しい機能や OS のサポートがないため、Windows 11 では X520 用のドライバーはありません。」 とか言われる。解決方法じゃない……
同様に困っている人はいるようだ。このエントリではセットアップファイルからドライバを抜き出して、手動で認識させる方法でうまくいっている。 のでこれを試してみた。
Windows 10 向けドライバダウンロードページから Wired_driver_27.6_x64.zip をダウンロードして、展開し、さらに 7-zip で Wired_driver_27.6_x64.exe を展開するとドライバファイルがでてくる。
デバイスマネージャからNIC選択し、ドライバを検索→手動でディレクトリを検索→展開したディレクトリを指定。でうまくいった。
2011年のQ2に発売された製品らしいから10年は経過してるから仕方ないのかもしれないけどウーン……
regedit.exe で適当な場所 (HKEY_CURRENT_USER など) に新規キーを作る。ここでは OLD とする。OLD を選択した状態で「ファイル」→「インポート」して、ファイル種別に「レジストリハイブ」を選択すると NTUSER.dat を選択できる。
NTUSER.dat を選択する「OLD」以下を削除して置き換えるが良いか?という旨のダイアログが出るのでOKする。
これで読みこめるのでキーを探してなんとかする。
ただ以下のような問題があるのでお勧めできるかというと微妙……
Administrator アカウントでもアクセス不可能で削除もできず、アクセス許可も編集できないエントリができてしまう。どうやら SYSTEM アカウントでだけアクセスできるらしい。
sysinternals というツール集に含まれている psexec という実行ファイルを使うと SYSTEM アカウントで実行することができる。
.\PsExec64.exe -i -s c:\windows\regedit.exe
さらに SYSTEM 所有のレジストリエントリの子で TrustedInstaller が所有者になっているみたいなややこしいことなっている場合がある。この場合、所有者を SYSTEM にしつつ、SYSTEM にフルコントロールを与えると消せるようになる。とても面倒くさい。
親エントリで所有者を SYSTEM にすると (既にSYSTEMでも)「サブコンテナーとオブジェクトの所有者を置き換える」というチェックボックスがでる。これで一括でサブオブジェクトなどの所有権を置き換えできる。
オフィシャルのアダプタはかなり高い<ので https://www.thingiverse.com/thing:2551379 をプリントして USB シリアルを組合せた。
使ったのは
Thingiverse の方法 (RX と GND に直接フォトトランジスタをつける) だと、FT234X ではうまくいかない。オシロで見た感じ立ちあがりが遅すぎたので、RX の内部抵抗が高いようだ。
なので普通に電源をとるようにした。FT234X は 5V トレラントなのでこれで問題ないはず。
プロトコルは
あたりを参照すればわかる。
baudrate は 9600
UTi260B はなぜか表示されている文字を消す機能がない。常に時計やバッテリー表示などを含めてコピーされる。これが邪魔なので消したい。
スナップショットとして撮影して SD カードに保存される画像には bmp (画面のハードコピー) と jpg (光学カメラの画像) がある。bmp のほうは実は単純な画面のハードコピーではなく、グレースケールの元データと若干のメタデータも入っている。
このデータを元に画像を再生成するツールが UNI-T-Thermal-Utilities に uniTThermalImage.py として含まれている。
基本的にこれを使えばいいのだが、HTML+JS で作ってあればマウスホバーでカーソル位置の温度の表示とかいろいろ融通がききそうでいいかなと思い、移植した。
https://cho45.stfuawsc.com/uni-t-thermal-utils/
元の python 版と同様の温度補正機能もつけてあるので、ホバー時の温度の精度も若干マシになっている。
カラーパレットと最大・最小温度のマークを表示する機能もつけてある。
サーマルカメラ UNI-T UTi260B を買ったが、近い距離だと結構ボヤっとしていて解像度が低い感じになる。そんなものなのかなーと思っていたが、Thingiverse で UTi260B にマクロレンズをつける例を見つけたので試してみた。
UTi260B のスペック上、扱う波長は 8~14μm (遠赤外線)
通常の光学ガラスは赤外線を通さないのでサーマルカメラのレンズには適さない。
比較的安く入手性が良い CO2 レーザー (波長 10.6μm) 用のレンズである ZnSe レンズはだいたい 7~12μm あたりの透過性が高いらしいのでそこそこちょうどいい。
Aliexpress の WaveTopSign China PVD ZnSe Laser Focus Lens Dia.12 18 19 20mm FL38.1 50.8 63.5 76.2 101.6mm For Co2 Laser Engraving Machine というやつ。直径 20mm 焦点距離は 101.6mm で選んだ。約1500円程度。
小さいレンズとしては高いが、特殊用途のレンズとしてはかなり安い。
近距離での撮影がかなり良くなった。
メリット
デメリット
100W だと 20V 5A になる。1m
室温25℃で90Wの表示が出てる場合、しばらくすると52℃ぐらいまで上がる。
手元のケーブルテスタだと、ケーブル全体としてはコネクタも含め180mΩ。P = I^2 R なので 5A 流れているとき 4.5W はケーブル全体 (ケーブルそのものの抵抗 + 電流検出部) で消費される。
電流検出部のシャント抵抗が 10mΩ だとすると 0.25W 程度が電流検出部で消費される。定格1Wで定格電力比率25%程度だとすると25℃程度の温度上昇はだいたいそんなもんかという気がする。
AWG 24 の銅線だと 84.2 mΩ/m なので、シャント抵抗で無駄になる電力はそこまで支配的ではない (12cm 程度に相当する)。
パナソニック 洗濯機 NA-VX7200L の修理。買ったのが2013年5月、2014年7月にメーカー修理(乾燥不良)、2016年にヒートポンプユニットから水漏れときて、購入から9年経過して、給水弁が壊れた。
給水弁は洗濯機の蛇口に繋がっている部品のことで、ソレノイドで給水するかを決めている。
給水時にギュオ~~というなんか変な音がするようになった。しばらくして給水が遅すぎるということに気付いた。給水エラーはまだ出ていない状態。
蛇口を閉じ、給水ホースを外して給水フィルタを見てみたが特段汚れはなし。この状態で蛇口をあけてみてもこちらの水圧は問題なし。
給水中に洗剤ケースを外してみるとちょろちょろとしか給水されていないことを確認。
「パナソニック洗濯機 給水 遅い」などで検索したところ、同様の症状で給水弁の故障のケースがいくつかヒットしたため、給水弁と断定した。
まず交換部品の手配。NA-VX7200Lの場合はAXW29A-2330が給水弁の型番らしい。通販で頼んで、送料含めて3300円。
検索するとDIYの交換手段としては2つの選択肢がある
うちの洗濯機は嵩上げされており独りで動かすのがとても難しいため、後ろを開くのが難しい。ということで上から順にパーツを外していくことにした。
ところどころ配線が本体などに止めてあるが根本の爪を押しながら引きぬくととることができる。
ビスは外したらすぐ養生テープにくるんで止まっていた場所の近くに貼っておく。分解するときはめんどくさいが組み立てるときとても楽になる。
逆順で組み立てる。
洗濯機に使われているのはパイロット式電磁弁というらしく、圧力差がある場合に使え、低コストで動かせるというものらしい。
洗濯機の給水弁を交換したので壊れたのを分解してみた。弁を動かせるとは思えない弱いバネで不思議に思ったが小さい穴に大きな意味があるみたい(パイロット式電磁弁) pic.twitter.com/IRkJjOZVcr
— ショ糖 (@cho45) October 14, 2022
OMRON の体重計を使ってたが最近めっきり体脂肪測定ができなくなり、何度も乗りなおして10回に1回測定できるみたいなことになっていた。かなりストレスなのでさっさと買い替えることに。もう OMRON のを買うことはないだろう……
Anker Eufy Smart Scale P2 Pro は Wi-Fi + Bluetooth 対応の体重計ではかなり安い (7000円ぐらい)
デバイスをセットアップしたあと、セットアップしたスマフォからデバイスを共有とすると他のアカウントと共有状態になる。ただ、Bluetooth と Wi-Fi 同期の挙動がややこしい。
Bluetooth と Wi-Fi の同期がどちらもあるが、優先順位的にはアプリを起動しているときは Bluetooth で接続して、接続しているアプリに優先的に同期される。Wi-Fi 同期はたぶん使われてない(気がする)
Bluetooth 接続に失敗した場合(アプリを起動していない場合)、Wi-Fi で同期して、デバイスを共有しているメンバー間で一番近い体重の人に配信されるようだ。±3kgの人物を同一人物として認識するらしいので体重が近い家族がいる場合めんどうかもしれない。幸いうちにはいないので問題ない。
ログイン画面のユーザ画像はディレクトリサービスエントリに保存されている。これはコマンドラインでは dscl / dsimport などで操作できる。
この gist を使うのがてっとり早い。
userpic.sh USERNAME path/to/jpg
ポリシーによって環境設定の「ユーザとグループ」を封じらている場合、ユーザ画像を設定する方法がアカウントを作るタイミングしかない (と思う)。うっかり変な画像を指定するとログイン画面が毎回不愉快になる。
sudo 権限が必要なので、「ユーザとグループ」は封じられているが管理者権限はあるみたいな特殊な状況でしか有用ではない。