科学と家事とプログラミング (python を中心に)

python 温度計測 湿度計測 DS18B20 USB9097

CO2モニター/ロガー HT-2000 使用感

いろいろ不明なところが多い製品ですが、入手して使い勝手を確かめました。購入しようと思う人は少ない気がしますが、せっかくなのでまとめておきます。記録機能を使いたいなら、あまりお勧めはできません。

要点

・NDIR 方式で記録や PC と連携できる機種としては安価 (amazon だと 13000円~)。

・製品単体で記録ができるが、色々な場所に移動して記録をとりたい場合は、一日中電源を ON にしておく必要がある。電池の持ちが悪いとのうわさもある。

・少し大きめだが電池で使えるので持ち運びは楽かもしれない。

・記録機能を使わないなら、この機種にするメリットはあまりなさそう。

 

f:id:sken20k:20201110125923j:plain

Features

  • CO2濃度(NDIR 方式, 自動校正)、温度、湿度の計測
  • 最大 12700 点の記録が可能(記録間隔は 1秒~1日)
  • 基準値(変更可能)をもとにアラーム発報(抑止できないので基準値で調整)
  • 液晶表示、バックライト(ON/OFF)
  • 電源は USB 又は単三電池x4本
  • windows 用のソフト付き

良い点

  • NDIR 方式で記録(PC連携)できる製品としては安価(13000円~)

悪い点

  • CO2センサーの自動校正を抑止できない。病院やコンビニなど、24時間人がいる場所で使う場合は、毎日(20分くらい)外気を計測するような運用が必用と思う。
  • 記録中を示す REC 表示が分かりにくい。例えば、記録間隔が1分なら、1分ごとにチカッと一瞬つくだけ。見逃すことも多い。
  • 記録の中断/再開ができない(後述)。
  • 電池の持ちが悪いとのうわさあり(未確認)
  • マニュアルは不親切で、記述に間違いが散見される

記録の中断/再開ができない

 本体だけで(PC から外した状態で)記録できますが、使い勝手は今一つです。本体に REC ボタンがあるので、REC を押すたびに記録開始(再開)/記録停止(中断)が出来るかなと期待したのですが、そういう設計ではありませんでした。

 複数個所で測定したい場合、電源を気にして移動中は電源を OFF にしたい場面もあると思うのですが、そういう使い方は出来ません。電源を OFF したら、PC にデータを吸い上げて、記録パラメータを登録しなおさないと、次の計測ができません。 別の表現をすると、PC から設定できるのは、連続した1期間の計測計画 1つだけで、REC ボタンは計測開始のタイミングを調整するだけということです。

 本体に繋げた状態で記録する場合も事情はあまり変わりはなくて、Immediate を選択すると、パラメータを設定した時点で記録が開始されるので、本体の REC ボタンの押し下げが省略されるというだけのことです。一期間の記録が終了したら、データを吸い上げたあとで、記録パラメータを登録しなおす必要があることに変わりはありません。

付属ソフトの画面

f:id:sken20k:20201110130836p:plain

 

f:id:sken20k:20201110131009p:plain

 

エアコン室外機の騒音対策は、ナベヤ(株)のビルトイン防振マウントが良いみたい

ナベヤ(株)のビルトイン防振マウント(軽量)を使ったエアコン室外機の防振対策を紹介します。

f:id:sken20k:20190810210529p:plain

目標

目標は、低い周波数の振動 (~30Hz, ピアノの一番低い音くらい)がベランダの床から部屋の壁に伝わるのを防ぐことです。 周波数 f に対する伝達率は固有振動の周波数を fn を使って、f=3*fn の時 0.13 になるので、 fn を 10 Hz 程度まで小さくできれば、伝わる振動(30Hz )を一桁小さくできるはずです。

選定

以下の条件を確認しつながら防振マウントを選定します。 固有振動数( or バネ定数) / 許容加重 / 取り付け(ボルト直径, 安全性) / 耐候性 / 価格

取り付け

BBC35 シリーズより小さい防振マウントだと、取り付けネジが M6 になってエアコンには小さすぎるので BBC35 から選びます。BBC35 の取り付けは M8 なので、ワッシャを使えば不安なく取り付けられます。日曜大工では、こういう扱いやすさがなにより重要だったりします。

許容加重と固有振動数(バネ定数)

