そうだ!Arduinoでヨーグルトメーカーをつくろう

こんなこと、やります。

  • Arduinoでヨーグルトメーカーをつくる
  • PTCヒーター、リレーモジュール、I2CのOLED、1-Wireの温度センサを使う

Arduinoでヨーグルトメーカー
Arduinoでヨーグルトメーカー

Arduinoヨーグルトメーカーの構想

はじめに、Arduinoでヨーグルトメーカーをつくるための構想をお話します。

構想

牛乳に種となる少しのヨーグルトを入れ、40℃に温度を保って数時間ほどおくと新しくヨーグルトができます。

これをArduinoを使って実現するために、次のように構想を考えてみました。

まず40℃の一定の温度にするため、ヒーターが必要です。ヒーターのスイッチをオンオフを制御するためには、リレーモジュールが使えそうです。また、温度を測定するために温度センサも必要です。温度表示するモニタとしてはOLEDがよさそうです。

Arduinoヨーグルトメーカーの構想
Arduinoヨーグルトメーカーの構想

フィードバックとして得た温度によって、冷たければヒーターをオンにして温め、温まりすぎればヒーターをオフにして冷ますといったものです。

空気を温めても意味がない

じつは最初、こちらのツイートのように、ヒーターを発泡スチロール保温容器に接着して空気を温めようとしてました。しかし試してみると、36℃程度しか空気の温度が上昇しませんでした。

そこで、( ゚д゚)ハッ!っと気がつきました。

「空気じゃない!牛乳を温めるんだ!」

牛乳を40℃に保てればよいのですから、アルミ容器にヒーターを付けて、牛乳を注げば良いのでは?という考えにたどり着きます。

熱伝導率とは?

熱伝導率とは、熱が高温から低温へ運ばれる現象(熱伝導)による、熱の移動のしやすさをあらわすものです。1秒間に1平方メートルの面積から、1ケルビン伝えるための熱量になります。

物体の状態や温度にもよって変わってきますが、おおよそ次の通りです。

素材熱伝導率[W/(mK)]
アルミ221
空気0.0241
ガラス1
0.6

この表を見るとわかる通り、アルミが圧倒的に熱伝導率が高く、空気の熱伝導率は低いことがわかります。また、ガラスも意外と熱伝導率は低いですね。

熱伝導率と似て非なる比熱

熱伝導率と似ていて異なるものに「比熱」があります。

比熱とは、単位質量あたりの物質の温度を単位温度上昇させるために必要な熱量のことを表します。物質1kgを、1ケルビン伝えるために必要な熱量となります。

素材比熱[J/(kgK)]
アルミ0.880
空気1.007
ガラス0.670
4.183

この表から、水をあたためるには、大きなエネルギーを必要とすることが分かります。また、アルミとガラスでは、ガラスのほうが小さいエネルギーで温められることになります。しかし、よく考えてみるとアルミは軽いですから、同じ1kgのアルミとガラスを考えますと「まぁ、そうなのかも」と納得できるのではないでしょうか。

アルミクッカー

幸い、キャンプで使うアルミクッカーやメスティンを持ち合わせております。アルミは熱伝導率がとても優れていますから、ヒータの温度も効率よく牛乳に伝わるはずです。

メスティンとアルミクッカー
メスティンとアルミクッカー

写真のようにアルミクッカーとヒーターをゴム紐ではさむようにして固定しました。

アルミクッカーとヒーター
アルミクッカーとヒーター

普段使いにも便利なアルミクッカー

ちなみに私はキャンプだけでなく、普段の料理でアルミクッカーやメスティンを愛用しております。すぐに温まりますから、調理時間も短く済み、ガス代もお得なはず!洗い物も軽くて便利です!アルコールストーブのわずかな燃料でご飯も炊けちゃいます。詳しくは空き缶で作るアルコールストーブ製作【アルスト・キャンプ】をご覧ください。

つかうもの

ここで、Arduino制御で使う電子部品をまとめておきます。

Arduino

この記事ではPro Microを使いましたが、ほかのArduinoでも問題ありません。

Arduinoをお持ちでないようでしたらオススメArduinoどれを選べばいい?Arduinoで電子工作をはじめる方へをご参考になさってみてください。

また、Pro Microの使い方はPro MicroでArduinoをはじめよう!をご覧ください。

ヒーター

12V電圧で80℃まで発熱可能なPTCヒーターを2つ使用しました。2つのヒーターは並列につないで使用します。

PTCヒーターとは?

PTCヒーターとは、Positive Temperature Coefficientヒーターの略で半導体セラミックを利用したヒーターになります。温度が上がると半導体粒子が膨張して、導電部分が断ち切られて電流が流れにくくなります。この事により、ある温度以上になると急激に電気抵抗が増加するため、PTCヒーター自体で一定の温度に制御されるという特徴があります。

一定の温度に保たれるので、場合によってはマイコンなどの制御の必要がありません。またニクロム線と違って、安全面でも優れていると言えるでしょう。

リレー

WayinTopリレーモジュールのリレーモジュールを使いました。

このリレーの使い方はラズパイとリレーモジュールで詳しく解説しています。

OLED

温度表示ができると便利です。I2C通信のOLEDディスプレイを使用しました。

OLEDの使い方はArduinoでOLEDをご覧ください。

温度センサ

防水加工されたDS18B20の温度センサを使って、ヨーグルトの中に直接入れて温度測定します。

電源

12V 1.5Aの電源アダプターを使用しました。

また、3端子レギュレータを使って12Vから5Vの安定化電源をつくってArduinoへ電源供給しました。

3端子レギュレータの使い方は、3端子レギュレータの使い方(5V→3.3V)をご覧ください。

