-

5.0 / 5.0

これまで使っていたキャニスター式は2009-03-05に買ったSANYOのSC-MR8J-Lで、ごく普通の紙パック式だった。まだ壊れてなかったが、紙パックのストックも切れたし、新しいのが欲しいなと思った。

なぜサイクロンにしたか

気持ち的にはもともと紙パック派なので、紙パック式にしようと思っていた。

しかし、このごろマキタの充電式クリーナー+サイクロンアタッチメントを使うことが多く、これで毎回とれたゴミの量を確認できるのが案外楽しかったため、掃除の頻度が上がったという体験がある。キャニスター式もとったゴミの量が確認できるといいなと思った。

パナソニックのサイクロン掃除機の感想

  • ゴミセンサーが思ったより楽しい
  • ゴミ捨てるのはちょっと面倒
  • 軽い
  • 先端がしゃがまなくても分離できる構造でびびった (足で小さいヘッドに分離する)

ゴミセンサーは特に事前に注目していなかったけど思ったより楽しい。どのぐらいかけるかの目安になる。1往復程度では綺麗にならないなというのがよくわかる。

ゴミ捨ては蓋が下に開くので、当然ながら蓋が開く分余計なスペースがゴミ箱内にないといけない。飛びちらないように綺麗に捨てるのはかなり難しい。まぁこれはサイクロン式の宿命だと思うので我慢するしかなさそう。

ただ吸いこみは紙パック式の元の掃除機より弱い。

「次亜塩素酸水をつくる」みたいな触れ込みでジクロロイソシアヌル酸ナトリウムが売っているが、やたら高いことが多い。「スパクリーン 60GS」という公衆浴場用の塩素消毒材がまさにジクロロイソシアヌル酸ナトリウムで、これは比較的かなり安価に手に入る。

ジクロロイソシアヌル酸ナトリウムは有効塩素60%なので、目標塩素濃度 p ppm を v l 作りたい場合、ジクロロイソシアヌル酸ナトリウム w g とすると


100ppm 500ml つくる場合は0.083g。かなり少ないのでぴったり測るのはむずかしい。ジクロロイソシアヌル酸ナトリウムの比重は == らしいので、0.83ml のスプーンが適切。あんまりキッチン用の精密測りは使いたくないが、3Dプリンタでスプーンを作り、最初の一回は重量を確かめてから作るとよさそう。

ジクロロイソシアヌル酸ナトリウム vs 次亜塩素酸ナトリウム (ハイターなど)

  • ジクロロイソシアヌル酸ナトリウムは液性は弱酸性〜弱アルカリ性 次亜塩素酸ナトリウムはアルカリ性
  • ジクロロイソシアヌル酸ナトリウムは水に溶かすまで顆粒。
    • こぼすと大変
    • 水に溶かして目的塩素濃度に希釈するまで危険性が 高い
  • pH の関係で次亜塩素酸ナトリウムよりも低い濃度で高い効果(酸化力)がある。溶かしてからの消費期限は30日程度。
  • 次亜塩素酸ナトリウムよりも安定していない(塩素ガスが発生しやすい)。保存も換気が良い場所でする必要がある

アルカリ性じゃないので手についても比較的荒れにくい。

計量

スパクリーン 60GS には適切な計量スプーンがついてないので、https://www.thingiverse.com/thing:682146 これを元に 3Dプリンタで0.1ml の計量スプーンを作った。

ジクロロイソシアヌル酸ナトリウムが主成分の製品

  • ピジョン ミルクポン S (哺乳瓶消毒)
  • 小林製薬のかんたん洗浄丸
  • 花王 ハイター強力カビハイター 排水口スッキリ

ref

次亜塩素酸水と次亜塩素酸ナトリウムの同類性に関する資料 次亜塩素酸水の場合 (pH が弱酸性〜中性) 100ppm で十分そう。



