« 2007年1月 | トップページ | 2007年3月 »

2007年2月25日 (日)

音の大きさは距離の二乗に反比例する!?

1983年の夏休み前、中3のときだったが、期末試験が終わってから終業式までの間、休みが数日あって(なぜかそういう休みが存在していた)、その間に全校委員会(生徒会)主催でスポーツ大会をやることになった。A組からC組までクラス対抗での大会だったが、大会前に士気を高めるため、これまたクラス対抗で大声出し大会というのをやった。みんなで大きな声を出して、一番大きな声を出した組にポイントが加算される趣向だった。

組ごとに大声を出したら、A組100デシベル、B組110デシベル、C組100デシベルみたいな結果だった。B組の勝利!と司会が叫びかけた瞬間、化学の教師でもあるS副校長が司会のマイクをとってこう言われた。

音の大きさは距離の二乗に反比例するのであって、測定器を各組の前に動かして測定して欲しい」

もっともな指摘で、私はこの指摘で「音の大きさは距離の二乗に反比例する」ことと、学問を実際に役立てるのはカッコイイということを知った。測定器を動かした結果、数値は接戦となったと記憶している。

でも、腑に落ちなかったのは、距離の二乗に反比例するという割には数値の差は小さく、100と110で1.1倍しか変わっていなかった

で、音の大きさとデシベルの話

点の形をした音源(点音源)から出た音は、点音源を中心とした球面状に広がっていく。球面の面積は半径の二乗に比例するから、球面上の単位面積あたりに到達する音のエネルギーは距離(半径)の二乗に反比例して減少していくことになる。地面による反射などは考えないものとする。

実は、音の大きさを表すデシベル(dB)という単位は、音のエネルギーの対数(log)をとったものである。これは人間の耳の感覚にあわせるためである。かすかに聞こえる音と耳が痛いほどの大きな音は、音のエネルギーで表記すると10桁以上の違いがあるが、それだけ桁の違う数で表記するのは面倒なので、対数をとるわけである。

10デシベル増えると(足し算)、音のエネルギーは10倍になる(かけ算)。

10デシベル減ると(引き算)、音のエネルギーは10分の1になる(割り算)。

なので厳密に言うと「音の大きさ(デシベル)は、距離の対数に比例して減少する(負の比例係数)」となる。

デシベル(dB)の換算は、以下のように単位によって紛らわしいので注意

エネルギー(J)、電力(W)などエネルギーに比例する単位の場合

 10デシベル増えると(足し算)、10倍になる(かけ算)。

 10デシベル減ると(引き算)、10分の1になる(割り算)。

電圧、電流、音圧などの場合(二乗するとエネルギーの次元になる単位の場合)

 20デシベル増えると(足し算)、10倍になる(かけ算)。

 20デシベル減ると(引き算)、10分の1になる(割り算)。

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

2007年2月24日 (土)

最近読んだ新書 『東大脳の作り方』

『東大脳の作り方』(安川佳美著、平凡社新書)を読んだ。著者は現役の東京大学理科3類の学生(今年から3年生となり医学部医学科に進学するらしい)。東京大学は、「世界で一番入るのが難しい大学」であるが、理科3類(医学部進学課程)はその中でもさらに輪をかけて難しい科類(学部)である。他の国公立大学と東大理科1類の間にある難易度の差と、同じくらいの差が、理科3類と理科1類との間にあると言ってもよい。昔は「腐っても理3」、「石を投げれば理1に当たる」などと言っていた。理3はどのようにでもつぶしが利く、理1は数が多い(1学年1000人以上)ことを揶揄したものだ。

この本、東大脳と銘打ってはいるものの、脳の記憶と学習のメカニズム、大脳生理学などの科学的な話が交えてあるわけではなく、著者自身の合格体験記を大学受験期だけでなく、生まれ落ちてからの全生涯にわたって詳しく記述したいわゆる自分史的内容である。タイトル『東大脳の作り方』はおそらく著者自身が考え出したものではなく、売らんかなと考える編集者が考案したものなのだろう。この本の言う『東大脳』は、勉強に対する心構え、学習姿勢のようなものだ。

