HOME > 技術談話 > PIC® microcontroller > 気圧センサSCP1000(試食)
はじめに モジュール ブレッドボード作成例 回路図例 モニタ例 サンプルプログラム
気圧センサの概要 センサとの通信 センサの運用 プログラム構成 実行状況
測ってみた まとめ
気圧センサSCP1000-D01が基板モジュールで入手できるようになりました。 ・秋月電子通商様 通販コード M-03468 気圧センサー SCP1000-D01モジュール 1800円 1月末新製品登録時点 これまで気圧測定する部品はあれど、 ・配線が困難 … 部品単品はリードが出ていない(裏返して実装するか、胴上げするか…) ・価格が高い … 部品単品で2000円オーバー、モジュールは5000円オーバー 等々、個人ユーザーには敷居が高い代物でした。 今回発売された気圧センサモジュールはモジュール化されただけでなく価格が大幅に下がりました。 これを機会に。と思っている人も多いのではないでしょうか? どんな感じで制御して、どんな情報が得られるのか…試食してみました。 注意事項 SCP1000-D01はVTIテクノロジー社の製品です。 テキスト表示LCDと組み合わせてみました → 気圧センサとテキスト表示LCD 2010.06.07より 簡易グラフ描画版を作ってみました → 気圧センサとテキスト表示LCDでグラフ描画(冒険) 2010.07.08より |
▲ |
購入したセンサは除湿剤入りのパックに入っていました。 気圧センサーは既にハンダ付けされています。基板下に8pinDIP型ピンコネクタが接続されているので、ブレッドボードにそのまま差し込むことができます。 写真は2.54mmユニバーサル基板に載せた状態です。おおよその全体サイズを確認できると思います。 |
▲ |
これまでのサンプルに準ずるわけではありませんが、PIC12F683とセンサモジュールを接続して実験を行いました。少ピンマイコンなので電源以外の6ピンを総て使用しました。PIC12F683にはシリアル通信、SPI通信の機能が無いのでポート制御で代用しています。 センサモジュールから得られた情報はシリアル通信で外部(青いワイヤ)に出力しています。この信号をレベル変換してパソコン側でモニタします。 電源は3Vの安定化電源を使用しています。 |
▲ |
今回はポートが不足したのでリセット用の端子(GP3/_MCLR)を入力ポートに割り付けています。 センサがモジュール化されているのでPIC12F683以外のマイコンでも容易に接続することができます。 なお、センサモジュールの動作電圧は最大3.6Vなのでマイコン側の電圧が5V系の場合はレベル変換が必要です。 |
TXDは通信速度9600bps相当の調歩同期式シリアル通信で使用します RS232Cを利用してパソコンに直結するのであれば以下のインタフェースICが利用できます。電源電圧が3.3V~5Vまでと範囲が広いのが特徴です。どれも秋月電子通商様で取り扱っています。データシート、必要な外付け部品も添付されるので、回路例の通りに作成すればまず動作します。そうそう、DSUBコネクタも(ry |
通販コード | 型番 | 金額 | 備考 | |
I-00198 | SP23232ECP | @250 | コンデンサ、ソケット付き、送信2ch、受信2ch、Max230Kbps | |
I-00469 | ADM3202AN | @200 | コンデンサ、ソケット付き、送信2ch、受信2ch、Max460Kbps | |
I-03030 | ADM3202AN | @300 | 上記I-00469と同じ構成で2個入り(コスト的にはこれがベター) |
RS232Cは枯れたインタフェース(?)ですが扱いは非常に簡単です。最近のパソコンにはインタフェースコネクタが無い場合もありますが「USB-シリアル変換器」を接続すれば利用することができます。 今回利用したマイコンにはシリアル通信用の機能が備わっていません。が、扱いが簡単ゆえ、出力ポートを時間を区切って制御することで疑似的にシリアル通信を実現することができます。必要であればマイコンを動作しつつ内部情報をパソコンで表示することもできるので、今回の実験とは別に「RS232Cレベル変換器」を1台作成しておくと何かと便利です。 |
▲ |
通信アプリケーションを利用してモニタしました。温度は別として気圧の値が正しいか否かは微妙(?)です。 公式発表される気圧は観測地点の標高と気温を利用し、海面校正された値になるので単純比較はできません。 別途アプリケーションが必要ですが、今回は試食レベルなので単純数値化までです。 センサから気圧だけでなく温度を得られますが、あくまでもセンサデバイス内部の温度です。 厳密に言えば得られる温度は周囲の気温と異なりますが、近似値として利用できると思います。 |
より詳細な数字を表示しようとしましたが…今回はデバッグ処理を含めたプログラム容量の関係で簡易演算だけで済ませました。センサモジュールの電源電圧のこともあるので、専用の小型マイコンを間に挟み、より高度なアプリケーションは別のマイコンに行わせる方法もあります。電源電圧と実数演算…これが課題です。 現在地の気圧と気温、そして標高から海面校正する便利なページ … 海面気圧への校正計算 注意:新しいページでカシオ計算機株式会社殿のページが開きます。 |
▲ |
PIC12F683を利用したサンプルプログラムを公開します → TestPress0100.zip 開発環境は MPLAB IDE V8.40 と HI-TECH C V9.70 を利用しています(開発環境の準備)。 物理量計算で手抜きをしていますがご容赦。 今回のサンプルプログラムではモジュール分割を行っています。 |
・main.c | … 全体を制御します。センサからデータを取得し文字列に成形して送信します。 | |
・press.c | … 圧力センサを制御します。 | |
・device.c | … 開発環境、デバイスに依存した部位を集約しています。 |
PIC12F683はSPI通信、シリアル通信機能がないので総てポート制御で代用しています。極論ですが「device.c」をカスタマイズすればマイコンの種類を問わず利用することができます。またSPI通信やシリアル通信をマイコンが備える機能に置き換えることでプログラム容量を小さく、また高速に制御することができます。 HI-TECH C v9.70 で作成されたプログラムを v9.81 以降のコンパイラで再コンパイルする際の注意点 → 開発環境による修正 2011/03/09 |
版数 | 変更内容 | |
0100-2010/02/04 | ・初版作成 | |
・開発環境を追記(2010/04/13) | ||
▲ |
(1)測定対象 気圧センサは気圧は30kPa~120kPaまで、温度は-20℃から+70℃までを測定範囲としています。測定データは補正済みの物理量が取得できるので、取得した値に対して特別な演算を加える必要がありません。(海面校正を除く)。 そうそう、天気予報で目にする気圧の値「hPa(ヘクトパスカル)」は「100Pa=1hPa」です。 |
(2)測定モード 用途に応じて測定モードを選択することができます。 |
測定モード | 測定タイミング | 備考 | |
高精度 | 定周期 Typ1.8Hz | 気圧17bit(データ19bit)、温度14bit(データ14bit)、25uA | |
高速 | 定周期 Typ9.0Hz | 気圧15bit(データ19bit)、温度14bit(データ14bit)、25uA | |
超低消費電力 | 定周期 Typ1.0Hz | 気圧15bit(データ19bit)、温度14bit(データ14bit)、3.5uA | |
低消費電力 | トリガ入力ごと | 気圧15or17bit(データ19bit)、温度14bit(データ14bit)、1~25uA |
(3)その他の特徴 特別な仕様はありませんが、機能面で列挙してみます。 |
項目 | 説明 | |
電源電圧 | 2.4V~3.3V | |
発振回路 | デバイスに内蔵 | |
不揮発性メモリ | デバイスに内蔵(キャリブレーション用) | |
インタフェース | SPIインタフェース | |
リセットコマンド | あり |
(4)気になること ところで… デバイスメーカはVTIテクノロジー社。最新データシートを入手すべくアクセス…。ん?製品見つからない。 データシートはこちら … 海外本家 2010/06/23加筆。VTIテクノロジーさん、ありがとうございます。 とりあえずデータシートは秋月電子様のページからダウンロードできるので、そちらを利用してください(2/10現在)。 ここにサンプルプログラムも掲載されていますが…開発言語が異なっていたので(ry |
▲ |
(1)信号線 … 基板モジュールを基準にしています SCP1000-D01はSPI通信で制御します。一般的な通信方式なのでマイコンによっては内蔵SPIコントローラにより容易に通信することができます。なお、今回利用したマイコンPIC12F683はSPIコントローラがありません。そのような場合は汎用入出力ポートを利用して制御します。 |
シンボル | 方向 | 説明 | 備考 | |
TRIG | uP > SCP | 測定起動、未使用時はGNDに接続 | 任意 | |
DRDY | uP < SCP | 測定完了、ActiveHigh、気圧データ取得で自動的にLow | 任意 | |
CSB | uP > SCP | チップセレクト、ActiveLow | 必須 | |
SCK | uP > SCP | 同期クロック | 必須 | |
MOSI | uP > SCP | センサへのシリアルデータ、データセットしてSCKをHigh&Low | 必須 | |
MISO | uP < SCP | センサからのシリアルデータ、データリードしてSCKをHigh&Low | 必須 |
TRIG信号はセンサのレジスタを書き換えることで代用することができます。 DRDY信号はセンサからステータスを読み出すことで代用することができます(注:ポーリングによる負荷増)。 CSB信号のActive論理は他のSPI通信をサポートするデバイスと異なる場合があるので注意してください。 別型番でSCP1000-D11があります。こちらはTWI通信と呼ばれるIIC通信に「似た」方式で通信を行います。 |
(2)信号線の制御 絵は簡単に描いています。基本はデータシートに記述されているタイミングチャートを参照してください。 |
緑色の網掛けの部分はタイミングチャートから読み取ったデータ処理推奨期間です(個人的な見解)。 いわゆるSPI通信の形式ですが、マイコン内蔵のSPI通信用コントローラを使用する場合はデータの変化タイミングに注意してください。信号線をポートで制御する場合、4Mhz相当の動作周波数であれば速度については問題ないと思いますが、信号の切り替わりとデータの変化のタイミングだけはしっかり押さえる必要があります。 気になる場所は「tHOL」。マイコン側のデータ保持期間になりますがMin20nsとありました。「絵」としてはクロックの立下りの後ろで変化させてますが「tCH」がMin100nsであることから、センサ側はクロックの立ち上がりでデータ(MOSI)を読み出しているようです。 もう1つ気になる場所は「tVAL2」でしょうか。クロック(SCK)の立下りから次のデータに変化するまでの時間がTyp50nsです。センサからのデータ(MISO)はクロックの立ち下がり前に読み出す方が無難です。今回のサンプルプログラムではクロックの立ち上がり前に読み出しを行いましたが、クロックの立ち上がり後に読み出した方が良かったかな?書き込みと読み出しのタイミングを合わせたかっただけですが…。 |
(3)レジスタ 代表的なレジスタを掲載します。各レジスタ(未掲載含む)の詳細についてはデータシートを確認願います。 |
レジスタ | コード | 機能 | モード | データ部 | |
RECVID | 0x00 | リビジョン番号 | R | 8bit | |
OPERATION | 0x03 | オペレーションレジスタ | R/W | 8bit | |
OPSTATUS | 0x04 | オペレーションステータス | R | 8bit | |
RSTR | 0x06 | ソフトウェアリセット | W | 8bit | |
STATUS | 0x07 | ステータス | R | 8bit | |
DATARD8 | 0x1F | 気圧データの上位8ビット | R | 8bit | |
DATARD16 | 0x20 | 気圧データの下位16ビット | R | 16bit | |
TEMPOUT | 0x21 | 温度データ | R | 16bit |
センサからデータを取得する際は、 ・TEMPOUTレジスタから温度データを取得 … 任意 ・DATARD8レジスタから気圧データの上位8ビットを取得 … 必須 ・DATARD16レジスタから気圧データの下位16ビットを取得 … 必須 の順で行います。 センサは測定完了をDRDY信号で通知します。このタイミングでマイコンは各データを取得しますが、何らかの要因でマイコン側が気圧データを取得せずに次の測定完了が発生した場合はリアルタイムエラーが発生します。 リアルタイムエラーはSTATUSレジスタにより知ることができますが、その直前で読み出した気圧データの値は信頼性が低いことが予想されるので扱いには注意してください(上位データと下位データの時間的な不一致)。 リアルタイムエラーの解除はDATARD16レジスタのデータをダミーリードすることで行います。 |
(4)レジスタ指定とデータ マイコン側がマスタでセンサ側がスレーブです(例外無し)。 マスタはレジスタアドレスを送信し、続けてデータの送信、データの受信を行います。各データは8ビットの倍数です。 |
図中では表現していませんが、データはクロック(SCK)に合わせてMSBから1ビットずつ順番に指定します。 チップセレクト信号(CSB)は通信を開始する前にLowとし、通信中はLowを維持します。通信終了後Highに戻します。 センサからデータを読み出す場合、コマンド送信完了からデータの受信までの間で待機は不要です。 |
(5)データの意味 気圧データはDATARD8(MSB側)、DATARD16(LSB側)と呼ばれる2つのレジスタから取得し、得られたデータを結合して1つの気圧データとして扱います。1ビットの重みは0.25Paです。 |
任意の値(DATARD8の上位ビットをクリアした状態)から物理的な気圧(Pa)の値を求める場合は、 Pa = Value * 0.25 = Value / 4 で得ることができます。なお、整数演算では小数点以下の切り捨てが生じるので注意してください。 気象で用いられる気圧(hPa)を求める場合は更に100で割る(1hPa = 100Pa)必要があるので、最初の演算で得られる小数点以下はあまり気にしなくても良いと思います(どこかの桁で四捨五入を行う必要はあるかもしれませんが)。 数値表現上の最大値は0x7FFFFになります。これは131071.75Pa(=1310.7175hPa)に相当します。ですがセンサの性能は30Kpa~120Kpaなので、元の数値を予め範囲チェック(0x1D4C0~0x75300)してセンサエラー処理を作成しておくと何かと便利かもしれません。 温度データはTEMPOUTレジスタから取得します。1ビットの重みは0.05度です。 |
データには符号が付いているので、14ビットの符号付き整数として扱う必要があります(マイナスは2の補数表現)。 任意の値(上位2ビットが符号拡張されている状態)から物理的な温度(度)の値を求める場合は、 度 = Value * 0.05 = Value / 20 で得ることができます。なお、整数演算では小数点以下の切り捨てが生じるので注意してください。 数値表現上の最大値は0x3FFFですが、符号付きなので 0x2000~0~0x1FFF が値の取りうる範囲です。この値を十進数に置き換えると -409.6度~+409.55度 になります。センサの性能は -20度~+70度 なので、元の数値を予め範囲チェックして…気圧データの場合と同じですね 気圧データ、温度データ共に測定限界点は幅を持っていると思われますが、何分にも実験環境がないので確認できません。特に気圧関係は設備が必要…。数値上は有効範囲の1割増しでチェックしておけば良いと思われます。 ステータス系のデータはビット単位で意味を持ちます。ビットの割り付けについてはデータシートを参照願います。 |
▲ |
(1)はじめに センサの運用はデータシートに記載されている通りなのですが、気になる個所だけピックアップしてみます。 |
(2)初期設定 センサ電源投入時、RSTRレジスタへASICリセット書き込み後、マイコンはセンサの起動完了を待機します。 起動完了状態はセンサからステータスを読み出すことにより判断します。 |
STATUSレジスタを繰り返し読み出す代わりに90msの待機で代用することができます。 診断内容はうまくできていて LSB=0 と LSB=1 をチェックしています。そうです。センサと接続する信号線のチェックを行うことができます。ということは、エラーが検出されたからといってセンサ異常と判断するのではなく、配線異常と判断する必要もありそうです。 DATARD8レジスタの内容は気圧データ(MSB)と兼用されていますが、EEPROMの「チェックサム計算結果」と気圧データが切り替わるタイミングがデータシートからは読み取ることができませんでした。少なくとも、センサ電源投入時はEEPROMのチェックサム結果を示すようです。 そこでふと考えます。例えば、気圧測定中にマイコン側だけが何らかの要因でリセットした場合はDATARD8レジスタの内容は何を示すのでしょうか?先行してチェックされるSTATUSレジスタのLSBはスタートアップ実行中か否かを示すレジスタなので少なくともスタートアップ停止、すなわち LSB=0 になっているので診断を通過します。そして気圧データの値(1000hPaならLSB=0のはず)によってはEEPROMチェックサムエラーを示す LSB=0 となる場合があるのではないでしょうか? 今回公開したサンプルプログラムではマイコン側から積極的にセンサを初期設定することで問題回避(?)してます。 |
(3)測定モード設定 OPERATIONレジスタに測定モードを書き込むことでセンサは直ちに測定動作を開始します。 |
測定モード | 値 | 測定タイミング | 備考 | |
高速 | 0x09 | 定周期 Typ9.0Hz | ||
高精度 | 0x0A | 定周期 Typ1.8Hz | ||
超低消費電力 | 0x0B | 定周期 Typ1.0Hz | ||
低消費電力 | 0x0C | トリガ入力 | 外部信号、もしくは当該データで測定実施 | |
測定停止 | 0x00 | スタンバイモード移行 |
低消費電力モードでは測定開始前に気圧データの分解能を指定することができます。この場合、CFGレジスタ(間接アクセスのみ)の値を変更する必要がありますが、指定しない場合の初期値は高解像度(17bitと称しています)です。 現在測定中の場合は測定を停止してから新たな測定モードを指定することが必要です。 ソフトウェアの流れ、もしくは現在の測定モードをOPERATIONレジスタから読み出して判断することもできますが、 ・OPERATIONレジスタで測定停止を指示。 ・OPSTATUSレジスタで測定が停止していることを確認。 ・OPERATIONレジスタに新たな測定モードを指定。 面倒な場合は、これですっきりします。 |
(4)測定データ取得 センサは測定完了後、DRDY信号をHighに切り替えます。この時STATUSレジスタのDRDYビットも連動して 1 になります。マイコンはDRDYがHighであることを確認してから測定データを取得します。 |
測定完了を示すDRDY信号はDATARD16レジスタの読み出しで Low に戻ります。 上図は定周期測定モードの例です。低消費電力モードではトリガを指定しない限りは測定が開始されませんが、測定が開始されれば上図と同様のデータ取得を行行います。続く測定の開始は、もちろんトリガの指定が必要です。 DRDY信号の代わりにSTATUSレジスタのDRDYビットを確認する方法もありますが、ポーリングによるマイコン側の処理能力の低下を招く恐れがあるので勧められません(リアルタイムエラーを誘発する)。なお、低消費電力モードの様な意識して測定開始(かつ、連続測定でない)を行うのであれば利用するメリットはあるかもしれません。 |
▲ |
(1)はじめに サンプルプログラムの構成を「ざっくり」解説します。 プログラムのステップ数は多くないので、プログラムを見た方が分かりやすいかもしれません。 |
(2)概略フローチャート 初期設定完了後、測定完了を待ち、データを取得して表示を繰り返す構造です。 |
当初は割り込み処理でセンサからのデータを取得すべきか考えましたが、動作タイミングを確認するため、また、シリアル通信を利用することから「割り込み処理なし」で処理を作成しました。割り込み処理は利用しませんが、割り込み要求フラグを利用しているので割り込み処理に置き換えることは容易です。 |
(3)SPI通信 今回使用したPIC12F683ではSPI通信をサポートしていません。そこで、汎用入出力ポートを利用した疑似的なSPI通信インタフェースを作成しました。 信号操作のタイミング、例えばクロック信号の時間幅に対して積極的なウエイトは行っていません。原発振4MHzの実力で動作しています(「結果的な動作」とも言う)。より高速の原発振を選択した場合、あるいは高度に最適化されたコンパイラやアセンブラを利用する場合は適度なウエイトが必要です。 |
(4)シリアル通信 今回使用したPIC12F683ではシリアル通信をサポートしていません。そこで、汎用出力ポートを利用した疑似的な調歩同期式シリアル通信インタフェースを作成しました。 調歩同期式シリアル通信ではビット時間が厳密に規定されます。今回はタイマ2をビット時間を生成するタイマとして利用しています。delay関数によるタイマを利用してもよいのですが、C言語でプログラムを作成しているので、コンパイラのバージョンにより処理時間のばらつきが発生する可能性があります。それ故タイマ2を利用し、そのコンペアマッチを監視することで時間のズレが少なく、かつ累積しないビットタイミングを作成しています。 調歩同期式シリアル通信の「からくり」については別の機会で触れたいと思います。 |
(5)通信データ 測定だけでは動作が見えないので、測定結果を随時シリアル通信で出力しています(センサの測定周期に依存)。 モニタ手段はパソコンに導入済みのターミナルソフトを利用しています。 モニタ出力されるデータは助長的ですが、試食ということで御容赦。 起動時: |
タイトル表示 | プログラム名とバージョン番号 | |
センサ初期設定状況 | センサの初期化結果、センサのEEPROMチェック結果、初期化待ちループ数 | |
ASICリビジョン番号 | 気圧センサの制御プログラム相当(?) |
運用時(1行の中の区分けされた情報、レジスタの値は無加工): |
STATUSレジスタ | DRDYビットがセットされていることを確認 | |
TEMPOUTレジスタ | 温度データ | |
DATARD8レジスタ | 気圧データ(MSB) | |
DATARD16レジスタ | 気圧データ(LSB) | |
STATUSレジスタ | DRDYビットがクリアされていることを確認 | |
気圧変換結果 | 気圧データをhPa(天気予報で見る気圧)に変換した結果 | |
温度変換結果 | 温度データを変換した結果 |
▲ |
(1)メモリ容量 今回のサンプルプログラムにおけるメモリ使用量は以下の通りです(PIC12F683、C言語、HI-TECH C、最適化無し)。 |
メモリ種別 | 使用量/総量 | 占有率 | 備考 | |
コードメモリ | 1694/2048word | 82.7% | センサアクセスだけなら1Kワードを切る | |
データメモリ | 73/128byte | 57.0% | シリアル通信用バッファ16バイト含む | |
EEPROMメモリ | 0/256byte | 0.0% | 未使用 |
バイナリデータを十進数に変換するための処理、シリアル通信処理を除外すれば半分以下の容量で済みます。 結局はセンサとの通信処理よりも、人間との通信処理が大きなウェイトを占めています。これは仕方ありません。 |
(2)負荷 サンプルプログラムを開発するにあたり(結果的に)設定された条件は、 ・源発信は内蔵クロック4MHz ・C言語によるプログラミング(最適化無し) ・SPI通信、調歩同期式通信はソフトウェア制御 ・データ変換(4バイト乗除算、2バイト乗除算他) です。 気圧センサは定周期でマイコンに対して測定完了を通知しますが、測定データの読み出しが遅れるとリアルタイムエラーが発生しデータが抜け落ちてしまいます。 今回試食を行うに当たりシミュレーションを利用して処理時間測定を行いました。その結果は「間に合う」でしたが、実際動作させてみないと分かりません。 そこで、気圧センサのDRDY信号(Ch1:黄色)と調歩同期式通信(Ch2:桃色)の2つを実機でモニタしてみました。 |
気圧センサからのDRDY信号は定周期で発生し、それに併せて調歩同期式通信が行われている…。 心配は無用でした。 高精度モードにおける定周期間隔は Typ1.8Hz、約555ms周期です。確かに相当の時間でDRDY信号が変化しています。これに呼応する形でて調歩同期式通信が行われていることを確認しました。通信にかかわる時間が約50msでしょうか? ざっと見た感じでは絶対周期約555msに対して調歩同期式通信が約50ms。残約505msは「待ち」の時間です。 これであれば高速度モード(Typ9.0Hz = 約111ms周期)の場合でも今回のハード&ソフト構成で対応できそうです。 何か重要なことを忘れてます。ソフトウェアで実現したSPI通信とデータ変換にかかわる時間が抜けています。 処理の流れを見るとDRDY信号がセットされてからシリアル通信が始まるまでの間に処理があるはずです。が、確認したところでは数ms以内に完了していました。まぁ、大した処理を行っているわけではないので、全体から見れば無きに等しい時間です。塵も積もれば山となる…とも言いますが、今回は試食なので(ry 数百円で入手できるマイコンですが、いい仕事してます。 |
(3)DRDY信号の落ちるタイミング 気になったので調べてみました。 気圧センサのDRDY信号(Ch1:黄色)、SPI通信のクロック信号(Ch2:桃色)になります。 |
今回使用したサンプルプログラムでは測定完了後(DRDY信号が変化)、レジスタアクセスは全部で 5 回行われます。そのうち 4 回目のアクセスである DARARD16 レジスタの読み出しで DRDY 信号が落ちています。 厳密に見るとレジスタアドレスを指定した後、最初の 1 ビットを取得する時に落ちているようですね。 |
▲ |
(1)台風を待つか 気圧と温度が取得できるようになったけど、普段の天気では気圧の変動は少ないです。 現在2月。1日当たりの気圧変動量は 5hPa = 500Pa 程度。変化の少ない数字を眺めていても楽しくありません。 台風の目がくれば一気に気圧が下がるので変化に富んだデータを見ることができるのですが…。 |
(2)山に登るか 地上高 0~1000ms では 9m 登るごとに 1hPa=100Pa 下がるとのことです。 近くに赤城山(1828m)ありますが、既知の高さまで登るのは骨が折れます。 登るのに数時間要しますし、登っている間に天気が変わると気圧も変わってしまいます。 … そだ、ビルに登ろう。既知の高さ、エレベータで短時間で登れる。ベストな選択です。 費用も駐車代金程度で済みます ^ ^ v まぁ、短時間での動作確認。ということで。細かいことは気にしない。 |
(3)ターゲット 今回のターゲットは近所にある高崎市役所。 地下2階、地上21階。屋上階、ヘリポート付き(?)で高さ102.5m。海抜97.1m。 屋上階は無理としても、展望台の位置である約100m 近辺であれば 10hPa = 1000Pa 程度は下がるはず。 |
後で確認したら群馬県庁の方が高かった orz 地上33階で高さ153.8m。 |
(4)測定した時の状況 測定するのは良いとして、測定時の行動を記録しておかないと結果との比較ができません。 測定中の上昇具合と行動内容をメモしておき、その行動が結果としてトレースされているか確認します。 今回の測定ではエレベータと階段を使用しました。エレベータは人の乗り降りで途中停車がありました。 測定時間が昼飯時で、職員の乗り降りが多く…むしろ、途中停止階があって良かったかもしれません。 ・装置の準備(かばんの中でゴソゴソしてます) ・地下 1 階からエレベータで上昇。 ・地上 14 階で途中停止。 ・地上 21 階到着(ここで少し散歩)。 ・地上 21 階から地下 1 階まで階段で下りる。歩く速度で休憩なし。 ・地下 1 階からエレベータで上昇。 ・地上 1 階、7 階、17 階で途中停止。 ・地上 21 階到着(今度はすぐに降下)。 ・地上 21 階からエレベータで降下。 ・地上 9 階、7階で途中停止。 ・地下 1 階到着。 ・装置の停止(かばんの中でゴソゴソしてます) 測定モードは高精度モードです。測定周期を 560ms/件 として表計算でグラフ化しました。 |
(5)気圧グラフ 縦軸が気圧(Pa)で横軸が秒になります。グラフをクリックすると大きなグラフが表示されます。 |
(5)高度グラフ 縦軸が高さ(cm)で横軸が秒になります。1hPa = 100Pa = 9m で地下1階を 0m で計算しました。 見た目は気圧グラフの反転になります。グラフをクリックすると大きなグラフが表示されます。 |
(6)測定してみた結果 結果をグラフにしてみましたが、気圧よりは高度の方が見やすいかもしれません。 ビル、そしてエレベータの気密性が気になりましたが、ほぼ期待する結果が得られました。 エレベータは30秒もあれば地上21階まで移動できるのですが、途中で停止したところがデータの塊として見えています。徒歩で階段を下るのは時間を要しましたが、それもしっかりトレースされています。 地下1階からみて地上21階は約95m位(グラフの高さは cm)。 地上 21 階で階下の風景を撮影しましたが、その時に機材の入ったカバンに衝撃を与えた?少し乱れています。 2ラウンド目のエレベータの上下移動。偶然ですが双方とも地上7階で停止しました。値はほぼ同じでした。 地上7階と地上9階の差は 8m弱位。各フロアの天井高、床の厚みを考えるとこんなもんでしょうか? 測定完了時。鞄の中をゴソゴソしたせい(?)もあり、データがばらついています。振動に影響されるのかな? 鞄の開け閉め。これは確実に気圧に対して影響あります。 測定した結果に外乱が含まれてしまいました。が、逆にどのような挙動が気圧センサに対して影響を与えるかを見る機会になりました。綺麗なデータを再計測するよりは、この結果の方が次に続く人の参考になるかと思います。 |
(7)その他 測定開始時の気圧は1001hPaでした(地下 1 階)。 その時、近くの気象観測所(前橋:標高112m)の気圧は 1012.3hPa でした。 直接の比較はできませんが、高崎市役所が海抜 97.1m。地下を考慮して 93m。気圧センサの温度は 23.3度。 前述のカシオ計算機殿の 海面気圧への校正計算 を利用すると、海面校正した気圧は 1011.78hPa です。 センサ自体の精度はけっこういい感じです。やはり校正済みのデジタル出力は便利です。 |
▲ |
アナログ出力系のセンサデバイスでは取得したデータの補正が必要不可欠ですが、今回使用した気圧センサは校正機能を内蔵し、デジタルデータで値を直接取得できるのでマイコンとの相性が非常に良いです。一部、海面気圧への校正を行う際に面倒な計算がありますが、このあたりはパソコンで処理する様に作業分担すれば問題ありません。 気圧センサとしての性能も高く、反応も機敏です。ただ、機敏であるがゆえに外乱を受けやすいことが分かりました。例えば部屋の中に気圧センサを設置した場合、部屋のドアを開け閉めしただけでも取得される気圧は変動します。このあたりは取得したデータを平均する、飛び抜けたデータを除外する等のフィルタ操作が必要です。 高度を測るようなケースでは地上の気圧に注意が必要です。標準気圧を利用する方法もありますが、現在地の地上に対する相対高度という形で利用するのがベターです。なお、気象条件の変化により気圧は絶えず変化しているので長時間にわたる安定した高度計測は厳しいと思います(地上基地局を設ければ対応できるかもしれません)。 気圧データを測定する機器は多いのですが入手性と金額が難点です。個人で試すには敷居が高かったのですが、今回試食した気圧センサは入手しやすく、性能も遜色ないと思います。 紹介したサンプルプログラムを改造すれば個人気象観測所も開けるかな? 最後に…。 気圧センサの動作確認を行う場合、高いビルの階段を利用する方法は安くて便利です。 垂直面が目の前にあるので高さを実測することもできます。 ただし、 階段を長時間利用する場合は翌日の筋肉痛を覚悟してください。フクラハギとモモにきます orz 古い話ですが、ピッチャーの久里君を思いだします。登るより下る方が鍛えられるって(ry |
▲ |