【スマートキッチン】まぜまぜ機の検討とプロトタイプ開発

研究開発部 スマートキッチングループ アルバイトの鈴本です.
今回は,最近取り組んだまぜまぜ機の検討とプロトタイプ開発について紹介します.

1.はじめに

↓こんなもの作りました.
まぜまぜ機です.フライパンや鍋に入ったものを勝手に混ぜておいてくれます.

フライパンの上に電子部品丸出しのものが乗っているの,シュールですね....
もちろん,防水なんて考えてません,プロトタイプですから.

今回は,こんなものを作ってしまった経緯とその実装について紹介します.

2.背景 〜まぜまぜ機〜

カレーやシチュー,スープやあめ色玉ねぎを作るとき,一番めんどくさいのが焦げ付かないように混ぜ続けること.
これをなんとかできないかと思い,火にかけたフライパン・鍋をほっておいても混ぜ続けてくれるデバイス,まぜまぜ機を考えてみることにしました.

3.まぜまぜ手法のアイデア整理

まず3つほど,既存製品を例にまぜまぜ機のアイデアを検討してみました.

3-1.三脚型まぜまぜ機


出典 : https://www.amazon.com/Uutensil-Stirr-Unique-Automatic-Stirrer/dp/B008OWT95S

鍋にぽんと入れておくと,まぜまぜ機自体が振動して回転することにより,まぜまぜしてくれるデバイス.

■ メリット

  • お手軽
  • 鍋,フライパンを選ばない(どの鍋・フライパンでも使える)

■ デメリット

  • 構造上,大トルクが出しにくい
  • 実際に使ってみると,全く混ざらない(後述)

3-2.縁取り付け型まぜまぜ機


出典 : https://www.amazon.co.jp/dp/B06XBY9JKM

鍋の縁にはめて使うタイプのまぜまぜ機.

■ メリット

  • 大トルクは出せそう
  • 回転速度などの制御もしやすそう

■ デメリット

  • 機構が複雑で値段が高い
  • 鍋径,深さなどの制約があり,使える鍋・フライパンを選んでしまう

3-3.マグネティックスターラ型まぜまぜ機


出典 : http://www.taiyo-kabu.co.jp/products/detail.php?product_id=1704

鍋やフライパンを選ばず,そして大トルクを出せるまぜまぜ機候補として思いついたのがこれ.
下の台で回転磁場を発生させ,鍋の中に入れた磁石でできた回転子を回転させます.

高校時代,コウジカビなどの菌を使って生物学の研究をしてたので,個人的にはとても馴染みのあるデバイスです.

■ メリット

  • 大トルクは比較的出しやすい
  • 鍋,フライパンを選ばない(どの鍋・フライパンでも使える)

■ デメリット

  • 回転子をどうやってとりだすのかが問題
  • IHクッキングヒーターと連携させた場合,ヒーターの電場と干渉しそう?

4.開発方針

4-1.要求と現状の問題

まぜまぜ機のアイデアが出そろいました.
個人的に,まぜまぜ機に求めるものは,

  • 手軽である
  • 鍋やフライパンに依存しない(どんな鍋・フライパンでも使える)

ことです.

1からシステムを作りたいところですが,今回は開発期間が短かったため,既存のデバイスをもとにプロトタイプを制作しました.

トルクが出しにくそうではありますが,三脚型まぜまぜ機を改良してみることにします.

なぜここで “改良” と言っているかというと,3-1.で上げたまぜまぜ機が,ほぼほぼ使えなかったからです(下図参照).
まあ,1枚目(煮物)は仕方がないとして,2枚目(玉ねぎ炒め)ですら回らず....
ここに水を入れて玉ねぎを浮かせてあげると,多少は回ってくれたのですが,まぜまぜ,とはいきませんでした.

4-2.開発コンセプト

開発コンセプト図はこのような感じ.
まぜまぜ機にマイコンをのせ,今までより大きな電流を流せるようにし,出力をUP.
さらに各種センサからの情報により回転を制御し,またBluetoothで他のデバイスとも繋げられるようにします.

三脚型まぜまぜ機はその足が食材と接するため,温度などを直に測れます.
そのため,今後IHクッキングヒーターなどと連携できれば,面白いのではと思いました.

5.実装(ハードウェア)

5-1.概要

全体図は下図のようになります.
回路面積などの制約から,かなりコンパクトな設計となっています.

5-2.マイコン

マイコンは,社内に転がっていた「ESPr® Developer 32」を使いました.
On-BoardでBLEモジュールがついている優れものです.

しかし,開発を始めてから,

  • すでにディスコンになったらしく,公式HPにすらデータシートがない.
      → ノリで頑張る.
  • Arduino互換マイコンといいつつ,I2CドライバがArduino互換ではない.
      → ネットに上がっている他人のコードを参考に対処.
  • BLEとADCが干渉する.
      → ledcAttachPin という関数を用いることにより,部分的に使用可能.
  • PWM出力に対応していない.
      → タイマー割り込みで自作.