東大合格体験記として活用するときには、この本の著者が桜蔭高校出身であることに気をつけなければいけない。「高校の授業だけで十分」というような内容をあたかも一般論のように書いているが、これは超進学校である桜蔭高校だから通用する話である。読者は、著者個人の経験を一般化してしまわないように注意しなければならない。

読み進みながら、気になったのが、この著者、医学部医学科に進学するにもかかわらず、「医者になりたいと思った」など医師を志すようになった動機をまったく記していないのである。読み取れるのは理科3類が最難関だから突破したかったという理由のみ。東大医学部だから、将来は医師と言っても病院や開業医などの臨床医になる訳ではなく、大学や研究機関で専門的な医学について研究する研究医になるのであろうが、それでも人を治療したいというモチベーションがなくていいのか気になるところである。

私の雑感としては、理科3類に入れるほど理数系に秀でた才能を持っている人は、ぜひ東大理科1類や京大理学部あたりに入って、物理学者などの科学者を志して欲しい。現状では、歴史に残る世界的な物理学者は外国人がほとんどであるが、傑出した科学者がそういうところから出てくるのではないかと思う。もちろん医学部を出て医師免許をとった上で、免疫学、分子生物学など医科学関係の研究者になることも可能で、医師免許がないと行えない実験もあるから、研究者として活躍できないわけではない。ただ、私の個人的な感覚では、そういった医科学の研究分野では、物理、数学などの分野に比べ、天才的な才能が生かせる場が少ない気がする。

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

2007年2月18日 (日)

パソコンで測定装置を制御して自動計測する

試料の質量変化を1分毎に24時間連続測定したい場合とか、あるいは電圧変化を10秒毎に24時間連続計測したい場合、人がストップウォッチを見ながら、一回一回実験ノートに記録するのでは、費やす労力が余りにも大きすぎる。PCがこれだけ普及した現在、人手で記録していたのでは非効率的、前近代的である。

このような場合はPCと測定装置を接続した上で、PCで測定機器を制御し、データを自動的にPCに取り込むのが一般的だ。

測定装置とPCの接続にはRS-232C(シリアル)ケーブルか、GP-IBケーブル(HP-IB、IEEE488とも言う)を使用するのが一般的である。当然ながら、測定装置はそれぞれの仕様に対応していることが必要で、パソコン側に対応する端子がない場合は変換コネクタ(ケーブル)が必要になる。

■ 昔はNEC98シリーズでN88BASICでプログラミングしたが・・・

私は1991年頃、修士課程の大学院生のとき、NEC製PC-9801 RX21(当時NECの98シリーズが圧倒的なシェアを誇っていた)に、GP-IBボードを装着し、GP-IBケーブルを通して、デジタルマルチメータHP3478Aを制御して、電圧値、抵抗値などを一定時間おきに自動測定したのが最初の経験である。MS-DOS上で動作するN88BASICとGPIB.EXEを用いて、比較的容易にプログラムを組んだ。プログラム自体は一定時間おきに装置から数値を取得するというごく簡単なものだったが、実験の労力は格段に軽減した。人がつきっきりでデータを記録するのに比べれば楽なのは、当たり前である。せいぜい1秒おきにデータを取得するのなら、この頃(1990年代前半)のPCの性能で十分なのである。

