電タバ関連つらつらと・・・

電子タバコとか、VAPEとか言われているアイツについて、適当に書いていく、そんなBlogです。

オームメーターを作ってみよう その2 機能編

こんにちは。

さて今回は。
部材到着から1週間。
だいぶオームメーターのソフトが仕上がってきたので。
JIG作って。
機能テストも兼ねて、機能紹介をしていきたいと思います。

現状、こんなんです。
DSC03102

ご注意!
 これは、一般的なオームメーターではなく、「4線交流絶縁測定方式」なオームメーターです。
 なので、絶縁確保しつつ、バッテリーの電圧とは別に抵抗値を測れますが。
 一般的なオームメーターやテスターでは、出来ません。
 最悪、バッテリーショート→事故コースになります!。
 くれぐれも、ご注意下さい!。


 まあ、起動するとこんな感じ。
DSC03103

現状スプラッシュスクリーン付けてますが、既にフラッシュメモリの92%とか使っているので、今後どうなるか予断を許しません・・・。

EUT、測定機器は、こんな感じに接続します。
DSC03104

電流と電圧を別々に測る、「4線測定式」なので、線が4本です。
まあ、やりざまは、Wikipediaとか見てくださいな。

 参考URL:四端子測定法 - Wikipedia

起動後、デフォルトだと、抵抗値表示モードになります。
DSC03105

左上のバッテリーメーターは、電源電圧(リチウムイオン1セル想定)。
右上はキャリブレーション/MOD抵抗の設定値。
中央が抵抗値。
下は、設定されたMOD電圧に従い、電力、電流、及び設定電圧を出しています。

上下ボタンで切り替えることにより、表示を入れ替えられます。

電力表示。
DSC03106

電流表示。
DSC03107

決定ボタンを押すと、セットアップメニューに入ります。
DSC03108

上下で選択、決定ボタンで項目設定って感じ、設定用ボタンは3つです。
DSC03109

例えば、MOD VOLTAGEに入ると・・・。
DSC03110

使うMODの電圧を設定できます。

で、戻ると。
DSC03111

計算値が変わりますよ、と。

で、測定値には、オフセットをつけることができます。

メニュー「CALIBLATION」から。
DSC03112

「MANUAL SETUP」で。
DSC03113

+/-を振ることができます。
DSC03114

勘違い防止の為、主な画面にはオフセットの設定値を、右上に出しています。
DSC03115

で、例えばMODを電池の代わりに銅線でショートさせて、「それ自体の抵抗値」を測りつつ、値を引きたいときは。

自動設定できます。
DSC03116

現在の抵抗値を、ゼロ点と設定できます。
DSC03117

 *サブミリ領域は、安定しません。

単位の切り替えも可能です。
DSC03118

まあ、ミリボルト表示。
DSC03119

使っている抵抗計、本来は1秒に1回のリクエスト、なのですが。
無効な値を無視する実装入れてあるので、保証外ではありますが、測定間隔を下げ、高速化することも出来ます。
DSC03120

で、こいつは本来、バッテリーの内部抵抗計です。
なので、バッテリーも測れます。

準備!。
DSC03121

程よく使い込んだ、VTC4を。
DSC03122

「INTREG」画面にすると、抵抗値と、測定電圧が表示されます。
DSC03124

内部抵抗高めだな・・・。

もちろん単位も切り替えられますが、まあ、これはミリオームのほうがいいかな?。
DSC03125

さて。
バッテリー込みで抵抗値測れるので。
「MODの抵抗値」を測ることも出来ます。

適当なアトマに、4本線ぶっさして、準備!。
DSC03126

手元にあったメカニカルMOD、「Rumble」を測ってみましょうか。
DSC03127

だいぶ放置してたので、端子が汚れきってます。
DSC03128

接続!。
DSC03129

測定用の電流は、装置側から与えられる為、この状態でMODをパフしても、電池から電流は流れません。

で、測定結果。
DSC03131

0.6オーム弱・・・。
・・・厳しいっす。
いかにもダメそうな感じ。

端子掃除してみましょう。
DSC03132

