トップページ | 2007年7月 »

2007年6月

2007年6月30日 (土)

中点の自動検出機能を追加

こんばんは。マダム でんでん♪でございます。

焙煎もぼちぼちやってますが、Roaster Loggerの改良も少しずつ進めてます。25日のバージョンでは中点は「中点」ボタンをクリックした時点のデータを取っていたのですが、中点は豆温度が一番低くなった点なので、こういうのはコンピュータに判別させたほうが正確です。それは初めから分かってたんですが、要するに判別ルーチンを書くのが面倒だったのでボタンにしてたんです。。。

今回追加したルーチンは、豆温度の最低温度と時刻を変数に保持しておいて、30秒のあいだ最低温度が更新されなかった時点で変数に保持されている温度と時刻を中点のデータとして確定し、記録するというだけの仕組み。

最初から付けとけよって感じの機能ですが、中点ボタンをクリックしなくても済むようになったのでちょっとだけ便利になりました。

| | コメント (0) | トラックバック (0)
|

2007年6月25日 (月)

焙煎データ記録プログラム完成!!

こんにちは。マダム でんでん♪でございます。

やりましたっ。焙煎データ自動記録のExcelマクロがついに完成です!!

さっそく、練習用に買ってあったコロンビア スプレモを1kg焙煎して、完成したプログラムのテストです。

20070625_colombia

ちょこっとメジャーなバグが残ってる気配ですが、とりあえずデータの記録はきちんとできました。まだ改善の余地はありますが、操作性もなかなかいい感じ。

右側のボタン類で火力、ダンパー操作、ハゼのタイミングなんかを記録できるようになってます。あとは、120℃、150℃、190℃に到達した時間のが自動で記録できるとか、直前20秒、5分の温度上昇率なんかもリアルタイムに表示されるようになってます。温度上昇率を表示する機能は、火力調整の目安として結構使えるんじゃないかと思ってます。

焙煎曲線で破線で表示されているのは、今使っている焙煎機の購入を検討していたときに、製作者の方のお宅でモカ イルガチェフ1kgのテスト焙煎させていただいたときのデータです。このときのコーヒーはとてもいい出来だったので、初心に帰って製作者の方に教わったとおりの焙煎でやってみました。ちょっとだけ下方に平行移動した感じにしてますが。

20070625_colombia_roastedbean

焙煎結果の方は、まだ分かりませんが豆の見た目や直後にドリップしてみた感じでは、そんなに悪くないんじゃないかと思います。まあ、今日はどっちかというとプログラムのテストの比重が大きかったので、結果はあまり気にしてませんが。それに、プログラミングで夜更しが続いていたので、眠くて眠くて。。。。

今日はゆっくり寝ます。

| | コメント (1) | トラックバック (0)
|

2007年6月23日 (土)

データの自動記録 その3

こんにちは。今日もお暑うこざいますが、皆様いかがお過ごしでしょう。ちょっと寝不足のマダム でんでん♪でございます。

一昨日昨日シリーズでお届けしております「データの自動記録」についてですが、今日は進捗がはかばかしくありません。それというのも、Microsoftさまのとっても複雑怪奇な言語仕様のワナに見事はまりまして、1秒ごとにデータを取得するつもりがときどき間が飛んでしまうというバグつぶしで夜更かしてしまったせいで、アタマぼんやりだからなのでございます。まあ、わたしみたいな低スキルの(元)プログラマが言語仕様がどうのこうのと文句を書き連ねると、どこかから石の礫が飛んできそうなので、この話はこれくらいにして。。。

今日はわたしが何故にこれほどデータの自動記録のために時間を費やしているかという、そこら辺のことを少し書きたいと思います。同じようなことは過去の日記「焙煎データの記録について」でも書いたことがありますが、今回はもう少し掘り下げてみたいと思います。

わたしがデータの自動記録で目指しているのは、ざっくりと次の3点に集約されます。

  1. 焙煎の再現性
  2. トレーサビリティ
  3. データからの自由

1番から順番に簡単に説明します。データに基づいて焙煎すれば、同じ味のコーヒーが再現できるかというと疑問は残ります。ただ、過去のデータを活用することで、焙煎の再現性を高める手助けになることは間違いないでしょう。

2番目のトレーサビリティですが、これは今後の社会でますます求められるようになってくると思っています。今も牛ミンチのはずが豚ミンチだったとか、血を混ぜてたとかいろいろ問題になってますが、生産と消費が分離してしまった現代の社会では、商品の信頼性を確保するにはトレーサビリティという考え方はなくてはならないものになっていくでしょう。

