編集履歴一覧に戻る
aobatのアイコン画像

aobat が 2021年02月23日11時22分55秒 に編集

コメント無し

本文の変更

# 動機 # 北海道の土産で買ってきたマリモが、関東の夏の暑さのせいか元気がなくなってきた。マリモの適温は15度から20度らしいが、部屋の気温をそんなに低くしたくはない。インテリア仕様の、透明で小型の冷蔵庫があればよいのだが、見つからない。困ったので自作することにした。さらに、マリモのふるさとの阿寒湖の環境もできるだけ再現することにした。 # 要求機能 # 1. マリモが良く見えるようにケースは透明にする。 2. 水温は最大でも20度付近をキープ。水温が低い分にはかまわない。 3. 阿寒湖の日の出と日の入りの時刻に合わせて人工照明を当てる。 4. ときどきマリモを回転させて人工照明の陽当たりを均等にする。 5. 正常に作動していることを動作確認用ディスプレイで確認できるようにする。 # 機構とケース # ## マリモ容器と冷却機構 ##

-

マリモの容器として断熱性の高い二重ガラス構造のグラス(外径82x高さ95mm)を使用した。水の冷却には水面上からペルチェ素子(4.6Aタイプ)で低温にしたアルミ丸棒(直径11x高さ80mm)を水中に浸すことで行う。ペルチェ素子の大きさ(縦横30x30mm)に比べるとアルミ丸棒の径はかなり小さい。ペルチェ素子の全面に密着させて熱伝導を高めると同時にアルミ丸棒の端面からの熱を拡散させるために、両者の間に30x30x8mmのアルミ平角材を緩衝材として挟んだ。これらの部材は放熱用シリコン接着剤で接着し、アルミ丸棒とアルミ平角材の接合部の周りはさらにタミヤパテで固めて強度を上げた。アルミ平角材のまわりは発砲スチロールで断熱を行った。なお、稼働中にはアルミ丸棒とパテにはかなりの結露が生じて滴り落ちている。観察できないが、アルミ平角材のまわりもびしょびしょかも知れない。

+

マリモの容器として断熱性の高い二重ガラス構造のグラス(外径82x高さ95mm)を使用した。水の冷却には水面上からペルチェ素子(4.6Aタイプ)で低温にしたアルミ丸棒(直径11x高さ80mm)を水中に浸すことで行う。ペルチェ素子の大きさ(縦横30x30mm)に比べるとアルミ丸棒の径はかなり小さい。ペルチェ素子の全面に密着させて熱伝導を高めると同時にアルミ丸棒の端面からの熱を拡散させるために、両者の間に30x30x8mmのアルミ平角材を緩衝材として挟んだ。これらの部材は放熱用シリコン接着剤で接着し、アルミ丸棒とアルミ平角材の接合部の周りはさらにタミヤパテで固めて強度を上げた。アルミ平角材のまわりは発砲スチロールで断熱を行った。なお、稼働中にはアルミ丸棒とパテにはかなりの結露が生じて滴り落ちている。アルミ平角材のまわりもびしょびしょかも知れない。