再測定!。
DSC03133

約0.18オームですか。
Rumbleが「爆煙に向いていない」の、なんとなく分かります。

実際どれくらい向いてないのか、確認することも出来ます。

「MOD REGISTANCE」に、MODの抵抗値を設定してあげると・・・。
DSC03134

表示モード「MODFEVER」で。
DSC03135

今測ってる抵抗値でパフしたとき、MODや電池がどれくらい温まるか、出してくれます。
0.6オームでRumbleをパフると、5W、MODが発熱しますよ、と。

まあ、こんな感じです。
で、実は弱点が・・・。
システムは全て5Vで動いているのですが、リチウムイオン電池の電圧は4V弱くらい。
昇圧してます。
が、リチウムイオン電池の電圧を、計測系に掛ける「パフ機能」をつけると。
FET実装だと、電流が逆流してしまいます。
・・・リレーかなあ・・・。
・・・いらないかなあ・・・・・・・。
ちょっとだいぶ悩んでたり。

まあこんな感じで。
楽しげなオームメーターが、できつつあります。
のんびりやらかしていきますよー。

以上です。 

オームメーターを作ってみよう その1

こんにちは。

さて今回は。
特にメカニカル運用のときに力を発揮するであろう。
「オームメーター」を。
作っていきたいと思います。

・・・まあ大変で、まだ途中もいいとこなのですが。
とりあえず今は、こんな感じです。
 DSC_0855

ご注意!:
 オイラは、「C言語」も、「組み込みプログラム」も、初チャレンジです!。
 Webの情報を適当に漁りながら、行き当たりばったりで作ってます!。
 ので、多分邪道なやりくちをしまくってます!。



さて。

キッカケは、「電池の内部抵抗測りたい」からでした。

こんなステキなブツを見つけて。
module1

お?これ使えば、割りと楽しいことできるんでない?と。

勢いでこんなんとか。
module2

こんなのをご購入。
module3
 
・・・ディスプレイはまあ、電子タバコ的には、「Evic-VTCのアレ」です。
2色に分かれてますが、青い方は「DNA40とかのスモールスクリーンのあの色」です。

まあまず、大まかにブロック図を書き下してみて。
DSC_0827

部材発注、まあ、昨今の流通事情は大変宜しいので。
さくっと到着。
DSC03081

全部でこんなもんです、部品代だけで1万を軽くオーバー!。
DSC03082

今回のキモ、バッテリー内部抵抗計です。
DSC03083
I2C ( 12KHz以下 )制御、交流4線方式の絶縁式の抵抗計です。
誤差はありますが、解像度は実に10μΩ!。
そして直流電荷が掛かっていても測れる、交流絶縁仕様です。 
ステキ!、そしてお値段もステキ!、送料入れると9000円弱!。

制御部分、今回は何となく、Arduino(の互換基板) を使うことにしてみまあした。
DSC03085

ディスプレイ、まあ小さいけど、制御線の少なさとグラフィック液晶使ってみたかったので・・・。
DSC03084

PC用I/Fとかを用意して、ハンダづけ、と。
DSC03086

ブレッドボードにマウントして、準備完了。
DSC03087

ソフトは、ArduinoのIDEを使います、フリーだし!。
arduino1

まあそのまま、C言語を書いていく感じで。
arduino2

まずはディスプレイ制御。

今回使用するディスプレイは、I2C接続です。
I2Cとは、線2本だけで、また「トランジスタを使ったプルダウン」のみで複数のデバイスを繋ぐことが出来る、組み込み用の通信規格です。
制御用の小さなコントローラーが必要ですが、配線を圧縮できるので、あちこちに多用されてます。
身近なとこだと、、、PCのディスプレイ繋ぐと型番とか解像度とか出る、アノ機能用、とかね。

ネットに転がってたやり口を持ってきて、サクッとコンパイル、無事動きました。
DSC03088