特に顔の見えないネットショップでは、お客様の信頼を得るのは簡単ではありません。もちろん、お客様とのコミュニケーションを豊かにする工夫を通じて、信頼を得る努力は必要です。しかし、それだけではなく、情報の公開を通じてごまかしのない商売をしていることを示すことによって、信頼を得る努力も必要になると思うわけです。

そうした情報公開の一環として、「焙煎珈房 蝸牛の宿」では、ロットごとの焙煎のデータも公開するようなことも考えています。もっとも、焙煎データをお客様がみたいと思うかどうかには疑問がありますし、同業者との情報交換に差しさわりが出る(完全な焙煎データを公開するお店となれば、焙煎方法について他の業者さんが焙煎方法について教えてくれなくなるとか)などの営業上の理由で完全なデータを無条件に公開することができない場合もあるかもしれません。それでも、完全なデータではなくても品質管理に関わる情報を公開することには意味があると思っています。

最後に3番目。データの自動記録をすることで、データからの自由を目指すというのはとても矛盾しているように聞こえるかもしれませんが、実はこの3番目がわたしがもっとも重視しているポイントなのです。何か焙煎に問題が起きたときに、何を手がかりに原因を考えるかと言えば、やっぱりデータなのです。特にこれから焙煎をマスターしなければならないわたしにとっては、客観的なデータに基づいて焙煎結果を振り返るという作業をしていかないと上達はおぼつかないと思うのです。

で、なぜ、データの自動記録がデータからの自由に繋がるかなんですが、まず第1に温度、火力、排気操作などの定量的なデータを自動で記録できるようになれば、温度計とにらめっこして温度を記録したりする手間から自由になるわけです。次に、定量データの記録を自動化することで、定量データの記録に使っていた労力、注意力を豆の状態の変化をしっかり観察することに振り向け、観察の所見と記録データを結びつけることで、焙煎について論理的に考えることができるようになるんじゃないかってことです。

わたしが師匠と仰ぐ、フレーバーコーヒーさんも焙煎のコンピュータ制御に取り組まれたことがあるそうです(わたしの場合は制御まではいかなくてデータの自動記録だけですが)。リンク先には「今では、その方法(焙煎のコンピュータ制御)が間違っていたと思」(カッコ内は引用者注)うと書かれていますが、当時(写真を見る限りWindowsとかが出る前の時代ですよね)のコンピュータでは何から何まで1から作らなければならなかったんでしょうから、「コンピューター制御をやっていなかったら、もう少しコーヒーを深く研究できていた」とおっしゃっている通り、労力が成果を上回っていたってことが大きいと思います。

今のPCはその点ではめちゃくちゃお手軽です。インタフェースも規格化されて、シリアル通信のためのライブラリなんかもネットから簡単にダウンロードできるし、Excelを使えばグラフィカルなアプリケーションだって単純なものならほんの2、3日のプログラミングで完成してしまいます。Microsoftの言語仕様がどうのと小言書いたりしましたが、Excelはこの手のアプリを開発するプラットフォームとしてはとっても優秀です。Microsoftさまさまですよ。

そうそう。自動記録のアプリ、完成して自分で使ってある程度安定してきたら、オープンソースライセンスで配布しようかと思ってます。といっても、モノがモノだけにどれだけ使ってくれる人いるかわかりませんが。もし、万が一、そういうの欲しいなと思ってる方いらっしゃいましたら、ご期待ください(期待はずれだったらゴメン)。

| | コメント (0) | トラックバック (0)
|

データの自動記録 その2

こんばんは。マダム でんでん♪でございます。

昨日から始めた焙煎データを自動記録するためのプログラムですが、どうにかそれっぽい形になってきました。

20070623_autorecord_s

とりあえず、シートの右のほうにある「投入」ボタンをクリックすると温度データの記録を始めて、「煎り止め」ボタンをクリックすると記録を終了します。で、記録されたデータはリアルタイムで左上の表と左下のグラフに表示されます。ついでに、過去のデータを「参考データ」シートに貼り付けておけば、参考データとの差をリアルタイムで確認しながら焙煎できます。

あとは、中点、1ハゼ、2ハゼ、火力操作、ダンパー操作のボタンをクリックしたときのイベントを書けば、とりあえず完成。エラー処理とかめっちゃ適当なので、人に使ってもらえる状態じゃないですけど、来週からはこのプログラムを使って焙煎できそうです。