など問題が多発し,なかなか苦労しました.

5-3.電源ライン

  • モーターの出力を上げたい
  • 小型高出力の電池がいい

という要求から7.4V Li-Poバッテリを選定しました.

モーターには7.4V(満充電実測では8.4V)を印加し,マイコン入力用と5V系センサ用に三端子レギュレータ「TA48M05F(SQ)」で5Vを作りました.
3.3Vラインはマイコン内蔵のレギュレータから取り出せます.

また,今回はスペースの都合上,ロジック電源とモーターバス電源が共通です.
モーター側の高ノイズがロジックに悪影響を与えないように,適当にパスコンなどを追加しました.

5-4.9軸センサ

はじめ,ESPr® Developer 32 対応シールド「ESPr® Developer用9軸慣性計測ユニットシールド」を購入しましたが,

  • 1台目はI2C通信のアドレスすら取れない.
  • 2台目はI2Cの通信確立まですすむも,センサ値が読めない.

という不具合に悩まされ続け,結局このセンサを断念.
代わりに「BMX055使用9軸センサーモジュール」を使いました.

5-5.モーター,モータードライバ

モーターは既存のまぜまぜ機についていたモーターを流用しました.

モータードライバはおなじみの「TA7291P」です.
このモータードライバ,定格はロジック電圧入力の最小値が4.5Vで,制御信号のHIGHの最小電圧が3.5Vですが,実はスレッショルドが2.5V近辺にあるので,3.3V系でも使えます.
(回路面積に余裕があれば,本来はロジック変換をかませるべき.)

5-6.温度計

防水のことを考えると,白金抵抗で温度計を自作するのがベストなのですが,定電流回路と増幅回路を載せるスペースがなかったため,今回は適当な温度センサ「LM35DZ」で妥協しました.

5-7.スピーカ

社内に落ちていた,圧電スピーカ「SPT08」を使いました.

6.実装(ソフトウェア)

6-1.概要

ハードウェアが完成したので,次はソフトウェアです.

実装した機能は次の通り.

  • 様々な振動パターン
  • Bluetooth (BLE) を用いたコマンド・テレメトリ
  • 9軸センサを用いた,回転具合の推定
  • 最適モーター出力探索
  • タイマー機能

6-2.様々な振動パターン

まず,モーターをPWM制御することにより,モーターへの電流量を調整できるようにしました.
また,定常振動ではなく,「ブッ ブッ ブッ ブッ」のようなパルス的な振動モードなども実装してみました.

6-3.Bluetooth Low Energy (BLE) を用いたコマンド・テレメトリ

開発段階であるため,セントラルにはスマホではなくMac Bookを用いました.

定期的にまぜまぜ機よりテレメトリ(時刻,モーター出力,振動モード,各種センサ値などを含む)がBLE Notifyされます.

さらに,モーター出力や振動モード変更,後述するタイマー設定などのために,Mac Bookからまぜまぜ機へコマンドがBLE Writeによって送信できます.

6-4.9軸センサを用いた,回転具合の推定

はじめ,愚直に9軸センサの角速度を取得しましたが,まぜまぜ機自体の振動ノイズにより,全く意味のある値が取れませんでした.

そこで,角速度ではなく,磁気センサから方位 \(\theta\) を取得し,その方向角をもった単位ベクトルを足し合わせていくアルゴリズムを組みました.
数式にすると次式です.

$$ \tau = {\frac{1}{N}} \sqrt{ { \left( \sum^{N} \cos\theta \right)}^{2} + { \left( \sum^{N} \sin\theta \right) }^{2} } $$

\(\tau\) は \( 0 \leq \tau \leq 1 \) をとり,値が小さいほどサンプリング時間における方位のばらつきが均質である,つまり高速で回転していることを示します.

ただ,例によって地磁気センサのキャリブレーションは難しく,そこまで高い精度は出てない気がします.

6-5.最適モーター出力探索

8.で詳しく述べますが,実は鍋や水量によって適切なモーター出力が異なることが判明しました.
そのため,モーター出力を変化させながら 6-4.で実装した回転具合の推定値をモニタし,最もよく混ぜれるモーター出力を自動で探索する機能をつけました.

6-6.タイマー機能

「あと5分だけ混ぜておいて欲しい!」などの要求に答えるため,自動停止のためのタイマー機能を設定しました.
BLEでコマンドを打つとセットされ,指定時間が経過するとスピーカが鳴り停止します.

7.結果

結果的に,このくらい混ぜれるようになりました!
(上に乗ってる乾電池は重量調整用の重りです.)

引っかかって回転しなくなったら,自動的に振動モードを変えるなどの機能も実装されています.

8.得られた知見

無事,そこそこ混ざるようになりましたが,ここまでたどり着くまでに,まぜまぜの奥深さを知りました.

8-1.モーター出力パワーを上げればいいわけではない