次に、抵抗計を繋いでみます。
抵抗計もI2Cなのですが、こいつは絶縁の関係上、低速でしか動作しません。
普通のI2Cは100KHzなのですが、「12KHz以下」という制約があります。
なので、今回は、Arduinoの外部ライブラリを使い、I2Cを2系統生やしてみました。
ライブラリ弄って、Lowspeed作って、ね。
標準の「Wire.h」は、ディスプレイに、外部ライブラリの「SoftI2CMaster.h」は、抵抗計に、ね。
また、アドレスが標準では0番地なので、ジャンパ弄って8番地にしてあります。 
DSC03089

まあ、アドレス問題とかあって苦労したけど。
なんとかデータ返ってくるようになりました。

I2C波形!。
DSC03091

手持ちの抵抗が2Kohmしかなかったので、2Kなプルアップつけてるのですが。
角立ちすぎですね、、、もっと鈍らせないと、本来はあうとー!。
デバイス側、電荷を引っ張りきれてないしね。

I2Cの応答は、シリアルモニタで確認な感じで。
DSC_0844

ここも地味に苦労しました。
デバイスからの戻り値はfloat、浮動小数点表現の4バイトが、1バイトづつ送られてくる仕様。
しかもエンディアンが逆。
普通のC言語と違い、組み込み用C言語は使える関数や表現にクセがあるので、「一般的なやりくち」、つまりsprintfで加工とかがデキなくて。
結局読み込み方向を弄った上、unionという無理やり別の型表現に同じ変数をどうのこうのする機能で乗り切りました。

さて次は、ディスプレイに表示させてみよう的な!。

ディスプレイは、単純に各ピクセルに応じたビット文字列をバイト単位で送るだけ、なのですが。
原点が右下、下から上に8ピクセル分描画したあと、X軸方向に一つ送る、Y軸方向は8分割なページ表現という、なかなか頭が痛い仕様です。

まずお絵かきソフトでビットマップ作って。
suji

ぽちぽちと。
pochi

ビットマップ、bmp形式は非圧縮なので、データがベタで入ってます。
なのでperlで・・・。
perl1

テキストデータに変換。
moji1

それをperlで並び替えて、表示用のデータを作りました。
moji2

まあ、データは。
・ベタな一枚絵。
・32x16ドットな、でっかい数字
・16x8ドットな、ちっこい文字と数字
の3種類を。

最初並び替えの法則が掴みきれなくて・・・。

なんか崩れたイカ文字みたいなの作ったり。
DSC03092

惜しい感じだけど、なんか反転したり。
DSC_0846

 明らかにヘンなメモリを呼び出したりしましたが。
DSC03094

なんとか無事に表示な感じで。
DSC03093

文字は、floatからcharで切り出した後、byteに変換して1もじづつレンダリングする仕様にしてみました。

ちっこい文字も、作ったりして。
moji4

文字の定義はこんな感じ、BYTE直読みでケース分けしてるのですが、判定は10進みたい。
なので、ASCII10進コードで表現してます。
perl2

デカい文字は32x16なので8x8の塊が8つ、に対して、ちっこい文字は16x8なので、8x8の塊が2つ、て感じです。
moji3

あとはお絵かきソフトで当たりを付けた位置に、はめ込んでいくだけ!。
gamendesign
 
無事にはめ込めました。
DSC03095
 
ちっこい文字も、レンダリング出来てるみたいです!。
DSC_0853

ディスプレイ反転時代ではありますが、一応動画だと、こんな感じ。


まあとりあえず。

出来ている部分は、これだけです。

ここから機能的な部分を盛り込んでいきたいとは、思ってるのですが。
出来るかなあ・・・。

以上です!。 

複数・クラプトンコイル等使用時の温度管理挙動について

こんにちは。

さて今回は。
温度管理モードで、複数のコイルや、一つのコイルでも素性の違う状態のものが混じっているコイルを使うと。
どのようなことが起こるのか。
軽く、シミュレートしてみたいと思います。

いやあ、、、 軽く?。
tcpa

さて。

電子タバコにおける温度管理とは、「温度によって抵抗値が変化しやすい素材」を使い、抵抗値の変化を温度に紐付けて制御していく形態が、一般的です。

