「Rancilio Silvia」にArduinoでPID制御を仕込んだ

Rancilioのエスプレッソマシン「Silvia」は改造する人が多いことで有名です。そのなかで多いのが温度コントロール関連。断熱材をはじめとした多くの実例が挙がっておりますが、特に人気なのが、PID制御に対応させることです。

PID制御とは、温度を制御する方法の1つです。端的にいうと、温度を一定に保つための仕組みです。温度センサーで計測した温度をもとに、ヒーターの電源を細かくオンオフすることで、常に同じ温度をキープできます。

しかし、シルビアはサーモスタット(バイメタルサーモスタット)にて温度制御をしています。安価なエスプレッソマシンは基本的にこの方法です。シルビアでは抽出用に100度、スチーム用に140度、オーバーヒート防止用に165度のサーモスタットを搭載しています。

Rancilio Silvia

シルビアにおける抽出用サーモスタットの動作に目を向けると、約100度で電源がオフになり、約80度で再度電源がオンになります。つまり、約20度の間をいったりきたりしているわけです。温度が変わると味も変わってしまいますから、これでは安定した抽出ができません。温度計もついてないのでなおさらです。

これを問題に思う方が多いようで、このPID制御に対応させるためのキットも販売されています。ネジを外して中身にアクセスし、説明書に従ってパーツを取り付け、配線をいじるだけです。最初から組み込んで販売しているショップもあります。とはいえキットの価格は、2万円ほどと少し高額。個人輸入しないと日本から手に入らないこともあり、躊躇していました。

Silviaの配線をいじっているところ

PID制御は広く使われている一般的な制御方法の1つで、エアコンや自動車などのモーターなどにも採用されています。であれば、自分でも作れないだろうか。温度はセンサーを設置すれば計測できますし、ヒーターの制御はSSR(ソリッドステートリレー)という部品があれば可能です。あとはコンピューターで計算するだけなので、ArduinoやRaspberry Piで実行できれば完成です。

調べてみたところ、Arduionoを使用して「Arduino温泉卵機」を作っている方のブログを発見しました(参考サイト:Arduino温泉卵機の製作6(ソフトウェア設計))。記事によると、「Arduino PID Library」ライブラリが用意されているとのこと。同ブログの情報をもとに、こちらのライブラリを利用して進めてみることにしました。

またせっかくなので、蒸らし動作や自動抽出を盛り込んでみることにしました。PID制御は抽出だけでなく、スチーム対応に。配線は海外の例を参考に改造を行い、下記のかたちにて進めました。

具体的には、3つのSSRを設置しています。それぞれヒーター、ポンプ、3方向バルブを制御。スイッチは3つのうち2つを無効化し、電源オンオフのみを残しています。

温度センサーは秋月電子で温度センサを入手し、ボイラーに設置しました。センサーは抽出用サーモスタットがあった場所に固定しています。今回はスチームもPID化させるため、スチーム用のサーモスタットは配線から外しています(邪魔にならないので残したままです)。また、オーバーヒート防止用のサーモスタットは、安全のために、そのまま通電させています。

SSRについては、秋月電子で1個250円のキットを購入しました。十分に放熱すれば100V25Aまで使用できるため、ヒーター用としても耐えられる水準です。10A以上の電流が流れる場所なので、ヒートシンクを設置して放熱をさせています(なお発熱が気になり、最終的にはより高スペックのものに置き換えました)。

上記の画像がテスト中の様子です。ArduinoとSSRを接続したほか、3つのボタンとディスプレイを用意しました。SSRからSilvia各パーツにつながるケーブルは、ひとまず手持ちのものを使用しています。耐圧的には問題ないのですが、細い配線を使用しているのでやや不安が残ります。最終的には100Vが通る部分は、より太く余裕のある配線に置き換える予定です。

またいつまでもブレッドボードを利用するわけにはいかないため、この後、Arduio用に重ねる基板を作成しました。ボタンやディスプレイなどが抜き差しできるようになっていて、今後の拡張や仕様変更も考慮したつもりです。配線色で系統を分けています。

ディスプレイについては、現在の計測温度を表示できるようにしました。抽出中には、残り時間のカウント表示も実装しています。

ボタンについては3つのうち1つを抽出/スチーム切り替え、もう1つを抽出開始(1押しで30秒のオート抽出/長押しで教えている間のマニュアル操作)、残りの1つをスチームワンドからのお湯出しボタンにしています。温度の変更まで組み込むとボタンが増えてしまうため、温度変更はAdruinoからプログラム書き換えで対応するようにしました。

なお、抽出については蒸らしを組み込んでいて、3秒間お湯を出して3秒間停止、その後連続抽出を行う設定です。通常は抽出をやめようとすると3方向バルブで圧力が逃げてしまい蒸らしが行えないのですが、今回の制御では、ポンプと3方向バルブを別個で制御することで、蒸らし動作ができるようになりました。

PID制御による温度計測の数値を書き出したものが下記グラフになります。設定温度は97度にしていますが、1度、大きく温度を超えてしまうタイミングがあります。これは専門用語でオーバーヒートといい、早く目的の温度に到達させるために必要なものらしいです。オーバーシュートが起きた後、目的の温度に収束していくかたちです。

オーバーシュートさせずに目的の温度に到達させることもできますが、ゆっくり温度を上げていくことになるので、数倍の時間がかかってしまいました。パラメーターの調整次第ではもう少し良い制御ができそうですが、ひとまずはこの状態で使っていこうと思います。

結果的にはArduinoでSilviaのPID制御を作ることができ、Arduinoを含めたとしても5,000円程度という安価な範囲で収まりました。一方で、電気知識やプログラミングが必要になってきます。最悪の場合は火災になる可能性がありますので、万人にはオススメできないというのが正直なところです。

今回は制作の手間も楽しめましたが、なかなかの時間がかかります。すべてを総合的に考えると、キットの価格は決して高くないなと感じました。