室外機は左右で重さが違うので、とりあえず、4 つの足に 7 + 7 + 3.5 + 3.5 = 21 kg の荷重を仮定してマウントを選定します(7kg はコンプレッサー側)。 BBC35D007 は荷重 5 kgf に対して固有振動数が 11 Hz、BBC35D013 は荷重10kgf に対して固有振動数が 11 Hz です。これらを組み合わせれば、室外機 (約 20kg) を保持できそうです。荷重が均等であれば BBC35D007 4つで対応できますが、室外機は左右の荷重に差があるので、許容加重の大きい BBC35D013 と組み合わせます。 コンプレッサー側は D013 x 2, ファン側に D007 x 2 を使うことにします。 カタログの固有振動数から求めたバネ定数は、D007 が 25 N/mm, D013 が 48 N/mm になりました。

耐候性

メーカーのカタログに以下のような記述があり、耐候性にもすぐれているようです。

エーテル系ポリウレタンで、水や紫外線に強く、ゴムのような劣化がほとんどありません。

価格

一個あたり 1500円くらいなので、4つで 6000円になりますが、防振性能、取り付けの簡便さ、安全性などを考えて、この製品におちつきました。

防振マウントの外観

外観については、このページの先頭の写真を参照してください。 BBC35D007 は手で簡単につぶれるくらいやわらかい素材です。 もちろん、手をはなせばきちんと復元します。 雨にもつよいし、耐候性もあるようです。金属部分がステンレスであることも安心材料です。

取り付け

f:id:sken20k:20190810210903j:plain 手元のエアコンの台(プラロックというらしい)は下向きのボルトに対応していなかったので、M8 の穴をあけました。プライヤーで下側のステンレスのリムを回して固定します。M8 だと溝の中でナットが回ってしまうので、 細めのドライバーを挿してナットの回転を防ぎながら締めました。スプリングワッシャーを入れる厚みはなかったので、下の溝の中は平ワッシャーのみです。

f:id:sken20k:20190810210944j:plain 4つ取り付けたところ。室外機を取り付けるときは、ホースに無理な力が加わらないように気をつける必要があるので、できれば二人以上で行った方が良いでしょう。

結果 (沈み込み量の計測)

f:id:sken20k:20190810092305p:plain 曲線は固有振動数(11Hz)が最大荷重に対応するとして荷重と固有振動数の関係をグラフにしました。 曲線の色付きの部分は製品の許容加重です。荷重が小さい側にのばしました(灰色の線)。 曲線上の数値は沈み込み量 [mm] です。 A~D は 4つの足の沈み込み量(ノギスで計測)によるプロットです。

記号 説明 沈み込み [mm] 加重 [kgf]
A コンプレッサー側 前面 1.4 6.8
B コンプレッサー側 後面 2.0 9.7
C ファン側 前面 0.9 2.3
D ファン側 後面 1.5 3.9

ほぼ期待通りの結果が得られ、低い周波数の振動も気にならなくなりました。 防振マウントの性能(低周波の低減)を最大に活かすには、追加ウェイトによる調整が必用です。 A, B は 荷重が 10kg, C,D は荷重が 5 kg になるようにウェイトを追加します。 今回は、体感で振動を十分に低減できたので、追加ウェイトによる調整は見送りました。

今回の室外機は小型のエアコンのものですが、大きいエアコンに比べて騒音/振動が大きいようです。 個体差なのか製品の特性なのかわかりませんが、小型のエアコンほど安く仕上げるために材料を削る影響が大きくなって、振動が出やすくなっているのではないかと疑っています。

注意/制限事項

今回の防振対策では、かなり単純な理論式にそって選定を行いました。固有振動数の式はこんな感じ。

 \displaystyle fn = \frac{1}{2\pi}\sqrt{\frac{k g}{L}} = \frac{1}{2\pi}\sqrt{\frac{k g}{W g}}

fn [Hz] 固有振動数, k [N/m] ばね定数, g =9.8 [m/s2] 重力加速度, L [N] 加重, W [kg] 重量

実際は、バネ定数の動的/静的の違い、バネ定数の温度特性、減衰特性...などなど、いろいろ考慮する必用があるので、どこまで性能が出ているかよくわかりません。指でマウントに触ると、マウントの上と下とで振動が全然違う(下側の振動は分からない)ので、効果は体感できます。対策前後の振動を定量的に計測できれば良いのですが、低い周波数の計測は難しいみたいです。

もう少しお安く...

固有振動数の目標を 11Hz から 14Hz に緩和すれば、おなじナベヤ(株)の防振フット(軽量型)も良さそうです。例えば BFL20D030 (荷重が 3~7 kg) を 4 つ使って、4つの足すべての荷重が7kg になるようにウェイトを追加すれば、最大の効果が得られるはずです。こちらは 1 個 500円くらいなので 4 個で 2000円となります。ボルトが M5 なので、外形の大きい平ワッシャ(特寸?)を用意する必要がありそうです(エアコン側は M10で共通らしい)。我が家のケースでは、固有振動数 14Hz でも十分だったかな、と思っています。