温度によって抵抗値が変化する、その係数を近似したものを「TCR」、温度管理係数と言ったりします。
このへん詳しくは、以下参照。
 URL:http://ecig.eucaly.net/archives/1132183.html

まあ今回は、この「TCR」を使って、仮想的に温度と抵抗値を算出し、これまた仮想的に温度管理実装をしてみて、「MODが設定している温度変化」と、「コイルの温度変化」がどう変わっていくのか、エクセルさんでがーっと計算させてみました、とさ。

まず下準備。

上のBlogにある、抵抗値から温度な式と。
tcrshiki1

そこから弄って、温度から抵抗値の式を作ってみます。
tcrshiki2

まあ、ドライバーン計算してもつまらんので。
グリセリンを熱することにしてみましょうか。

グリセリンの比熱は、こんな感じ。
gurihinetsu

 参考:http://www.hakko.co.jp/qa/qakit/html/h01030.htm

温度によって比熱は多少変化するようですが、演算式圧縮のため、「20度」の値、「2.39J/gC」を使うことにします。
これは、「グリセリンを1gを1度上げるのに必要な熱量(J)」を表しています。

材料が揃ったら、演算式の組み立て。
まずはテスト。
tcrkeisan1

検算検算、、、うん、、、うまくいってるっぽいです。

さて次に、演算上の「温度管理MOD」を作ります。
・TCR制御
・プリヒートなど無し!
・0.1秒単位制御
・設定温度以下の場合、定格出力
・設定温度以上の場合、プロテクト出力
にしてみました。

そしてアトマイザーの定義。
適宜放熱を入れ込まないと、温度が上がりっぱなしになっちゃうので。
とりあえず乱暴ですが、「1秒あたり設定度温度リニアに下がる」計算で。

んで、シミュレーション条件。
コイルの直列並列で見てみます。
が、特に直列は、「一つのコイルの中で条件が違う」場合にも、当てはまります。
駐訳として、そんな条件を書いてみます。

1.コイルが直列で、お互いに熱関係が独立している
 *デュアルコイル対応のアトマに、シングルでコイル部分が2つあるようなビルドを行った場合とか

2.コイルが直列で、熱関係を共有している
 *クラプトンコイルなど、コイルの太さが変化する場合とか
 *マイクロコイルビルドしようとして、一部隙間空いちゃったりした場合とか

3.コイルが並列

の3パターンで!。

んで、ビルドや電力、使用線材とかのパラメータは、以下の通りな感じで。
使用線材:Ni200 ( TCR:650 )
合成抵抗の目標値:0.1Ω
コイル数:2個
設定出力:20W
プロテクト出力:1W
設定温度:230度
温めるグリセリンの量:0.02g
温度下降係数:100度
温度単位:摂氏 (C)

そして演算の概要:
・それぞれのコイル温度から、それぞれのコイル抵抗値を算出
・コイルの合成抵抗値から、MODが認識している温度を算出
・温度が設定温度以下なら設定出力を、それ以外ならプロテクト出力を行う
・出力と合成抵抗値から、直列時は電流、並列時は電圧を算出
・個別抵抗値と算出した電流/電圧で、それぞれの抵抗に掛かる電力を算出
・電力を単位時間当たりに掛かったとして、それぞれのコイル温度を算出
て感じです。

そんな条件で、計算用のシートを作ってみました。
tcrkeisan2

まず、直列時0.05Ωが2個、並列時0.2Ωが2個、同じ抵抗がある場合のシミュレート結果。
tcrgkintou
横軸が時間、0.1秒単位
縦軸の左側と、明るい色のグラフが温度
縦軸の右側と、暗い色のグラフが電力です。

まあ同一条件になるらしく、これでは直列並列の違いはありませんでした。
それぞれのコイルの温度と、MODが認識している温度が同一なので、温度プロットは見かけ上1本になりました。
 *重なってます。

では次に、直列で。
0.01Ωの差、つまり抵抗1は0.055Ω、抵抗2は0.045Ωにして、プロットしてみました。

直列、互いのコイル温度に相関性が無い場合
tcrgser1

直列、互いのコイル温度に相関性がある場合
tcrgser2