その後、Windows 95が登場し、Windows 98、Windows XPとOSが進化を遂げるにつれ、プログラムの仕方が複雑になり、わけがわからなくなってしまったので、キャッチアップするのをあきらめ、この間、ずっと、ついこの間まで、90年代前半のNECの98シリーズを使って、N88BASICで組んだプログラムを活用してきていた。(「いまどきN88BASICでGP-IBボードを通じて計測器を制御する方法」参照

一度、Windows 95上のプログラミングに挑戦しようと思い立ち、ADコンバータを装着したPC(100 kHzデジタルオシロスコープとして使っていた)を、Visual C++でプログラミングし直してFFTアナライザに改造したことがあった。しかし、その余りの煩雑さにもう二度とWindowsプログラミングは嫌だと思うようになった。プログラミングを本業とするのではなく、化学研究などの傍らにプログラミングを行うなら、Visual C++でなく、Visual Basic、Excel上のVBA、場合によっては普通のC言語、FORTRANをお勧めする。N88BASICが得意という30代以降の方(そうとも限らない?)なら、後で述べるWindows上で動くN88BASICのエミュレータを使うのもいいと思う。

そんなこんなで、我が研究室では、それほど高速を必要としない秒単位の自動測定にはずっと昔のNEC 9800シリーズを使ってきたのであるが、PCには寿命があり、さすがに15年も使うと壊れてしまった。はてどうしたものかと困ってしまい、完全動作する中古品を買うことも考えたが、この際、最新のWindows XPのPCでプログラムを組んで、自動測定することを思い立った。Windows XPレベルになると、市販、あるいは付属の自動測定プログラムを使ったり、プロに外注したりすることも多いようだが、以下のノウハウで、昔と同じように比較的楽にプログラムできるようになった。以下はその記録ノート。似たような境遇の人は多いと思う。

■ Windows XPでRS-232C(シリアル)ケーブルで自動測定する方法

次の1)~4)の方法がある

1) ExcelのVBA(マクロ)から、Win32のAPI関数を呼び出す・・煩雑なプログラムになる。相当勉強しないとプログラミングは面倒。プログラミング例として、Egawa氏の「Excel VBAによるOMRの制御」

2) ExcelのVBA(マクロ)で、フリーツールのEasyCommを利用する・・・1)に書いた煩雑な部分がモジュール化してあるフリーツールがEasyComm(木下隆氏作成)。これを使うとVBAプログラミングがかなり楽になる。EasyCommの説明やダウンロードについてはhttp://www.activecell.jp/参照。

3) N88BASICのエミュレータ(Windows XP上で動くN88BASIC)を使う・・N88BASICのプログラム資産がそのまま活用できる。N88BASICを知らない方はあえて勉強する必要はなく、2)でやればよいと思う。Windows 95以降で動くものが潮田康夫氏からフリーで提供されている。ダウンロードはこちらから。このエミュレータでは、メニューバーからRS-232Cの設定ができるが、COM1からCOM4までしか指定できないようである(RS-232CポートがCOM9になったときは使えない)。また、RS-232Cは使用できるが、GP-IBはカバーしていない。

4) Visual Basic (VBAとは異なる)でMSCommコントロール(Active Xの一つ)を使う・・MS Excelとは別にVisual Basicを購入する必要がある。Visual Basicのプログラムが書ける人なら簡単に作れる。プログラム中に、mscPort.CommPort = 1(通信ポートPC側をCOM1に設定)、mscPort.Settings="9600,n,8,1"(通信速度9600bps、8ビットデータパリティなし、ストップビットが1ビットと設定)などと記す。詳しくは金藤仁著『自動計測システムのためのVisual Basic 2005入門』(技術評論社) amazonへリンクなどを参照。

私自身、経験があるのは2)と3)であるが、お勧めは2)。以下には2)と3)について詳しく記す。

■ RS-232Cを使うときに共通する注意事項

1) ケーブルタイプに注意・・・RS-232Cケーブルにはノーマルタイプとリバースタイプ(クロスタイプともいう)がある。これらは結線が違うのだが、外観は同じ。これを間違うと絶対動かない。通常、PCと測定装置を接続するケーブルはノーマルタイプだが(例えばエーアンドデイ社の電子天秤HX-400はノーマルタイプ)、アジレント社のデジタルマルチメータHP34401Aはなぜかリバースタイプのケーブルを使うことになっている。私は当初これを間違え、かなり苦労した。装置側のマニュアルを熟読すべきである。

