2014年9月28日日曜日

ロウソクランタンとペルチェで発電システムの考案(2)

http://ivis-mynikki.blogspot.jp/2014/09/blog-post.html
の続き。


ペルチェ2枚から今度は4枚平たく2x2マスになるように並べて4V以上の電圧が出ないかテストしてみた。

以下の事を一通りやってみた。
・ペルチェ1枚でどのくらいの電圧がでるか。・ペルチェ2枚を並列・直列に繋いで見てどうへんかするか。
・ペルチェ4枚を直列に繋いで4V以上の電圧がでるのか。

結論からすると、直列にしても並列にしても特性は同じという事を確認できた。
あとペルチェは1つ辺り0.1Wだと思った方がよくて4枚使えば4倍の0.4Wになる。
これが使い物になるのかという疑問に行き着く。

それでも何とかならないか試してわかった事は、
・ペルチェに伝える熱の伝達は良くしておくことは鉄則。
・ペルチェは薄いので、温度差が取りづらい。
・温度差は熱源の温度ではなく均衡状態になったときの温度差がいくらか。

 最初から分かるようなことだけど、温度差を稼ぐ事がいかに難しいかを思い知らされた今日であった。

次回は今回の実験結果をまとめる。


2014年9月26日金曜日

ロウソクランタンとペルチェで発電システムの考案

ロウソクランタンの熱で発電ができないかやってみた結果をまとめておく。

下の写真は今回作ったIntelのCPUヒートシンクにペルチェを2枚直列にくっ付けたもので発電してる様子。


2200mAのリチウムバッテリーも充電しながらスマホも充電できたので熱発電は案外と楽で
このときの発電量は昇圧型のDCDCコンバーター(効率80%)を使って5V100mA、電力にすると0.5W。

スマホを充電するには5V1000mA必要とされてるのであと10倍パワーが欲しくなる。

どう考えても発電量・経済的にソーラーパネルのが効率がよいが
ロマン()を求めてスマホ充電できる所までがんばってみる。

今回の購入品
・ペルチェ2枚
・ヒートシンク
・DCDCコンバーター

合計2500円くらい

わかった事
・ペルチェ1枚辺りの発電量は0.5W
・温度差が60~80度で約1Vで0.5Wが得られる
・温度差100度になればおおよそ0.8W
・発熱<吸熱の関係なら2枚重ね直列は不要
・熱伝対の特性どおり温度差と電圧は比例の関係
・2枚重ねしても発電量は変わらない
・DCDCコンバーターかけてリチウム電池を充電するなら最初から5V電源を作る
・100円均一のロウソク1つはおおよそ3時間で燃焼する
・A3サイズのソーラーパネル80W@8000円のを買えば急速充電ができる(晴天にかぎり)
・1枚@700円で4枚買うと2800円。10000mAのバッテリー1つと同じ値段。
・熱効率だけを考えればスターリングエンジンのがよい。

色々思うところはあるが、次回は4枚並列に並べてDCDCコンバータを使わずに電圧5V得られるようにすること。
理論上は1V500mA*4枚*(100/80)効率=2W*1.25=2.5Wになるので、PCのUSBポートと同じ電力が得られるので、(危ないけど)直接スマホを充電できるところまでがんばってみようと思う。


2014年9月19日金曜日

Reactive Extensions for .NET (Rx) 入門その1

いろんなサイトを見ても良く分からなかく避けていたのですが、
最近になってRxのカケラのようなものが分かってきたのでまとめておきます。
前提知識としてLinQの使い方が分かっていないと理解が難しいと思います。

・Rxについて
 まず、Rxとは何?ですが、
どのサイトでも紹介されているようにIEnumerable「Pull型」の反対がObservable「Push型」にあたります。
何をPush?Pull?かというと、これはデーターフローの事で
与えられた入力データを引っ張る、もしくは押していくかの違いになります。
 ここで出てきたPull型とPush型については以下のとおりです。

・Pull型とは
 ある空間からデータを引っ張ってくる(戻り値で受け取る)イメージです。まさにforeachがそれ。

例: 配列から1つ値を引っ張ってきて処理する。
var query = new List() { 1, 2, 3, 4, 5 }.Select(i => { return i; });
foreach(var i in query)
{
  Console.WriteLine(i); //ひっぱってきた値を処理する。
}

・Push型とは
 得られたデータを左から右へと押していく、一言で言えばメソッドチェーン。
 しかもインターフェイスがObservableが同一であれば自在に操作ができる。

例: 値を左から右へ伝播させて処理する。
var query = Observable.Range(1, 5);
query.Subscribe(i => { Console.WriteLine(i); }); //伝播されてきた値を処理する。

2つは似ていても入力データの処理方法が異なる事が分かったでしょうか。
もう1つ大きな違いは、
Pull型は値を引っ張ってきて同メソッド内で処理を行いますが、
Push型は、Observerがこんな入力データが来ましたよと、(丸投げ)通知するので、実質処理は外側にいるクラスで行います。


入力データにフィルタを書けたり加工したりするのはLinQ機能で実現できるので、
応用処理はどちらも同じくらい広がりますね。

最後に
 データと処理を一箇所にまとめてコンパクトにしたい場合はIEnumerableが得意とされ
 データと処理を分離して、1つのデータで異なる処理をまとめて実行したい場合はObserverbleが得意とされるようです。


次回はもう少し実例を使って違いを見比べてみたいと思います。

Androider