他メーカーの防振ゴム

低い周波数まで対応するには、バネ定数を小さく抑える必要があります。その観点で、 最後まで迷ったのが、倉敷化工の軽量用防振ゴム KXA-25-25H でした。 防振性能(バネ定数=14.4 N/mm)は魅力的ですが、1つ当たりの支持荷重が 3 kgf なので小型の室外機でも 6~7 個使って支えることになります。取り付け難しそうなのであきらめました。こちらを使えば防振部品の値段は半分くらいになりそうです。ただし、取り付け板や加工などの手間を考えると、トータルの費用はあまり変わらないかもしれません。厚めの合板を塗装したプレート(室外機を置ける1枚板)を用意するとよい気もします。マウントを上下で挟むようにして、荷重の偏りに応じて防振ゴムを適宜配置すれば、今回のものよりも性能の高い防振装置を安価に実現できる可能性があります。プレートに室外機を置いただけだと、横滑りが怖いので、試すなら安全対策もお忘れなく(室外機をプレートに固定する)。

金属バネ

バネ定数と耐荷重でスプリングを検索して、ばね通販 スプリングネットの 11-2820 という製品にたどりつきました。 バネ定数が 4.9 N/mm と小さくて、全タワミ(28.9mm)まで使えるなら 1 つで 14kg まで対応できる。 実際は 10mm 程度のタワミで 1つあたり 5kg の荷重で使うのが良さそう。 スプリングの上に室外機をそのまま載せると、たぶん危なっかしい感じになりそうです。 やわらかなスプリングなのでシリンダー内に装着しないと危ないかもしれません。 その辺の安全確保にかんする知識がないので、スプリングの使用はあきらめました。

参考 URL

  1. エアコン室外機の振動対策 (猫下僕の初心者DIY 日記) url0
  2. エアコン室外機の音を静かにする方法 (創造の館) url1
  3. エコキュートの騒音対策 (noahnoah 研究所) url2
  4. NOK(株) 防振ゴムカタログ (選定手順やゴムの特性が詳しい) url3
  5. ナベヤ(株) ビルトイン防振マウント カタログ url4
  6. 倉敷化工(株) 軽量用防振ゴム KXA/KXB シリーズ url5
  7. サミニ(株) ばね通販 スプリングネット (型番 11-2820) url6

楕円パラメータの相互変換 (幾何学的 ⇔ 代数的)

楕円の表現

この記事では、楕円を表す2種類の形式(方程式)と、 それらの間の相互変換について述べる。 2種類の形式は、一般に canonical form, general form と呼ばれることが多いが、 ここでは便宜上、「幾何学的な表示形式」、「代数的な表示形式」と呼ぶことにする。 wikipedia(英語版) の ellipse の項をみると相互変換に関する解析解が掲載されている。 それを使っても良いが、式の形や導出がけっこうややこしいので、 別解として、比較的簡単に数値的に求める方法を紹介する。

f:id:sken20k:20181105181127p:plain

楕円の幾何学的な表示形式

幾何学的に楕円を表現する時は、パラメータとして  x_0, y_0, \theta, a, b を選ぶことが多い。 ここで、 x_0, y_0 は楕円の中心、  \theta は楕円の傾き、  a, b は楕円の半径(横方向と縦方向)である。  \cos \theta,  \sin \theta c, s で表すと、楕円の方程式は、以下の通り。

 \displaystyle {
         \frac{ ( c(x - x _ 0) + s(y - y _ 0) )^ 2  }{a^ 2}
      + \frac{ ( -s(x - x _ 0) + c(y - y _ 0) )^ 2  }{b^ 2} = 1
}

楕円の代数的な表示形式

代数的に楕円を表現する時は、係数を x, y の冪乗ごとにまとめる。  x^{2} の係数が 1 になるように規格化し、残りの項の係数を  A,B,C,D,E とすれば、 楕円の方程式(一般的な二次曲線)は、以下の通り。

 \displaystyle { 
x^{2} + A x y + B y^{2} + C x + D y + E = 0
}

幾何学的な表示(x0,y0,θ,a,b) ⇒ 代数的な表示(A,B,C,D,E)

幾何学的な表現を展開したあと、 x, y の冪でまとめなおして係数を比較する。

 
\begin{aligned}
\alpha A &= \gamma \\
\alpha B &= \beta \\
\alpha C &= -2\alpha x_{0} - \gamma y_{0} \\
\alpha D &= -2\beta y_{0} - \gamma x_{0} \\
\alpha E  &= \alpha x_{0}^{2} + \beta y_{0}^{2} + \gamma x_{0} y_{0} - 1 \\
\end{aligned}