3Dプリンタとペンプロッタはほとんど似たようなものなので、アタッチメントをつけて簡単にペンプロッタ化してみた。アタッチメントはこんな感じ。4〜5回試作してプリントしていい感じになった。STLなどは Thingiverse に上げた

  • 簡単につけかえできること
  • それなりに精度が出ること (0.5mmぐらい)
  • ペンをあまり選ばないこと

を要件にして、スライド式のペンホルダと、本体へのアタッチメントという構成に。ステッピングモータに被せて設置する形にすることで脱着を簡単にした。

試行錯誤の経過:ペン先がブレすぎてダメだった例


剛性をあげたりスライド方式をみなおした例

Simplify3D の設定

  • Extruder
    • Retraction Vertical Lift を 3mm などに (ペンを上げる動作)
    • Extrusion Width はペン先の太さに (適当でもよい)
  • Layer
    • Primary Layer Height 0.2mm
    • Outline/Perimeter Shells 1
  • Temperature
    • Primary Extruder
      • アンチェック Wait for temperature controller to stabilize before beginning build
      • 温度を20℃に
    • Heated Bed
      • アンチェック Wait for temperature controller to stabilize before beginning build
      • 温度を20℃に
  • G-code
    • アンチェック 5D firmware (include E-dimension) (E軸のコードが出力されなくなる = エクストルーダが無効になる)
    • Build volume X-Axis: 224 (250-26) Y-Axis: 131 (210-79)
    • Origin offset: -26mm -79mm
  • Scripts 後述
  • Advanced
    • Start printing at height 0.6mm
    • Stop printing at height 0.8mm
    • アンチェック Minimum travel for retraction

Top Solid Layers / Bottom Solid Layers を0にすれば輪郭だけ出せる。

Starting Script

M115 U3.0.7 ; tell the printer latest firmware varsion available
G28 W ; home all without mesh bed level
G80 ; mesh bed leveling
G0 Z10
G0 X40 Y100 F4000
G0 Z0.8
M0 Click to continue
G0 Z10

メッシュレベリングしてZ軸を出したあと、適当な位置に移動して、Z0.8 にする。この高さが基準なので、M0 で一旦マシンを止める。ペン先を出して、少しテンションがかかるように調整して紙に接触するようにする。この状態でマシンをボタンを押すとプロットが始まるはず。

Ending Script

M104 S0 ; turn off temperature
M140 S0 ; turn off heatbed
M107 ; turn off fan
G0 Z10
G1 X0 Y200; home X axis
M84 ; disable motors

Z10 にして退避させてる。

データの作りかた

Simplify3D を使う場合、入力データはSTLなので、適当に厚みをつけてやる必要がある。

単に文字を出すだけなら OpenSCAD がお手軽

linear_extrude(height = 1) {
    text("テスト", size=20, font="Noto Sans CJK JP:style=Black", spacing=0.9);
}

こんな感じで任意のフォントで文字を出せる。

  1. トップ
  2. tech
  3. Original Prusa i3 MK2S でペンプロッタ

型紙はブラザーのやつ。だけどうちには2Dプリンターがないので、絵をなぞって立体にし、3Dプリンタで出力。

手順は 作り方☆立体布マスク(ガーゼマスク)(ページ2) | 無料型紙工房ことろ に従った。こちらの型紙を使っていないのは小さそうだから。

あとは元々あった適当なオックスの布と裁縫箱の中に余っていたゴムでぎりぎり2つぶん作れた。ダブルガーゼではないのでちょっと硬い。一応漂白剤前提で薄めの色の布を選んだ。

立体マスクは曲線縫いが必要なのでやっぱちょっと面倒くさくて時間がかかる。プリーツ作って直線縫いだけでいけるようなレシピのほうが楽そう。




要件

  • PCで再生させた曲と電子ピアノの音をミックスしたい
  • 出力を3人で同時にヘッドフォンで聞きたい
    • この際、ヘッドフォンの種類が違う場合でも音量を揃えたい