2) 通信設定をPCと装置で一致させる・・・通信速度(Baud Rate)、データ長、パリティの有無を正しく設定する。これを間違うとうんともすんとも言わない。エラーメッセージさえ出てくれないので、非常にストレスがたまる。例えば、装置側の通信速度が2400bps、データ長とパリティが7ビット偶数パリティに設定されていれば、PC側の設定(プログラム中での指定とコントロールパネル→システム→デバイスマネージャのポート設定の両方)もそう指定する。

3) RS-232Cポート(シリアルポート)のないPCの場合・・・COM1、COM2だとか|○|○|と書いてあり、9本のピンが出ているポートがRS-232Cポートである。最近、RS-232CポートのないPCが増えているようだ。そのような場合はUSB-RS232C(シリアル)コンバータをUSBポートに差して、RS-232Cケーブルを接続する。この場合、コントロールパネル→システム→デバイスマネージャのポート設定を見て、COMいくつになっているかを確認すること。私がデスクトップPCでこれをやったときはCOM9になっていた。

4) 待ち時間をプログラムに入れる・・・PCの性能がよくなり過ぎたということだと思う。データを送れとPCから測定装置に命令を送ってから、装置が反応して、実際に装置がデータを送ってくるまで(PCの処理速度に比べると)かなり時間がかかる。データを送れの命令を送った直後に、データを取り込む命令をプログラムすると、データを取り込んでくれない場合がほとんどである。「データを送れ」の信号とデータを取り込む命令の間に、For I = 1 to 10000 : Next I のように待ち時間を入れて、PC側の処理を遅らせる必要がある。

■ 実際にPCから電子天秤を制御してみる

以下は東芝ノートPCダイナブック(T4/495CME2、OSはWindows XP)にエーアンドデイ社製の電子天秤HX400を接続して、自動測定するシステムを作ったときの記録メモ。

1) ストレートタイプのRS232Cケーブル(D-SUB9ピンメス+D-SUB25ピンオス)で、ノートPCと電子天秤を接続。

2) PCでコントロールパネル→システム→ハードウェア→デバイスマネージャ。COMあるいはポートと書いてあるところを探し、COMの番号を確認する。我々の例ではCOM1だった。さらにCOMをクリックして、2400bps、7ビット、偶数パリティに設定する(電子天秤HX400の設定と合わせる)。

3) EasyComm(http://www.activecell.jp/参照)をダウンロード。EasyCommのマニュアルに従って、Visual Basic Editorのメニューバーにある「ファイルのインポート」で、ec.basとecDef.basの二つをインポートする。(Visual Basic Editorは、Excelのメニューバーで、[表示]→ツールバー→Visual Basicでアイコンを表示し、左から4番目のアイコンをクリックして立ち上げる)

4) Visual Basic Editorにプログラムを入力し、実行する。下記のプログラムで10秒毎に電子天秤からデータをExcelのワークシート上に取り込める。

Public Sub HX400()
ec.COMn = 1           'COM1を開く
ec.Setting = "2400,e,7,1"
ec.HandShaking = ec.HANDSHAKEs.RTSCTS
ec.Delimiter = "CRLF"
n = 10   '測定回数
For i = 0 To n - 1
  ec.AsciiLine = "SI" 'コマンド 指示値を送れ
  a$ = ec.AsciiLine   '天秤の指示値をa$に取り込む
    Cells(i, 1) = Right(Now(), 8) '時刻を1列目のセルに記録
    Cells(i, 2) = i
    Cells(i, 3) = Mid(a$, 4, 9)   '指示値を3列目のセルに記録
    Cells(i, 4) = Left(a$, 2)     '天秤からの情報を記録
  Application.Wait Now() + TimeValue("00:00:10") '10秒待つ
Next i
End Sub

プログラム中のSIなどのコマンドは、電子天秤側で決まっているコマンド。装置側のマニュアルを参照する。電子天秤から送られてくるデータのうち、4文字目から12文字目までが、重量を表す数字なので、Midなどの関数を使用して取り出してある。