互いのコイルに温度相関性が無い場合、不均衡になると、MODは温度を高めに認識してしまうようです。
互いのコイルに温度相関性が有る場合、コイル温度に差がつくことがわかります。
今回の条件では、プロテクト時で70度、そこから制御が入るに従い、片側上昇、片側下降していきます。
いずれの場合も、抵抗値が高い方が発熱しています。

並列時はどうでしょう。

差が見えづらかったので、抵抗1を0.21Ω、抵抗2を0.19Ω、差を0.02Ωとしてみました。
tcrgpara
直列時と違い、抵抗値が低い方がより発熱しています。
今回の条件では、リニアに変化しており、約30度の幅をもって安定しているように見えます。

次に、直列温度相関なし、抵抗値同一で。
温度下降係数を弄ってみました。
これは例えば、同じコイルの中でも、グリセリン供給量に差が合ったり、空気の当たり具合の差分があったりして。
「冷え方」に差がある場合のシミュレーションになります。
抵抗1を100、抵抗2を90にしてみました。
tcrgserondo
今回の条件では、温度連動時の直列で、抵抗値に変化がある場合と同じく、コイル温度が設定温度から乖離していくように見えます。

さて考察。

そもそも、条件を弄ると。
「並列時はリニア」「直列時は乖離」方向に値が変化していくことが、グラフから読み取れます。
これは何故か?。

オイラは、直列並列の違いと、TCRによる温度/抵抗値係数の変化が関係しているのかな、と考えています。

コイルにかかる電気は。
直列時は電流が等しく、並列時は電圧が等しくなります。
オームの法則は、「電圧=電流x抵抗」、もしくは「電流=電圧÷抵抗」なので。
直列時は抵抗値が高い程高い電圧が、並列時は抵抗値が低い程高い電流が流れます。
で、温度管理用には、温度係数が高い素材をコイルとして使うので。
抵抗に電力を掛ける、つまり発熱させると、抵抗値が上がります。
抵抗値が上がるので、直列時は抵抗値を掛けている為乖離、並列時は抵抗値を割っているため収斂≒リニアになるのではないか、と考えます。

まあ、こんな感じです。

直列時乖離すること、これが温度管理でイマイチ上手くビルド出来ない場合の、原因の一つかも知れません。

シングルビルドでも、
・マイクロにしたつもりで途中スペース
・コイルの隙間が不均一
・ジュースウェルからの供給の遠さが違い
・コイルへの空気の当たり方の違い
などから、一つのコイルの中で条件が変わること、ままあるかと。

そして、一つのコイルの中で条件が変わる。
それは、「直列に別のコイルがある」ことと同一だとオイラは考えます。

で、コイルの温度傾斜が偏り、更にそれがエンハンスされることで、乖離していき、結果
・コイルのごく一部のみが加熱して抵抗値が上がりすぎ、ほとんど煙が出ない
・コイルの一部が激しく発熱し、コゲが発生する

などの現象が起きるのかと。

古典的な要件ではありますが、
・温度管理のコイルは、シングルでスペースド

そして、
・なるべくコイルを取り巻く環境に偏りが出ないような、「中心」 へのビルド

がキホンとして大切なのかな、と。

もちろんエンハンス/乖離をむしろ積極的に使い、複数沸点のあるリキッドを同時に炊いたりするような状況を作り出すことも、勿論アリかと思います。
というか、無意識にやってるんじゃないかな?。
カンタルとTCRコイルで、温度管理しなくても味わいが異なる!、ての、このあたりに要因が有るのかも知れません。

以上、温度管理の挙動について、でした!。 
livedoor プロフィール
電子タバコ関連を、適当にまとめています。
リンクなどご自由に。
各記事の正確性は、イマイチ怪しいです、丸ごと信じちゃいけません!。

連絡などは、Facebookでどうぞです!。
facebook.com/eucalyhome
一応Twitterも始めてみました。
twitter.com/eucalyecig

eucalyptus. [ ゆうかり ].
On eucaly.net


にほんブログ村 健康ブログ 電子たばこへ
にほんブログ村
  • ライブドアブログ