普通だとステレオミキサ+複数出力のヘッドフォンアンプでやることだけど、電源の管理が面倒なので機器を増やしたくなく、これを同時にやる方法が見つからないので自作することにした。

動機

PCで再生させながらピアノの練習をしたりする必要があるんだけど、ピアノをひいてるとそっちの音しか聞こえなくなってしまうことがあり、特に子どもの場合走ってリズムがどんどんずれるので、自然と聞けるようになんとかしたい。

仕様

入出力

  • 3ステレオ入力 VR なし
    • 入力側の装置で音量調整できるので
  • 3ステレオ出力 VR あり
    • ヘッドフォンの種類が違う場合に音量を揃えるため

電源

  • 9V 電池をレールスプリットして両電源にする (±4.5V)
    • 実際は 8.4V の充電式リチウムイオン電池 006P 型
    • 出力コンデンサを省略したいので (小型化のため)
    • 100kΩで分圧し、中点を出力電流の多いオペアンプで増幅安定化させる

NiMH 1.2V 4本で±2.4Vとかでもいいかもしれないけど、小型にしたい+ミキサーの飽和電圧を上げたい+006P型リチウムイオン電池が1つ余っている、のでこういう感じに。

ミキサー部

増幅率1倍の反転増幅回路で特に変なことはしてない。アナログ加算回路

アンプ部

ミックスされたものを3つのオペアンプでそれぞれ増幅して出力する。これも増幅率1倍の反転増幅回路。ミキサー部でも反転させてるので位相は元に戻る。直接ヘッドフォンをドライブするので、ここも出力電流が多めのものにしておく。

回路図

オペアンプの品種が適当になっているが、実際に使ったのは全て NJM4556ADD。

消費電力

先に計算しておくべきだが面倒くさくてやってなかった。おかげで失敗。

オペアンプ1つの消費電流が6mA (±4.5V)、これが5つで30mA → 回路全体の実測で 37.5mA。常時バッテリー駆動するにはちょっと多すぎる。

電池が300mAhだと8時間しかもたない……

省電力な NJM022BD で 0.250mA なら、5つで1.25mA。これで10日ぐらい。

どっちにしろ、素直に電源スイッチかアダプタをつけたほうがよさげ、ということでACアダプタをつけて常時通電するようにした。

ケース

例によって KiCAD + FreeCAD kicadStepUp で 3D モデルをつくり、Fusion360 で読みこんで適当に設計したのを 3D プリントした。



ref.

http://akizukidenshi.com/catalog/g/gP-03604/
http://akizukidenshi.com/catalog/g/gC-02460/
http://akizukidenshi.com/catalog/g/gP-04623/
http://akizukidenshi.com/catalog/g/gP-00207/
http://akizukidenshi.com/catalog/g/gP-02683/

  1. トップ
  2. tech
  3. 電子ピアノ練習用のミキサー

パナソニック 電動歯ブラシ ドルツ 黒 EW-DP33-K - パナソニック(Panasonic)

パナソニック(Panasonic)

5.0 / 5.0

8年ぐらい使ってるので買い替えてみた。

極細ブラシのせいか前使ってたやつよりも歯間も磨けてるっぽい。振動が2方向になったのが効いてるのかもしれないけどよくわからない。今まであたってないところにもあたりはじめたのか、奥歯の歯茎が痛い。電動使いはじめたときもしばらく痛いことがあったので、慣れれば平気だとは思う。

ブラウンも検討したけど、消耗品が高すぎて(パナソニックの10倍ぐらいする)やめた……

ここ8年ぐらいだと軽い虫歯で1度治療をうけたぐらいだと思う。当時から右の奥歯が虫歯か歯周病っぽいのだが、特別悪化している感じでもない


こういう感じでケースにおさめた。

基板

あまり部品はないので片面基板を自力で切削加工して作った。1度目はいろいろとリワークが発生してしまったので2度目の基板。しかし 1PPS の出力をつけわすれていたので、あとからつけくわえている。