![冷却用のアルミ丸棒と攪拌用DCモーター(天地逆)](https://camo.elchika.com/2598a9c29bf2637a170bce5fcb9c3a16bef5876c/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f65323731633039662d323831622d343933352d393366382d6662643836623137623436322f65313562383063622d383865382d343833612d396261392d386339356361646565326231/) ![熱伝導緩衝用のアルミ平角材](https://camo.elchika.com/c1ec1ed3c5a5e7a91a1c33aefd3d4812b446f0b7/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f65323731633039662d323831622d343933352d393366382d6662643836623137623436322f35323034353965652d366163372d343930642d393764362d393663343162613565346636/) ![ペルチェ素子と放熱板用温度センサ](https://camo.elchika.com/91ee813e52ff591c7a894fd510f96788ee9d3261/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f65323731633039662d323831622d343933352d393366382d6662643836623137623436322f66376433363031312d663937352d343864622d386239622d323134383439643038373432/) ## 放熱機構 ##

-

ペルチェ素子は冷却面から反対側の高温面に熱を移動させるだけなので、高温面の熱を逃がさないと連続的な冷却ができない。高温側の面にヒートシンク(100x80x27mm)を密着させ、上からPC用のファン(縦横80x80mm)で風を送ることで熱を部屋全体に拡散させることとした。なお、ヒートシンクの大きさはPCファンのサイズに合わせて決めたが、こんなに大きくなくても十分な気もする。また、ヒートシンクには温度センサー(S5851A)を密着させて温度を計測し、温度が高い場合にはファンの強さを強くする仕組みとしたものの、運転してみたところ常に最小風量でも十分なようだ。この温度センサーは不要かも知れない。

+

ペルチェ素子は冷却面から反対側の高温面に熱を移動させるだけなので、高温面の熱を逃がさないと連続的な冷却ができない。高温面にヒートシンク(100x80x27mm)を密着させ、上からPC用のファン(縦横80x80mm)で風を送ることで熱を部屋全体に拡散させることとした。なお、ヒートシンクの大きさはPCファンのサイズに合わせて決めたが、こんなに大きくなくても十分な気もする。また、ヒートシンクには温度センサー(S5851A)を密着させて温度を計測し、温度が高い場合にはファンの強さを強くする仕組みとしたものの、運転してみたところ常に最小風量でも十分なようだ。この温度センサーは不要かも知れない。

![ヒートシンクと放熱用ファン](https://camo.elchika.com/c50b4b1b73ac5c44b337729169927ca77e76bd26/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f65323731633039662d323831622d343933352d393366382d6662643836623137623436322f31303332643236332d333836372d343233382d393030652d373334653931386531373039/) ## 人工照明 ##

-

マリモ容器の上はアルミ冷却棒や攪拌機構などがあり照明の邪魔となる。LEDコースター(高さ21mm)を敷いて下から照明を当てることにした。LEDコースターは発光色が変化するパーティーモードが可能で、鑑賞性をたかめる結果となった。

+

マリモ容器の上はアルミ冷却棒や攪拌機構などがあり照明の邪魔となる。LEDコースター(高さ21mm)を敷いて下から照明を当てることにした。LEDコースターは発光色が変化するパーティーモードがデフォルトで、鑑賞性が増す結果(?)となった。

## マリモの陽当たりの調整 ##

-

2本のアルミ攪拌棒(径4mmx50mm)を周縁部に取り付けた外径39mmプラスチック歯車をDCモーターで回転させることでマリモ容器内にやさしく水流を起こし、マリモを適度に回転させて陽当たりを均等にすることにした(15分に一回に設定)。この歯車の中心部には11x11mmの正方形の穴がある。この穴に冷却用のアルミ丸棒を貫通させ、それを軸に攪拌用歯車回転させる。軸方向への動きはアルミ丸パイプ(高さ5mm)を上下に固定することで制限する。歯車の回転はDCモーターに取り付けた別の歯車の回転を伝達させて行う。DCモーターの回転速度はPWMで制御する。始動時だけデューティー比を上げて静止摩擦力を上回るトルクを得たのち、デューティー比を落としてやわらかく回すように調整した。

+

2本のアルミ攪拌棒(径4mmx50mm)を周縁部に取り付けた外径39mmプラスチック歯車をDCモーターで回転させることでマリモ容器内にやさしく水流を起こし、マリモを適度に回転させて陽当たりを均等にすることにした(15分に一回に設定)。この歯車の中心部には11x11mmの正方形の穴がある。この穴に冷却用のアルミ丸棒を貫通させ、それを軸に攪拌用歯車回転させる。軸方向への動きはアルミ丸パイプ(高さ5mm)を上下に固定することで制限する。歯車の回転はDCモーターに取り付けた別の歯車の回転を伝達させて行う。DCモーターの回転速度はPWMで制御する。始動時だけデューティー比を上げて静止摩擦力を上回るトルクを得たのち、デューティー比を落としてやわらかく回すように調整した。

![攪拌機構](https://camo.elchika.com/15bfd02b2dd995994583926b9371af4796cbd8b8/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f65323731633039662d323831622d343933352d393366382d6662643836623137623436322f63333234346538382d386136312d346138302d396334362d363630616665613464396162/) ## 動作確認用ディスプレイ ## 0.96インチ 128×64ドット有機ELディスプレイをケース内部に天井部より吊り下げて使用した。表示内容は、①現在日時②日没時刻③日の出時刻④水温⑤ペルチェ素子の消費電力⑥室温⑦気圧⑧湿度とした。 ## 観賞用ケース ## LEDコースターやマリモ容器、攪拌機構の高さを考慮し、150x150x150mmの透明アクリルの立方体(1面だけ空いているもの)を伏せたものを観賞用ケースとした。アクリルケースの上部には冷却棒が通るように穴をあけ、その上にペルチェ素子や放熱機構を格納するケース(102x83x63mm)をプラ板で自作して取り付けた。LEDコースターへの電源もここから供給する。マリモ容器の水を交換する際は、伏せてある観賞用ケースを持ち上げてマリモ容器を外に取り出す。 ## 水温測定 ## ステンレスプローブ内に密封された防水温度センサー(DS18B20)を上から水中に浸すことで水温を検出する。ステンレスプローブの固定に悩んだが、プローブを内径8mmのプラパイプの中を通し、プラパイプの上端部をケースの天井部に接着し、ケーブルを横からだすことで解決できた。改善点としては、あらかじめ天井面にプラパイプの通る穴を開けておいた方が接着強度を増すことができたと思う。 ## 時刻の取得 ## WiFi経由でNNTPサーバから正確な時刻を取得し、内部の時計を補正する。また、[おはこん番地は!?API](http://labs.bitmeister.jp/ohakon/index.cgi) より阿寒湖の緯度経度の日の出時刻と日没時刻を取得し、LEDコースターによる人工照明をON/OFFする。

-

## 室温の取得 ##

+

## 室温・湿度・気圧の取得 ##

BME280センサーによって室温、気圧、湿度を取得する。 # 電子回路 # ペルチェ素子などを駆動するパワー部分の回路と制御のためのデジタル部分の回路に分けて説明する。主電源には3.3VのDCアダプターを使用した。 ## パワー部分 ##

-

この回路図では左からペルチェ素子、冷却ファン、LEDコースター、攪拌棒用DCモーターを駆動している。ペルチェ素子の電源は3.3V、それ以外の電源はMT3608 DC-DC昇圧モジュールで4.5Vに昇圧して使用している。ペルチェ素子、冷却ファンのPWMパワー制御と、LEDコースターの電源のON/OFFにはパワーN-FET(K4017)を用いている。K4017のゲート入力は4V以上がのぞましいが、マイコンからのデジタル信号は3.3Vであるため、フォトカプラで4.5Vの信号へと変換している。攪拌棒用DCモーターの制御にはTB67H450モータドライバモジュールを使用した。

+

この回路図では左からペルチェ素子、冷却ファン、LEDコースター、攪拌棒用DCモーターを駆動している。ペルチェ素子の電源は3.3V、それ以外の電源はDC-DC昇圧モジュールで4.5Vに昇圧して使用している。ペルチェ素子、冷却ファンのPWMパワー制御と、LEDコースターの電源のON/OFFにはパワーN-FET(K4017)を用いている。K4017のゲート入力は4V以上がのぞましいが、マイコンからのデジタル信号は3.3Vであるため、フォトカプラで4.5Vの信号へと変換している。攪拌棒用DCモーターの制御にはTB67H450モータドライバモジュールを使用した。

![パワー部分](https://camo.elchika.com/dbc975f10e8ba206235ef4aa0bd693b7b802ec74/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f65323731633039662d323831622d343933352d393366382d6662643836623137623436322f65386438373033652d663064352d346661322d393038612d646532656230613164316463/) ## デジタル部分 ##

-

マイコンにはWiFiが使用可能なESP32Dev-KitCモジュールを使用している。本来はこのモジュールはUSBの5Vを電源とするが、3V3ピンに直接3.3Vを供給ている。マイコンと水温センサーとの通信には1-Wire、それ以外のセンサーおよびディスプレイとはI2Cを使用している。

+

マイコンにはWiFiが使用可能なESP32Dev-KitCモジュールを使用している。本来はこのモジュールはUSBの5Vを電源とするが、3V3ピンに直接3.3Vを供給することでESP32を作動させている。マイコンと水温センサーとの通信には1-Wire、それ以外のセンサーおよびディスプレイとはI2Cを使用している。

![デジタル部分](https://camo.elchika.com/cc85542e0cb58b9df58cd331c9e9eca54c37991b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f65323731633039662d323831622d343933352d393366382d6662643836623137623436322f32656666366261662d313332302d346661382d616234322d323463323836636465336361/) ## 実装 ## 電子回路は冷却・放熱機構を収めた自作ケースの裏側に別のケースをボルト留めして収めた。ESP32Dev-KitCモジュールの実装にあたっては分割ロングピンソケットを使用して着脱可能とすると同時に、基盤からのモジュールまでの間の空間を確保し、その部分にパワー部分の回路を実装することで小面積化を図った。 ![基盤への実装](https://camo.elchika.com/4c2c558824461dbc858893ab4fef5133a10a7e16/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f65323731633039662d323831622d343933352d393366382d6662643836623137623436322f64366563306136392d306566652d343337392d623339662d616136336461316161666534/) # プログラミング # 開発はarduino-esp32で行った。くわしくは[ソースコード](https://github.com/aobato/MarimoMachine)を参照してほしいが、まだ挙動がおかしな点がいろいろと残っているので参考程度に見てほしい。arduinoをオブジェクト志向で開発したのは初めてだったため、いろいろと悩んだポイントを以下にあげる。 - 既存のライブラリのクラスを委譲で利用しようとするとうまく行かない場合がある。継承の方が無難なようだ - SSD1306Wireは継承してもうまくいかず、やむなく関数化した - なぜかDelay関数が効かない場合がある。delayMicrosecondsなら機能する - コンストラクタの中でWiFiコネクトすると挙動がおかしくなる - arduino IDEでの開発中にシリアルモニターへの表示がなされない場合がある # 完成図 # サイトの仕様で横向きでないと画像が収まらないが、以下のようになった。手作りの割には見栄えよくできたとおもう。 ![斜め上から](https://camo.elchika.com/6f4b871383788ed860f012554a5dd9fcfca1509b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f65323731633039662d323831622d343933352d393366382d6662643836623137623436322f63336164393339382d386662362d346134352d386434662d326262663130326264323562/) ![斜め下から](https://camo.elchika.com/0e65cab4d1d92ae2587f0a069bb15ff00450a193/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f65323731633039662d323831622d343933352d393366382d6662643836623137623436322f39323263313533362d326331392d343730642d386565352d653132323161613765623165/) # 現在 # まれに謎のハングアップが起きたり(電源をつなぎなおすと復帰)、間違って9VのアダプターをつないでESP32モジュールを破壊して交換したりしたが、おおむね順調に作動している。マリモも順調に生育しているようだ。 # 部品 # 部品の多くは秋月電子、アマゾン、aitendo、[横山テクノ](https://www.yokoyama-techno.net/)で揃えました。 |部品|型番・仕様・秋月電子の通販コード|個数|備考| |---|---|---|---|

-

|ペルチェ素子|TES1-12739|1||

+

|ペルチェ素子 4.6Aタイプ(30x30mm) TES1-12739|通販コード I-14751|1||

|パワーFET|K4018|3|| |抵抗|200|3|| |抵抗|20K|3|| |抵抗|75|3|| |抵抗|1.5|1||

-

|DC-DC ブーストステップアップ 転換モジュール|不明|2|[アマゾンで購入](https://www.amazon.co.jp/gp/product/B01D0WSBGY/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1)|

+

|DC-DC ブーストステップアップ 転換モジュール|たぶんMT3608|2|[アマゾンで購入](https://www.amazon.co.jp/gp/product/B01D0WSBGY/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1)|

|TB67H450モータドライバモジュール|通販コード K-14753|1|| |フォトカプラ|PC817|3|| |DCモーター|タミヤ ソーラー工作シリーズ No.11 ソーラーモーター 03 76011|1|| |DS18B20互換水温センサー||1|aitendoで購入| |ESP32 DevKit-C||1|| |温度センサ|S-5851A|1|秋月電子の変換基盤も使用| |温湿度気圧センサモジュール|BME280|1|aitendoで購入| |128×64ドット有機ELディスプレイ|SSD1306使用|1|| |分割ロングピンソケット 1×42|通販コード C-05779|1|画期的!| |ヒートシンク|100x80x27mm|1|アマゾンで購入| |スイッチングACアダプター 3.3V2.2A|通販コード M-11995|1|| |2.1mm標準DCジャック パネル取付用 MJ-14|通販コード C-06342|1|| |LEDコースター|NKLS-3SL|1|アマゾンで購入| |DCプラグ Φ3.4×1.4 MP121WH1|通販コード C-11215|1|LEDコースター用| |冷却用ファン|silent-8 pwm|1|| |透明プラパイプ|内径8mm|1|| |プラ板|厚さ1mm|1|| |三角プラ棒||1|辺の固定用| |M3ネジ、ナット、ワッシャー、スペーサー||適宜|| |発砲スチロール板|厚さ10mm|1|| |アルミ棒|直径11x高さ80mm|1|冷却用。[横山テクノ](https://www.yokoyama-techno.net/)に発注。以下同じ| |アルミ棒|径4mmx50mm|1|攪拌用| |アルミ平角材|30x30x8mm|1|| |アルミパイプ|内径11mmx高さ5mm|2|| |プラスティック歯車(大・小)|||アマゾンで購入した[セット](https://www.amazon.co.jp/gp/product/B01GX1NC04/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1)にはいっていたもの| |iwaki(イワキ) 耐熱ガラス ダブルウォールグラス Airグラス 230ml K405||1| |クルーズ アクリルボックス5面体 15cm角 AB-150||1|