ブレッドボードに刺せる電源ジャックモジュールがあると便利です。ヒーターの端子を電源ジャックのメスに改造して、エフェクタなどで使われるDCケーブルで配線しました。

その他

プルアップのため4.7kΩの固定抵抗を使います。

ブレッドボードやジャンプワイヤも使います。

準備

必要なライブラリのインストールや、Arduinoと各センサモジュールの配線を説明します。

必要なライブラリ

DS18B20の温度データを読み取るために、OneWireDallasTemperatureライブラリをインストールしておきます。

OneWireライブラリのインストール
OneWireライブラリのインストール

DallasTemperatureライブラリのインストール
DallasTemperatureライブラリのインストール

また、OLEDに文字表示をするためu8g2ライブラリをインストールしましょう。

u8g2ライブラリのインストール
u8g2ライブラリのインストール

Arduinoとセンサモジュールの配線

Arduinoとセンサモジュールを次のように配線します。ヒーターに供給する電源は12Vで1A以上のものを使用します。

OLEDはI2C通信ですので、ProMicroの場合はSDAを2番ピン、SCLを3番ピンへつなぎます。ArduinoによってSDAとSCLの場所が異なりますので注意してください。

Arduinoとセンサモジュールの配線
Arduinoとセンサモジュールの配線

ソースコード

温度が40℃前後になったらリレーをオン・オフにしてヒーターを制御させるプログラムです。

#include <U8g2lib.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define DS18B20_PIN 9
#define RELAY_PIN 8


U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
OneWire oneWire(DS18B20_PIN);
DallasTemperature sensors(&oneWire);


void setup() {
    Serial.begin(9600);
    sensors.begin();

    u8g2.begin();
    u8g2.clearBuffer();
    u8g2.setFont(u8g2_font_8x13_tf);
    u8g2.sendBuffer();

    pinMode(RELAY_PIN, OUTPUT);
}

float base_temp = 40.0;

void loop() {

    delay(3000);

    sensors.requestTemperatures(); 
    float temp = sensors.getTempCByIndex(0);

    displayOled(temp);
    if(temp < base_temp - 1.0) {
      digitalWrite(RELAY_PIN, HIGH);
    } else if(temp > base_temp + 1.0) {
      digitalWrite(RELAY_PIN, LOW);
    }

}

void displayOled(float temp) {
    char tempFloatString[10];
    
    dtostrf(temp,3,1,tempFloatString);


    char bufTemp[20];

    sprintf(bufTemp, "Temp: %s", tempFloatString);
    
    u8g2.clearBuffer();
    u8g2.setFont(u8g2_font_8x13_tf);
    u8g2.drawStr(0, 10, bufTemp);
    u8g2.sendBuffer();
}

実験:ヨーグルトをつくってみよう

以上の内容のArduinoヨーグルトメーカーをつくり、実際にヨーグルトが作れるか実験してみました。

2021年10月2日22:20開始

ヨーグルトのタネを大さじ3杯ほどアルミクッカーへ入れます。雪印の「ナチュレ恵み」をタネに使いました。

ヨーグルトのタネ大さじ3杯
ヨーグルトのタネ大さじ3杯

冷たい牛乳をヒーターで40℃に加熱するのは効率が悪そうなので、あらかじめ40℃程度になるまで牛乳を温めておきます。牛乳は成分無調整の乳脂肪分3.5%以上のものを使いました。

牛乳を40℃に温めておく
牛乳を40℃に温めておく

アルミクッカーにヒーターを取り付け、そのまま保温ボックスへ設置します。温度計は、よく消毒してヨーグルトの中へ直接入れました。隙間には断熱材を敷き詰めて、少しでも熱効率をよくしました。

アルミクッカーを保温ボックスに設置
アルミクッカーを保温ボックスに設置

Arduinoヨーグルトメーカーはこんな感じです。その後しばらくようすを観察しました。リレー制御も上手くできたようで、温度が40℃あたりに保たれています。

ヨーグルトメーカーを上から見たようす
ヨーグルトメーカーを上から見たようす

翌日9:30終了

一夜あけました。ヨーグルトづくりの開始から、約11時間経ちました。

無事ヨーグルトはできたかな?

\ジャジャン!/

ヨーグルトづくり成功!
ヨーグルトづくり成功!

ご覧の通り、見事にヨーグルトができました!

少し水っぽさがありますが、冷蔵庫で冷やしたら固まって、ふわっとした美味しいヨーグルトになりました。

ウマウマです!(^q^)

自作ヨーグルト!
自作ヨーグルト!

発展:低温調理への可能性

Arduinoヨーグルトメーカをさらに発展させて、60℃の低温調理もやってみたいです。

低温調理ができれば、鶏むね肉でしっとり美味しいハムがつくれますね!

しかし水で実験したところ、58℃が限界のようです。これでも低温調理ができるかもしれませんが、欲を言えばヒーターの数をもう1つ増やしたいところです。

実験装置の消費電力を計算すると、12Vで約0.5Aですから6Wほどになります。

実験装置の消費電力6W
実験装置の消費電力6W

記事に関するご質問などがあればTwitterへお返事ください。
この記事で紹介した商品
人気のArduino互換機
Arduinoで人気の周辺パーツ
Arduinoのオススメ参考書

▼ Arduino初心者向きの内容となっています。ほかのArduino書籍と比べて図や説明がとてもていねいで、読みやすかったです。Arduinoで一通りのセンサーが扱えるようになります。

▼ 外国人が書いた本を翻訳したものです。この手の書籍は、目からうろこな発見をすることが多いです。

▼ Arduinoの入門書を既に読んでいる方で、次のステップを目指したい人向きの本です。C言語のプログラミングの内容が中心です。ESP32だけでなく、ふつうのArduinoにも役立つ内容でした。

関連記事