最初は,「回らないんだったらモーター出力を上げればいいだけではないか.」と考えていましたが,実際はそうではありませんでした.
モーター出力を上げると,モーター回転数が上がるので,振動の振動数が上がります.
しかし,振動数が上がっても,トルクが大きくなる様子は観察されませんでした.
今回はモーターが1つしかなかったので試せませんでしたが,振動振幅を変えてみるとまた新しい発見があるかもしれません.

振動を回転に変えるのは,そう一筋縄ではいかないようです.

さらに面白いことに,鍋の径や入っている水の分量によって,最も速く回転するモーター出力が異なることがわかりました.
7.に載せたGIFアニメですが,スープよりも炒めもののほうが,最適なモーター出力が小さかったのです.

8-2.回転に影響があるパラメタとは?

鍋径や水量などの外部状態も,モーターの回転に影響を与えることがわかりました.
その他にも,まぜまぜ機自体の重さも重要だったようです.
特にモーター出力を上げた場合,まぜまぜ機自体が跳ねるだけで力が伝わっていないことも見受けられました.

今回作ったプロトタイプの実験で,

  • モーター出力(電圧,電流)
  • まぜまぜ機自体の重さ
  • 鍋の径,素材
  • 具材の量や水分量
  • 振動数や振動振幅

など,様々な要因がまぜまぜ機の回転に影響を及ぼしていることがわかってきました.
もしかしたら共振あたりが関係しているのかも...しれません.

4-1.で,鍋やフライパンに依存しない(鍋やフライパンを選ばない)気軽なまぜまぜ機がよいと言いましたが,三脚型でも環境依存性のないデバイスは難しそうです.

9.Future Works

今回のプロトタイプ開発はここまでです.
これを通じて,まぜまぜが意外と奥が深そうだということがわかってきました.

今回のやり残しとしては,

  • 振動から回転への力の変換の特性解明
    • 足の形状の検討
    • 適切な振動数,振幅などの追求
  • 外部連携
    • 温度情報などを共有し,IHクッキングヒーターなどの加熱器と連携
  • 大トルクが出せ,かつできるだけ環境に依存しない手軽なまぜまぜ機の追求
  • 作り込み
    • 防水にするとか,見た目をましにする,とか

などがあげられます.

10.おわりに

ハードウェアからソフトウェアの実装まで,限られた時間で完走するのは大変でしたが,いくつも発見があり面白くもありました.

様々な要因が絡み合って実際の現象として現れ,やってみないとわからない.
これこそが,コンピュータの中で閉じてしまう実装ではなく,実際の物理世界に干渉するデバイスの実装が好きな理由です.

クックパッドは,スマートキッチンというコンセプトの下,物理世界と積極的に関わろうとしているとても興味深い企業なのです.

/* */ @import "/css/theme/report/report.css"; /* */ /* */ body{ background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527163350.png'); background-repeat: repeat-x; background-color:transparent; background-attachment: scroll; background-position: left top;} /* */ body{ border-top: 3px solid orange; color: #3c3c3c; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; line-height: 1.8; font-size: 16px; } a { text-decoration: underline; color: #693e1c; } a:hover { color: #80400e; text-decoration: underline; } .entry-title a{ color: rgb(176, 108, 28); cursor: auto; display: inline; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Meiryo, Osaka, 'MS Pゴシック', sans-serif; font-size: 30px; font-weight: bold; height: auto; line-height: 40.5px; text-decoration: underline solid rgb(176, 108, 28); width: auto; line-height: 1.35; } .date a { color: #9b8b6c; font-size: 14px; text-decoration: none; font-weight: normal; } .urllist-title-link { font-size: 14px; } /* Recent Entries */ .recent-entries a{ color: #693e1c; } .recent-entries a:visited { color: #4d2200; text-decoration: none; } .hatena-module-recent-entries li { padding-bottom: 8px; border-bottom-width: 0px; } /*Widget*/ .hatena-module-body li { list-style-type: circle; } .hatena-module-body a{ text-decoration: none; } .hatena-module-body a:hover{ text-decoration: underline; } /* Widget name */ .hatena-module-title, .hatena-module-title a{ color: #b06c1c; margin-top: 20px; margin-bottom: 7px; } /* work frame*/ #container { width: 970px; text-align: center; margin: 0 auto; background: transparent; padding: 0 30px; } #wrapper { float: left; overflow: hidden; width: 660px; } #box2 { width: 240px; float: right; font-size: 14px; word-wrap: break-word; } /*#blog-title-inner{*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-position: left 0px;*/ /*}*/ /*.header-image-only #blog-title-inner {*/ /*background-repeat: no-repeat;*/ /*position: relative;*/ /*height: 200px;*/ /*display: none;*/ /*}*/ /*#blog-title {*/ /*margin-top: 3px;*/ /*height: 125px;*/ /*background-image: url('https://cdn-ak.f.st-hatena.com/images/fotolife/c/cookpadtech/20140527/20140527172848.png');*/ /*background-repeat: no-repeat;*/ /*background-position: left 0px;*/ /*}*/