納豆やヨーグルトなどの発酵食品を作るために温度を一定に保つコントローラを作ってみた。温度を測定して、ヒータのオン/オフを行って調整する単純なもの。タイマー機能を持たせ、時間になるとアラームを鳴らしてオフになる。
発酵器の本体をどうするか悩んだ末、以下のサイトを参考にさせて頂き、タオルウォーマを利用することにした。素晴らしいアイデアに感謝。
■ 発酵(醗酵)器を作る ■ タオル蒸し器がお勧めです 自作,作り方
![]()
回路図
制御用のプロセッサはPIC16F886、AD変換の基準電圧用にLM336(2.5V)、温度センサはLM35D、温度センサの電圧増幅用にOPアンプのLM358を使用。ヒータの電源オンオフには、秋月のソリッドステートリレーを使用した。
表示部は7セグLED4個で、温度2桁、時間2桁を表示する。
![]()
表示基板
左端で光っているのはLED付きタクトスイッチ。これと4つの7セグLEDの表面にはキズを防ぐためのマスキングテープが貼ってある。
7セグの左2桁は温度表示、右2桁は時間表示。黄色と白色のタクトスイッチは、温度設定と時間設定のアップ/ダウンに使う。
![]()
本体基板
PIC16F886は4MHzクリスタルで動作。上にある8ピンDIPはオペアンプ。右端はトランスレス電源。
4MHzのクロックから1秒を作るためにCCP1モジュールを使用。4ms毎に割り込みがかかるようにして、250回で1秒。4msの割り込みでLEDのダイナミック表示も実行している。また、アラームの圧電ブザーを鳴らすためにCCP2モジュールを使用。
プログラム
基本的な動作は、温度と時間を設定してスタートスイッチを押すと、AC出力がオンになりヒータを温める。温度が設定温度になるとAC出力をオフ、設定温度より下がると再びオンすることで温度を一定にする。温度測定とオンオフの制御は毎秒行う。設定時間になるとアラームを鳴らしてオフになる。動作中は、庫内の温度とタイマの残り時間を表示する。
設定温度と時間は、EEPROMに記憶させ、次回にはその値がデフォルトとなる。温度は25℃〜50℃、時間は1時間〜48時間の設定ができる。もちろん冷やす機能はないので、外気温より低い温度を設定してもその温度にはならない。
![]()
ケース
ハードとプログラムのデバッグがなんとか終盤にかかってきたのでケース作りに着手。
今回、タカチの塗装済みのアルミケースを使う。
![]()
ケース加工
前面にはLEDやスイッチのための穴開け、後ろはフューズホルダやアウトレットコンセントなど。四角い穴は、ドリルで穴開け後にハンドニブラで囓って、ヤスリ仕上げ。
まだ、ケースの表面にキズ防止のフィルムが貼ってある。フィルムをはがしても穴開けした断面がアルミ剥き出しなので、フィルムをはがした後で全体を黒ラッカで塗装した。
![]()
表示基板
7セグLEDやスイッチなどの表示基板とケースの穴の位置合わせ。ヤスリでやすって微調整した。
![]()
電源スイッチ
電源スイッチに適当なスイッチがなくて、基板直付け用のロッカースイッチを利用。1.5ミリ厚のアルミ板で支持用の金具を作る。
こんな工作にも結構手間がかかり、作業が進まない一因。
![]()
電源スイッチ
こんな感じで前面パネルにスイッチが顔を出す。AC100Vのスイッチなので端子側は熱収縮チューブで絶縁をしっかり行う。
![]()
本体基板
トランスレス電源の動作を確認したら、5.1Vのツェナーダイオードが発熱したので、コンデンサの容量を2.2uFから1.5uFに減らすことにした。(上の方の写真と比べると小さくなっている)
多少電圧が下がったが、4.9V程度なので動作には問題はなし。消費電流はMaxで38mA程度。
![]()
ケースに収めた
本体基板、表示基板、電源スイッチ、フューズフォルダ、ACアウトレットなどを取り付けた様子。
![]()
温度センサ
シールドケーブルの先に温度センサを取り付け、エポキシ系接着剤で固めたのち、熱収縮チューブを被せた。水がかかっても大丈夫だと思う。
この出力電圧をOPアンプで約4倍にし、2.5Vの基準電圧でAD変換(10ビット)し、上位8ビットが0.25℃単位の温度になる(詳しくはソース参照)。よって温度測定の分解能は 0.25℃、表示は四捨五入して1℃単位に行う。
![]()
調整中
秋月で買ったデジタル温度計をリファレンスにして、オペアンプの増幅率を調整した。リファレンスの温度計が結構あやしいので精度は±1℃くらいか。
右側の時間表示が2になっているのは偶然で、28.2℃を表しているわけではない。
![]()
発酵器本体
長時間通電し続けるので、発泡スチロールのトロ箱と電球の組み合わせでは火災が心配だったのと、見た目もキレイに作れそうになかったのでタオルウォーマは最適。ネットで探したら7千5百円で新品が購入できた(送料込み)。容量は12リットル。
ちなみに、近所の厨房用品のリサイクルショップでは錆びがでているものが2万円もしていた。ヤフオクだと2〜5千円くらい。
![]()
温度推移(単純オンオフ制御)
温度変化の様子をPICマイコン内のEEPROMに記録するロギングモードを用意し、庫内の温度変化を見てみた。EEPROMの内容はPIC KIT2で読み出した。
左のグラフは設定温度の0.5℃下(42℃なら41.5℃)でAC出力をオンオフした結果。最初の温度上昇に慣性があって(ヒータへの通電とヒータ温度上昇の時間差、さらにヒータ温度と庫内温度の時間差の影響)、設定温度の42℃(赤い線)を4℃も越えてしまった。その後、温度がなかなか下がらない(外気温が28℃程度あることも影響)。
![]()
温度推移(温度上昇の傾きを考慮)
温度上昇が急峻な場合には早めに通電をオフして、その後は慣性で上昇するのを待つようにしたら結構上手く行った。
具体的には、1分前の温度と現在の温度から温度上昇の傾きを求め、傾きに応じて(取りあえず傾きの2倍;傾きが2℃/分なら4℃)通電オフの閾値温度を下げるようにした。
左グラフは定常状態になってから少し高めの温度で推移している。
![]()
温度推移(移動平均)
もう少し改善。通電オンオフの閾値を設定温度より0.25℃低くするのと、オンオフの温度を過去4回分(4秒間)の移動平均とするようにした。左のグラフの温度は移動平均温度ではなく、毎回測定した温度そのまま。
設置温度になる直前が少しもたつく感じがあるが、その後の温度はかなり一定となったので、これを採用。
![]()
完成
白文字のインレタがなかったので、カシオネームランドの透明テープ白文字ラベルで文字を入れた。遠目にはインレタに見える。
AC出力がオンのとき、温度表示LEDの右下ドットが点灯し、通電していることが判る。また、時間表示のドットは、1秒毎に点滅してカウントダウン中であることを表示。
![]()
安全対策
長時間通電し、その間不在になることもあるので安全に使えることが大事。全体の安全対策は以下の通り。
・マイコン暴走はワッチドッグタイマ(WDT)で監視し、停止
・電圧低下はマイコンのブラウンアウトリセット(BOR)で停止
・温度が55℃を越えたら強制停止【左写真】
・タオルウォーマのサーモスタット(60℃位)
・最後の砦はタオルウォーマの温度フューズ
![]()
諸元
- 設定温度:25℃〜50℃
- 設定時間:1時間〜48時間
- 稼働中表示:START/STOPスイッチLED点灯、時間LEDのドット点滅
- 通電表示:温度表示LEDのドット点灯(点灯時、AC出力オン)
- 終了表示:時間表示LEDにOF.表示、アラーム5秒間
- エラー表示:時間表示LEDにE1.(WDTエラー)、E2.(55℃越え)
- 制御電力:AC100V 200W迄
- その他:
- 温度測定と表示は、終了後やエラー後も継続
- ロギングモード:温度変化の記録(電源投入時に時間・温度設定スイッチを押しておく)
タオルウォーマは結構断熱性があるようで、内部が42℃になっても本体の外側はそれほど暖かくならない。また、設定温度になるとヒータへの通電時間はほんの僅かで消費電力は少ない。
発酵器を使った納豆作りの様子は、DIYの記録 発酵器と納豆作りに載せました。
最後に、回路図と、プログラムソースです。いずれもバグがあるかも知れません。無保証です。
以上