※ 富士通DESKPOWER(C9/160WLT)などのようにシリアルポートのない場合は、USB-SERIAL CONVERTERをUSBポートに挿入し、インストール後、使用することになる。その場合、2)にあるデバイスマネージャでCOMの番号をチェックすること。

※※ コンピュータ関係で勤務する知人に話したところ、RS232Cなんてレガシーなものをまだ使ってるんですねと言われてしまったが(レガシー=過去の遺物)、PCやOSがどんどん進歩する一方で、装置側のインターフェースがほとんど進歩していないのでやむを得ないと思われる。

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

2007年2月12日 (月)

モノを温めるのに最低限、必要なエネルギー

ここでは、モノを温めるのに最低限、必要なエネルギーを熱力学的に計算して、速度と効率は両立しないという経験的な法則を考察する。(注 一般に、よく誤解されるが、ここでいう「効率」とはスピードの意味ではなく、有効活用できるエネルギーの割合の意味)

■ 電気ストーブとエアコン

単純な例で考える。1000W(ワット)の電力を消費する電気ストーブと、同じく1000Wの電力を消費するエアコンとでは、どちらの暖房能力が優れているか?

答えはエアコンである。電気ストーブは1000Wの電力を消費して、約1000Wの熱しか放出しないが、エアコンでは1000Wの電力を消費して、約3000W以上の熱を発生させることが可能である。これについてエネルギー保存則に反すると思う人がもしいたら、熱力学第1法則だけ知ってて、熱力学第2法則を勉強していない人であろう。暖房エアコンは、電力を使って、部屋の外から中へ熱を移動させる装置であり、約1000Wの電力を使うと、部屋の中に約3000Wの熱を得ることができる。外気温によって、効率が違ってくるが、だいたい消費電力の約3~5倍の熱をゲットできるようだ。

このように熱を移動させる装置をヒートポンプと呼ぶ。電熱線を使うヒーターより暖房効率が格段によく、内と外を逆転させれば冷房もできる。そもそも電気ストーブは火力発電、原子力発電で熱をせっかく電力に変換したのに、それを再び電力から熱に戻してしまうわけなので、暖房器具の中でも最もムダが多いものである。ちなみに電力会社がさかんに宣伝している「エコキュート」は、深夜電力を使って、ヒートポンプを動かす仕組みで、効率面では優秀である。しかし、余談だが、エコキュートでの室内暖房は、深夜電力で暖めた蓄熱体で暖房するため、暑くなったときでもOFFできないらしい。

■ ヒートポンプでお風呂を沸かす

ヒートポンプの存在を踏まえた上で次の問題を考える。

20℃の水200リットルを、40℃のお湯に変えるために最低限必要なエネルギーはいくらか?

まず、ガスや灯油を燃焼させて、加熱した場合は単純に計算できる。実際には熱が一部逃げたりするが、ここではそれは考えず、燃焼熱がすべて水の昇温に用いられたとする。1カロリーの熱で水1グラムが1℃上昇するので、

200×1000×(40-20)=4000000 cal (カロリー)

                 =4000 kcal(キロカロリー)

あればよい。SI単位に直せば、4000×4.2=16800 kJ(キロジュール)

次に本題だが、ヒートポンプを使って沸かせばどうなるか?上のエアコンの例から考えれば、これの3分の1から5分の1のエネルギーで済む。だけど実際には、ヒートポンプで、お風呂を沸かすことはあまり現実的には行われていない。理由は単純で、時間がかかるからである。最近、ヒートポンプで給湯する「エコキュート」が実用化されているが、お湯を沸かすのに時間がかかるため、沸かしたお湯を貯めておく仕組みになっている。ヒートポンプでは、瞬間湯沸かし器並みの速度は、期待できないのである。効率を上げようとすると、速度が犠牲になる代表例。速度と効率は両立しないのだ

■ より理想的なヒートポンプを考える