将来的にはデータをデータベースに保存して、条件検索で参考になりそうなデータを探して利用できるようなシステムにしたいんですが。そこまでやるのは結構大変そう。。。

| | コメント (0) | トラックバック (0)
|

2007年6月21日 (木)

データの自動記録 その1

こんばんは。マダム でんでん♪でございます。

以前、「焙煎機の改造(改良)」で少し触れた焙煎データの自動記録システムの開発をやっとはじめました。プログラミングは久しぶりなので、ちょっとカンが鈍ってます。というか、もともと鈍るようなカンなどなかったわけですが。。。(笑

とりあえずは、データロガーとPCをRC-232で接続して、PCからデータロガーにコマンドを送って定期的に温度データを取得し、エクセルのシートにデータを書き込み、リアルタイムで表、グラフに表示するような簡単なものを作ろうと思ってます。

今使っているデータロガーは、マザーツールという会社のMT-306という2chのデジタル温度ロガーで、10個くらいのコマンドですべての機能を制御できるインタフェースになってます。このうち、Aコマンド(RS-232経由でASC 41Hを送る)で現在の温度情報をエンコードされた形で取得できるようになってます。

で、Excel VBAからCOMポート通信ができるモジュールをネットで探してたら、ちょうどよさそうなEasyCommっていうのを見つけました。リンク先からダウンロードしたアーカイブに含まれるec.basとecDef.basをExcelのブックにインポートすると、VBAからCOMポートと通信するためのメソッド、プロパティが利用できるようになります。

こういうプログラム書いた経験があまりない上に、MT-306のマニュアルの記述があまりに素っ気ないので、ずいぶん悩んだ末、とりあえず、MT-306から現在の温度情報を取得するコード断片を書いてみました。

Sub Main()

Dim recBinData() As Byte

ec.COMn = 2
ec.Setting = "9600,n,8,1"
ec.Delimiter = ec.DELIMs.LF
ec.BinaryBytes = 10          '取得バイト数を10に設定

ec.AsciiLine = "A"
Do While ec.InBuffer < 10   '10バイト受信するまで待機
    DoEvents
Loop
recBinData() = ec.Binary    'エンコードデータの読み込み

' T1の各桁をデコード
t1dig4 = recBinData(3) \ 16
If t1dig4 = 11 Then t1dig4 = 0
t1dig3 = recBinData(3) Mod 16
t1dig2 = recBinData(4) \ 16
t1dig1 = recBinData(4) Mod 16

' T2の各桁をデコード
t2dig4 = recBinData(7) \ 16
If t2dig4 = 11 Then t2dig4 = 0
t2dig3 = recBinData(7) Mod 16
t2dig2 = recBinData(8) \ 16
t2dig1 = recBinData(8) Mod 16

' 小数点の有無を判別しT1、T2を数値(ヴァリアント型)に変換
t1 = t1dig4 * 100 + t1dig3 * 10 + t1dig2 + t1dig1 * 0.1
If recBinData(2) And 4 Then
    t1 = t1dig4 * 1000 + t1dig3 * 100 + t1dig2 * 10 + t1dig1
End If

t2 = t2dig4 * 100 + t2dig3 * 10 + t2dig2 + t2dig1 * 0.1
If recBinData(2) And 32 Then
    t2 = t2dig4 * 1000 + t2dig3 * 100 + t2dig2 * 10 + t2dig1
End If

MsgBox ("T1: " & t1 & "/T2: " & t2)

End Sub

VBAエディタのイミディエイトウィンドウからmainプロシージャを実行すると、メッセージボックスに現在の温度(T1、T2)が表示されるだけの単純なコードです。後は、タイマーで定期的にこのコードを呼び出して、Excelのワークシートに時系列順にデータを書き込んでいけば、Excelのグラフ描画機能を使ってリアルタイムに温度データを表示できるかなと。で、過去30秒、1分、5分etc.の温度上昇率とか、火力、排気操作や1ハゼ、2ハゼの時間、温度なんかも自動で記録できるようにしたいなあと。

「T1の各桁をデコード」、「T2の各桁をデコード」ってコメントのあるあたりのコードは、BCDエンコードされている温度データをデコードしてるんですが、なんかどう考えてもだっさいコードです。もっとすぱっとキレイに書けるに違いないんですが。。。だれか教えてください~♪

VBAニガテなので、ちょっと苦労しそうですが。。。明日、明後日くらいで動くようになったらいいなあ。。。

| | コメント (0) | トラックバック (0)
|

トップページ | 2007年7月 »