ここで、

 \displaystyle{
\alpha = \frac{c^{2}}{a^{2}} + \frac{s^{2}}{b^{2}}, \qquad
\beta = \frac{s^{2}}{a^{2}} + \frac{c^{2}}{b^{2}}, \qquad
\gamma = 2 c s \left( \frac{1}{a^{2}} - \frac{1}{b^{2}} \right)
}

である。 代数的なパラメータ A,B,C,D,E は、上の関係から直ちに求まる。

代数的な表示(A,B,C,D,E) ⇒ 幾何学的な表示(x0,y0,θ,a,b)

 \gamma, \beta を消去して、全体を  \alpha で割ると以下を得る。


\begin{aligned}
C &= -2 x_{0} - A y_{0} \\
D &= -2 B y_{0} - A x_{0} \\
E &= x_{0}^{2} + B y_{0}^{2} + A x_{0} y_{0} - 1/\alpha
\end{aligned}

 x_{0}, y_{0} は、最初の2式を連立して求める。行列形式で表せば、

 \displaystyle{
\begin{pmatrix}
C \\
D
\end{pmatrix}
=
\begin{pmatrix}
-2 & -A \\
-A & -2B
\end{pmatrix}
\begin{pmatrix}
x_{0} \\
y_{0}
\end{pmatrix}
}

 \theta は、以下の関係を使って、A,B から直接求める。

 \displaystyle{
\tan(2\theta)=\frac{2cs}{c^{2}-s^{2}}=\frac{\gamma}{\alpha - \beta}=\frac{A}{1 - B}
}

 \alpha は、 x_{0}, y_{0} を最後の式に代入して求める。

 \displaystyle{
1/\alpha = x_{0}^{2} + B y_{0}^{2} + A x_{0} y_{0} - E
}

 a, b は、 \theta \alpha, \beta の定義式に代入して、それらを連立して求める。

 \displaystyle{
\begin{pmatrix}
\alpha \\
\beta
\end{pmatrix}
=
\begin{pmatrix}
\alpha \\
\alpha B
\end{pmatrix}
=
\begin{pmatrix}
c^{2} & s^{2} \\
s^{2} & c^{2}
\end{pmatrix}
\begin{pmatrix}
1/a^{2} \\
1/b^{2}
\end{pmatrix}
}

備考

「超精度くりこみ法」というのを知ったのをきっかけに、 楕円のパラメーター推定をあれこれ試しています。その過程で、 楕円パラメータの相互変換が必要になったので、忘備録として記事を書きました。 部分的なアークから楕円を推定する方法は、 天文の分野でも応用が広そうですね。参考文献に挙げた 「3次元~」は、 各種アルゴリズムソースコードが出版社のページで公開されていてます。 コードを眺めるだけで動かしていませんが、こういうサービスはうれしいですね。

実装例

def geo_fm_ana5(A, B, C, D, E):
    """
    Parameters
    ----------
    A~E : 楕円方程式の係数 
                 (x^2 + A*x*y + B*y^2 + C*x + D*y + E = 0)
    Returns
    -------
    xc, yc : [-]   中心座標
    th     : [rad] 回転角
    ra, rb : [-]   横半径, 縦半径
    """
    xc, yc = np.linalg.solve([[-2, -A], [-A, -2*B]], [C, D])
    th = np.arctan2(A, 1 - B)/2
    c = np.cos(th)
    s = np.sin(th)
    k = 1/(xc*xc + B*yc*yc + A*xc*yc - E)
    a_inv2, b_inv2 = np.linalg.solve([[c*c, s*s], [s*s, c*c]], [k, k*B])
    ra = np.sqrt(1/a_inv2)
    rb = np.sqrt(1/b_inv2)
    return xc, yc, th, ra, rb

参考文献

  1. 最小二乗法による楕円近似 / url1
  2. 楕円当てはめの精度比較:最小二乗法から超精度くりこみ法まで url2
  3. 金谷健一(他), "3次元コンピュータビジョン計算ハンドブック", 2016, 森北出版
  4. はてなブログで数式を書くurl3

網戸のすべりが悪い時はシリコンスプレーがお勧め

シリコンスプレーは効果抜群