MCP4725 だけ少し厳しいピッチだが問題なかった。切削の場合デザインルールで0.3mmぐらいにしないと厳しいが、どうしてもルールをやぶらざるを得ない部分が出てきたりする。

電源に村田製作所製のフルモールド2出力降圧DC-DCコンバータを使っている。MCU など用の 5V と、OCXO 用の 12V を十分余裕を持って出力できる。ただし入力電圧が16V〜40Vと若干高い。24V入力で使っている。

ケース

YONGU Enclosure というところのケース 145*54*150 を
Aliexpress で買った。割と安い。買ったあと「3D CAD ファイルある?」と聞いたらすぐ送ってくれて便利。まぁこれはサイトに載せといてくれれば手間にならないんだけど。

こういう前後パネルがフラットな板のタイプだと加工しやすいので、好んで使っている。

3Dモデルづくり

穴あけやパネルのデザインのため、できるだけ3Dモデルを作るようにしている。パーツごとの干渉を前もって知れたりするので便利。今回はケーブリングもモデリングするようにした。ここを省略すると曲げ半径的に無理があって蓋がしめられないということもあるので……

厳密でなくても良い汎用部品なんかだと、GrabCad で STEP ファイルが得られたりする。SMA コネクタとかは GrabCad からダウンロードしたものに手を加えて使ってる。

Fusion360 の場合、このモデルからさらにパネルのCNC切削Gコードまで持っていけるので楽。Engraving のパスがバグってて困るが……

切削など


文字は30°のVカッターで掘りこみ。これはZ精度が必要なので、加工箇所ごとにわけてGコードを作ってから、加工箇所ごとにZをぴったりあわせたほうが良さげだった。掘っただけで色は入れていないけど、もともと黒のアルマイト加工がされているので、地色を出すだけでコントラスト的に白色に見える。あと、やすりをかけられないのでカッターの切れ味がよくないとつらい。

他の加工はほぼ普通の穴あけ。ただしディスプレイのところだけ傾斜をつける加工をした。これは等高線で降りていく加工にした。0.03mmぐらいで降りるようにしてみたが一切加工段は見えないので、もうちょっと荒くてもよかったと思う。

  1. トップ
  2. photo
  3. GPSDO 10MHz 実装
  1. トップ
  2. tech
  3. GPSDO 10MHz 実装

 -

5.0 / 5.0

「木工用ボンド」というと、コニシ社が製造する酢酸ビニルの白いボンドが想像されるが、それと直接競合するボンドにアメリカのフランクリン社が製造する「タイトボンド」というのがある。

比較

「木工用ボンド」はどこでも手に入るので使ったことがない人はいないレベルだと思う。タイトボンドは入手性がかなり悪い。

タイトボンドの良いところ

  • 固定時間が短かい(乾燥がはやい)
  • 乾燥すると固くなる(粘性が残らないので、ノミやスクレーパーでスパっと削れる)
  • キャップが使いやすい

タイトボンドの悪いところ

  • 入手性が悪い
  • 乾燥が速すぎることがある(こういう場合は木工用ボンドを使えばいいと思う)
  • ちょっと高い

何が良いか

個人的な感想だと「固くなる」のが一番良く感じる。これにより余分にはみだしても硬化したあとヤスリで削るのが楽だし、ほぼ木材と近い硬さなので、ノミやカンナにかけることもできる。

そしてキャップが使いやすい。キャップをひっぱるとすぐ塗れる構造になっていて、キャップ自体で塗りひろげできる。これが便利。コニシのやつと比べるといちいちキャップの裏の突起をあわせてねじるみたいな作業をしなくて良い。

  1. トップ
  2. tech
  3. タイトボンドの使い勝手が良すぎる

【Amazon.co.jp限定】ロジクール PCスピーカー パソコン用 Z120BW ホワイト ステレオ 2ch コンパクト USB給電式 3.5mm入力対応 PC スピーカー 国内正規品 2年間メーカー保証 - Logicool(ロジクール)

Logicool(ロジクール)

4.0 / 5.0