今、実際に使われているエアコンは効率がいいけれども、それをもっと効率良くすることもできる。例えば、暖房温度を25℃に設定した場合、エアコンの送風口から出てくる風の温度は25℃ではなく、約50℃前後である。風の温度が50℃なら、エアコン内部で、風を暖める熱交換器はそれ以上の温度になっている。25℃に設定したときに、50℃の風が出るのは部屋を早く暖めるためだが、熱が逃げなければ25℃の風が出ればよいのである。ただし熱が逃げないと仮定しても、部屋が25℃になるまではだいぶ時間がかかるだろう。速度は落ちることになるが、ヒートポンプの効率は25℃の風を出したときの方が良くなる。

エアコンなどヒートポンプの内部には作動流体が流れている。昔はフロンガスが使われていたところだ。これが低温側(部屋の外)で熱を吸収して、高温側(部屋の中)で熱を放出する。ヒートポンプの効率は作動流体の高温側の温度と低温側の温度で決まる。カルノーサイクルを使った仮想的なプロセスが最も効率がよいので、それを考えることにする。そのとき、高温側の絶対温度をTH、低温側の絶対温度をTL、消費電力(仕事)をW、高温側で発生する熱をQとすると

 W/Q = (TH-TL)/TH

の関係が成立する。50℃の風を出すときは25℃よりもTHが大きくなるため、W/Qが大きくなり、消費電力が増える。

■ ヒートポンプを使うと理論上、従来の3%のエネルギーで温められる

では、お風呂に話を戻して、20℃の水を40℃のお湯にすることを考える。上の式のTHの313K、TLに293Kを代入すると

W/Q=(313-293)/313

    =0.0639=6.4%

つまり、ガスを使った場合の6.4%のエネルギーで、水をお湯にできることになる

実はこれが最も理想的な最高効率の数字ではない。もう一段階掘り下げて考えると、さらに効率がアップする。

上の6.4%の計算では、作動流体の高温側の温度が、はじめから最後まで40℃で一定に設定していた。しかし、水がまだ20℃のときに40℃の作動流体を接触させる必要ないのである。水が20℃のときには作動流体を21℃にしておき、それで暖め、水が21℃に暖まったら、今度は作動流体を22℃にして暖める。水が22℃になったら、今度は23℃の作動流体で・・・という風に、細かくヒートポンプ高温側の設定温度を上げていき、最終的に40℃にすることを考えればよい。ここでは、わかりやすいように1℃ずつ設定温度を上げると書いたが、厳密には水よりも微小に高い温度(ΔT だけ高い温度)を作動流体の高温側の温度にして、徐々に昇温させ、そのプロセスを積分して考える、と説明するのが正しい。

上式のTLに293Kを代入して、THは変数のまま、TH=293Kから313Kまで積分することになる。

  ∫(T-293)/T dT   ※ ∫の上に313、下に293を書く

  =[ T-293 ln T ]   ※ ]の上に313、下に293を書く

  =0.653

これを積分した温度幅(313-293=20K)で割ったものが、W/Qとなる。

  0.653/20=0.033=3.3%

20℃のものを40℃にするとき、理想的なヒートポンプを使うと、従来の約3%のエネルギーで済む、すなわち30倍以上効率がよくなることを示している。

ただし、このようなヒートポンプを使うことは非現実的で、速度が遅すぎて役に立たない。この場合だと速度が熱のロスに追いつかないであろう。

速度とエネルギー効率は両立しない、トレードオフの関係にある、というのことは、熱力学第何法則というように、ソフィスティケートされた法則ではないが、経験的には確かな「法則」である。

以上は、昭和の終わりの頃、現東大総長の小宮山宏先生が助教授のときに担当されていた「移動速度論」の講義で伺った話をヒントにしたもの。先生は、講義時間の都合からか、3.3%で済むという数字だけを引用されていたが、その理屈は上記のようなものであると思う。当時、「エコキュート」はまだ世に出てなかったから、給湯にヒートポンプを使うという発想は実用化されていなかった。

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

« 2007年1月 | トップページ | 2007年3月 »