網戸のすべりが悪くなっていたので、シリコンスプレーを使ったら、想像以上に良い結果が得られました。何気ないことですが、毎日使うものがサクサク動くのは気持ち良いものですね。もっと早く手当すればよかった。 油と違ってベトベトにならないところも Good 。数百円のスプレーで10年くらいは使えそうです ^^;

 

   f:id:sken20k:20180131154913j:plain

 網戸のキュルキュルの直し方

網戸の可動部やレールとの摩擦箇所にスプレーするだけです。

  • 網戸を掃除する。汚れが少ない場合はウェットティッシュなんかも便利。
  • 網戸を外して、戸車の可動部にスプレーする。
  • 網戸の上の辺にレールを挟む部品がある場合は、擦れる箇所にもスプレーする。
  • 網戸を戻す。

 

f:id:sken20k:20180131154107j:plain
f:id:sken20k:20180131154123j:plain

      (左) 上側のレールガイド     (右) 下側の戸車[バネで収納されるタイプ]

シリコンスプレー使用時の注意

細いところにスプレーする時は、キャップについているストローを使います。ストローをキャップから外すときは、抜きとる感じで外します。スプレーは、床などに吹き付けないように気を付けてください。特に、掃き出し窓の出入り口がスベリやすくなると転倒の危険が増します。まず、戸車だけにスプレーして様子を見ることをお勧めします。

f:id:sken20k:20180131155431j:plain

追記

雨戸(シャッター式)の動きが悪くなった時もシリコンスプレー使うと良いようです。

 

 

日本の人口予測 (少子化をざっくり把握するグラフの紹介)

65歳以上の人口は既にピークに達していると言っても良い(2018年現在)。 絶対的な数で見れば、これから 40~50年間あまり大きな変化はない。 それに対して、いわゆる労働人口(15才~64才)は2000年頃をピークとして今後 40~50年間で半減する。

下の図は、65才以上の人口を上方に、65才未満の人口を下方に積み上げたも のです(源泉は内閣府高齢化白書)。 65歳の線引きにそれほど意味はないけれど、 現象/特徴を把握しやすい図だと思う。 「75才以上の人口増加が問題」だとか「地域ごとの差(特に東京近郊)が問題」といった議論は、もっともではあるけれど、 それらを総合する大きな見通しとして、こういう大雑把な認識を広く共有することは有効と思う。 人口に関する議論は、空間スケールや時間スケールがまちまちなので、ひとつの参照点としての役割を果たすとおもう。

f:id:sken20k:20180126121947p:plain

パソコン(ノートPC)を使った温度と湿度の計測 (USB9097 の紹介)

計測システム

温度や湿度の計測に使っているシステムの構成を紹介します。

 

f:id:sken20k:20180124162921j:plain
f:id:sken20k:20180124175402j:plain


写真(左)にあるように、ステレオミニの二又ケーブルを使えば、センサーはいくつでも増やせます。ケーブルの総延長も 100m くらいまでなら、あまり気にせずに実現できると思います。参考までに、amazon などで安い二又ケーブルを探すと、左右チャンネルを入れ替える(謎な)商品もあるようで注意が必要です ^^; 

自作のソフトは UART を直接制御する 100% pure python の実装ですので、USB/シリアルポートの設定さえできれば、OS には依存しないはずです。 

1-Wire に関する補足

ダラス・セミコンダクター(今は maxima の子会社)が開発した 1- wire bus は、 いもづる式に温度計や湿度計を接続できて、PCを使った多点計測/記録に重宝します。

f:id:sken20k:20180124183236j:plain

1-wire bus (Micro LAN) : トランジスタ技術 Special No.69, p.81, 2000年 より


DS9097U と DS9490

昔ながらの RS-232C ポートがあるデスクトップPC を使ってシステムを構築するのであれば、DS9097U というアダプタを使うのが簡単です。maxima が販売している USB 用の DS9490というアダプタもあるのですが、こちらは USB デバイスの設定方法が OS によって色々で、数年前に試した時は windowsjavaC++ 環境を導入して動かすのがやっとという感じでした。

USB9097

そんなときに見つけたのが (PCsensor.com ShenZhen/China)の USB9097 です。こちらは、USB / RS-232C 変換 と DS9097U を一つにまとめたような製品です。利点は

  • USB ポートに接続するが DS9097U と同じプログラムが使える
  • stereo-mini プラグ(3線)により外部電源(Vcc)を前提としてシステムを組める

といったところです。特に Vcc を前提とするとパラサイト電源周りの制御が不要になってソフトウェアは簡単になり、温度計測の安定性も向上します。もっとも、Vcc なしでもシステムを構築できることが 1-wire の大きな魅力の一つではあるのですが、実用の点からは Vcc が利用できるなら利用するという判断でokでしょう。