ロジクールのPCアクティブスピーカー Z120BW というのをだいぶ昔に買って、RasPi とかに使っていたけど、ふとどうしても分解したい衝動にかられて分解してしまった。

このスピーカーはネジが使われておらず、接着なので、分解が若干難しい。そして一回分解すると元に戻すのも難しい。ということでスピーカーエンクロージャーを作りなおした。

分解

白と黒の樹脂の間が接着されているので、無理矢理マイナスドライバーとかを使ってこじあけると分離する。破壊する必要はない。

ユニットの構造

若干複雑な形で、自作スピーカー用のユニットのようにポン付けできる構造ではなかった。スピーカーのウレタンゴム?の外側のエッジ部分を抑えて密閉するようになっている。これによって密閉度を効率的に上げつつコストダウンできるんだろう。

マウントを作成


ということで適当にマウント周辺をモデリングした。t=6mm の MDF 板を想定してモデルを作り、CNC 切削を行う。

ボックスの作成



アンプ部分はそのまま生かすことにした。ケーブルは日焼けしたりして汚れていたので捨ててしまったので、配線はしなおす。

特にこだわりはないので、100均の 100x100x6mm の MDF 板を使って 100x100x100mm のキューブ型のエンクロージャにすることにした。左右あわせても直線を4箇所カットするだけ (6面中2面だけ少し小さいサイズになる) なので、カッターだけで簡単に作れる。

昔 K271s を持っていたが、どこかのお店かどこかで忘れてしまい、それ以降買いなおすこともなく今日まできてしまった。気に入っていたんだけど。

同じ系統の AKG K271MK2 にはベロアタイプのイヤーパッドもあるみたいで、しかも標準付属らしいことを知り急に欲しくなった。ということで買った。

カールコードとストレートコードも同梱されていて充実している。

K271s と同じ音かは正直わからないけど、聞き疲れしにくく低音を強調することもなくて良い。

最近よく使っているのが beyerdynamic DT 770 PRO なのでこれと比較すると、装着感は DT 770 PRO のほうが良いかな。 DT 770 PRO はすっぽり耳を覆うけど、K271MK2 はちょっと耳の上にのっている感じがする。実際はのっているわけではなくて、内側が耳にあたっているだけだと思う。

音の傾向は結構似ているように感じる。どちらも中音域が綺麗なタイプだけど、DT 770 PRO のほうが低音・高音が強調されるので、にぎやかでちょっと聞き疲れしやすい。K271MK2 はさらに落ち着いてる。

【国内正規品】beyerdynamic 密閉型オーバーヘッドヘッドホン レコーディングモニター用 DT 770 PRO 250 - beyerdynamic

beyerdynamic

5.0 / 5.0

AKG プロフェッショナルスタジオモニター・クローズドヘッドフォン K271MK2 【国内正規品】 - AKG

AKG

5.0 / 5.0

既にある NMEA のログから、どの衛星が強く受信できているかをプロットしてみる。

ファイルを指定して png を書き出すコードを node で書いた。かなり量の多いログでも中間結果を見ながら生成できるようにしてある。

グラフの見方

上下左右が方角。右まわりに上から北・東・南・西

中心からの距離が仰角。中心が真上(90°)で、円周上が水平線(0°)

SNR によって色がついている。

自宅の状況

GPS の GSV しかとっていないので、このプロットにはGLONASSやQZSSは含まれていない。

南西向きの窓際にアンテナがあるため、そのあたりのSNRが大きくなる。

北極・南極の上空は衛星の軌道がない。北半球に住んでいる場合、このプロットのように北極上空にあたる部分に空白ができる。

決まった数の衛星が決まった軌道で飛んでいるので、空全体で見ると塗りつぶされないところは多い。

コード

#!/usr/bin/env node

const GPS = require("gps");
const fs = require("fs");
const readline = require("readline");
const { createCanvas, loadImage } = require('canvas');

const WIDTH = 1000;
const HEIGHT = 1000;
const PADDING = 50;

const PLOT_RADIUS = (WIDTH - PADDING * 2) / 2;

const canvas = createCanvas(WIDTH, HEIGHT);
const ctx = canvas.getContext('2d');
ctx.fillStyle = "#ffffff";
ctx.fillRect(0, 0, 1000, 1000);

ctx.translate(WIDTH / 2, HEIGHT / 2);

ctx.strokeStyle = "#999999";
ctx.lineWidth = 2;
ctx.beginPath();
ctx.arc(0, 0, PLOT_RADIUS, 0, 2 * Math.PI);
ctx.stroke();

ctx.beginPath();
ctx.moveTo(0, -PLOT_RADIUS);
ctx.lineTo(0, +PLOT_RADIUS);
ctx.moveTo(-PLOT_RADIUS, 0);
ctx.lineTo(+PLOT_RADIUS, 0);
ctx.stroke();

ctx.font = "20px sans-serif";
ctx.fillStyle = "#666666";
ctx.textAlign = "center";
ctx.textBaseline = "bottom";
ctx.fillText("0°", 0, -PLOT_RADIUS - 5);

ctx.textAlign = "left";
ctx.textBaseline = "middle";
ctx.fillText("90°", PLOT_RADIUS + 5, 0);

ctx.textAlign = "center";
ctx.textBaseline = "top";
ctx.fillText("180°", 0, PLOT_RADIUS + 5);

ctx.textAlign = "right";
ctx.textBaseline = "middle";
ctx.fillText("270°", -PLOT_RADIUS - 5, 0);

ctx.textAlign = "left";
ctx.textBaseline = "bottom";
for (let ele of [75, 60, 45, 30, 15]) {
	const r = elevationToRadius(ele);
	ctx.strokeStyle = "#dddddd";
	ctx.lineWidth = 2;
	ctx.beginPath();
	/*
	ctx.moveTo(r, 0);
	ctx.lineTo(r, 10);
	*/
	ctx.arc(0, 0, r, 0, Math.PI * 2);
	ctx.stroke();
	ctx.fillText(ele, 2, -r-2);
}

const gps = new GPS();

function elevationToRadius(e) {
	return PLOT_RADIUS * (1 - e / 90);
}

function writeToPng() {
	const out = fs.createWriteStream("test.png");
	const stream = canvas.createPNGStream();
	stream.pipe(out);
	out.on('finish', () =>  console.log('The PNG file was created.'));
}

//const prns = new Set();
let count = 0;
gps.on('data', function(parsed) {
	if (parsed.type !== "GSV") return;
	for (let sat of parsed.satellites) {
		if (sat.snr === null) continue;
		// prns.add(sat.prn);
		// console.log(Array.from(prns.keys()));
		const hue = (1 - (sat.snr / 40)) * 240;
		const x = Math.cos(sat.azimuth / 180 * Math.PI - Math.PI / 2) * elevationToRadius(sat.elevation);
		const y = Math.sin(sat.azimuth / 180 * Math.PI - Math.PI / 2) * elevationToRadius(sat.elevation);

		ctx.fillStyle = `hsla(${hue}, 100%, 50%, 0.5)`;
		// ctx.fillRect(x-1, y-1, 3, 3);
		ctx.beginPath();
		ctx.arc(x, y, 3, 0, 2 * Math.PI);
		ctx.fill();

		if (count % 100000 === 0) {
			writeToPng();
		}

		count++;
	}
});


const stream = fs.createReadStream("./log.log", "utf8");

const reader = readline.createInterface({ input: stream });
reader.on("line", (data) => {
	const nmea = data.substring("[2020-01-09T09:33:05.622] [DEBUG] default - ".length);
	if (/^\$GPGSV/.test(nmea)) {
		gps.update(nmea);
	}
});
reader.on("close", () => {
	console.log('done');
	writeToPng();
});
  1. トップ
  2. tech
  3. NMEA ログから衛星のスカイビューを生成する