公開日:2021/09/18
title.png

17th Season


#17-10 熱中症警戒アラート

 今年(2021年)の熱中症が多発する季節は終盤となってしまいましたが、最近天気予報などでよく耳にする「熱中症警戒アラート」と言う物があります。これ、WBGTという指標を根拠に発表されています。

 今回工作するのは、熱中症の危険度を表示する気温・湿度計です。

WBGTとは?

 WBGTというのは、暑さ指数または湿球黒球温度と訳されていて、Wet Bulb Globe Temperatureの頭文字を取った指標です。

  WBGTについて調べる(別ウインドウが開きます)
  ※環境省のページがヒットするはずです(お勧め)。

 先端を湿らせた湿球温度計と、普通に乾いた乾球温度計の指示値から相対湿度(%RH)を求めるのはお馴染みですが、ここに黒い空洞の球体の中に温度計を仕込んだ黒球温度計が追加となります(下図)。

a17a_wbgt.png

 3つの温度計指示値を使って、WBGTを以下式で計測します。

 ざっくり言うと、暑さ指数WBGTは、湿度(7):輻射熱(2):気温(1)の比で決まる指数って事です。Ta,Tw,Tgすべて温度で、そこに係数が掛かっただけなので、WBGTの単位も温度と同じ℃です。

 実測するには、中を空洞にしてなるべく光を反射しない真っ黒な塗料で塗装した薄い銅製球体(直径約15cm)の中に温度計を入れて、温度を計測する必要があります。そのような装置が無い場合、普通の気温と湿度を使って、WBGTを推定する方法が考案されています(下式)。

  WBGT(推定値)=
    0.735×Ta+
    0.0374×RH+
    0.00292×Ta×RH+
    7.619×SR−4.557×SR2−0.0572×WS−4.064
  ここで、Ta=気温[℃]、RH=湿度[%RH]、SR=全天日射量[kW/m2]、WS=平均風速[m/s]

 環境省HPから引用されている論文「doi:10.11227/seikisho.50.147、小野雅司ら」で提案された推定式です。
 湿球温度Twと乾球温度Taを使って湿度RHが求まるので、Tw → RHに置き換わっているのでしょう。すると、黒球温度Tgに相当する部分は、全天日射量SRと風速WSから推定しているようです。

室内のWBGTを推定する

 関東地方とか、東京都、神奈川県、等と言った、地域の熱中症アラートは天気予報などで発表されるので、そちらをご覧ください。
 今回フォーカスを当てたいのは「今、自分が居る部屋の危険度(アラート)」です。従って、室内のWBGTを推定して、どの程度の危険度にあるのかを表示する室温・湿度計を作ります。

  「この部屋、熱中症の危険度高いな、エアコンつけよう」

と、言うアクションを取った時、エアコンによって室温と湿度が下がることで、

  「お、危険度が下がったぞ」

と、実感できるような室温・湿度計にしたいと思います。


 以下、室内WBGT推定の考え方をまとめて行きます。

全天日射量の推定

 全天日射量の測定は、気象庁にて、実施されています。
 茨城県つくば(館野)の全天日射量データ(2020年分)をダウンロードしてグラフ化してみると、下図となります。

a17a_solradi.png

※データの出典: 気象庁過去の気象データ検索ページ

 横軸に日付、縦軸は全天日射量MJ/m2です。日射量1時間毎測定値の1日(日の出〜日の入りまで)平均値(average、青プロット)と、1日の最大値(max、橙プロット)をプロットしてあります。

 1年分のデータなので、雨の日もあれば晴れの日もあるということで、数値としては0付近から3.5以上までばらついています。しかし、山の稜線を眺めて見ると、大体5〜6月あたりが日射量最大となって、12〜1月が最小となる傾向がしっかり見て取れます。

 時に、上グラフの単位はMJ/m2ですが、こちらのWBGT推定式に使うSRの単位はkW/m2ですので、単位が異なります。ここで、単位を換算しておきましょう。

  単位の換算式: J/s=W

 J(ジュール)が積算値なのに対して、W(ワット)は瞬間値なので、積算値を積算した時間で割り算すると次元が合いますよ、と言う関係式ですね。上のグラフ作成で参照したデータは1時間毎の日射量を記したデータですので、1時間=3,600sで割る必要があります。

  MJ/m2/3,600s=MW/m2
  MJ/m2/3,600s=1/1,000×kW/m2
  MJ/m2×1,000/3,600s=kW/m2
  MJ/m2/3.6s=kW/m2

 つまり、MJ/m2のデータを3.6で除すると、kW/m2に換算することが出来ます。


 上のグラフと同じデータを、今度は時間(時刻)毎に1年を通して平均してみると、下図の様になりました。

a17a_solradi2.png

 横軸に時刻、縦軸には全天日射量SR[kW/m2]を取ったグラフです。こちらも直観的に解り易いグラフとなりました。日の出前、日の入り後の時間帯には、SR=0となっているし、正午🌞頃が一番SRが大きくなるというグラフです。
 これだけ時間帯によってSR値が異なるので、何らかの固定値で代表させるのは無理があります。

 結論: 上グラフのデータをテーブルとして参照する。

 WBGTを推定するためには、DHT11で室温と湿度を計測するだけでは不十分で、そこに加えて、測定時刻を知る必要があることが解りました。

 ∵時刻を知り、その時間の全天日射量SR値をテーブル参照して、漸くWBGTを計算(推定)できるため。

室温・湿度実測データで検証

 筆者宅では、Arduino+PCで作成した、室温・湿度の自動測定ロガが稼働していますので、去年(2020年)の計測データでWBGTを推定して、検証してみました(下図)。

a17a_wbgtest.png

 横軸に2020年の日付、縦軸にWBGT推定値(ただし、TaとRHは気温・湿度センサでの実測値を使用、WS=0m/s)を取りました。

 環境省の指針によると、以下の様になります。

指針 指標
危険 31℃≦WBGT
厳重警戒 28℃≦WBGT<31℃
警戒 25℃≦WBGT<28℃
注意 WBGT<25℃

 グラフに引いた赤・橙・黄色の水平線が、指針(指標)の境界値です。このグラフを見る限り、筆者宅は8月〜9月中旬くらいまで、「危険」ゾーンに達する時間帯があるみたいです(1^^;)。部屋に居るときは、エアコンを稼働した方が良いみたいですね。

 全天日射量SRは、1年間の平均値としましたので、夏場だけではなくて、冬場のデータもすべて平均化されています。熱中症の危険度が高い夏場だけのデータで平均化すると、更に上のグラフが高WBGT側に平行移動します。
 しかし、あまり派手にアラートを出しまくると、それが常態化して慣れてしまっても良くないし、「危険」のアラートが出る時期も8月〜9月中旬と、感覚的に合っているので、本ページの結論としては、この値で良しとします。

※SRに大き目な値を設定して、「早め早めに警戒してもらう」と言う目的と、「アラートが出過ぎて常態化することを避ける」と言う目的は相反しているので、両立できず、適切なところで折り合いをつけた結果です。

WBGT室温・湿度計

 ここからがDIYの本番です。
 FPGAボードにMoscoviumマイコンを書き込んで、DHT11から読み取った室温と湿度データを使ってWBGTを推定し、LCD1602表示器(下図)に表示します。

ar24_dht11mdl.jpgar31_lcdout.jpg

 DHT11からのデータ読み出しについては、前回の「#17-9 双方向I/Oポート」で解説済みです。LCD1602への表示に関しては、ずいぶん昔に4ビットパラレルバスを使って表示した記事があります(↓)。

  「#3-1 LCD1602に表示する

 今回は、I2C方式のLCDCモジュール(PCF8574)を使って、LCD1602に表示したいと思います(下図)。

ar87_lcdc.jpg

 PCF8574は、I2Cで通信して8本のI/Oポートを拡張する、I/Oエクスパンダと言う種類のLSIです。「#17-5 I2Cを使いたいの」で設計した、I2C通信可能なSTWSERユニットを早速応用してみよう、という訳です。
 ですが、具体的な制御方法については、次回に回します(1^_^)!

 今回は最初に、完成したシステムからご覧いただこうと思います。

デザインとプログラム

 解説は次回に回しますが、以下に完成したWBGT室温・湿度計のプログラムをリンクしておきます。

  完成版プログラム:wbgt_clock.asm

※必要なインクルードファイルなどはこちらからダウンロードできます。

 Moscoviumアセンブラでアセンブルして、完成したMIFファイルを所定のディレクトリに格納してください。
 シリアルモニタから受け付けるコマンドは以下の通りです。


 I2C通信を実行するので、現状それが可能なマイコンはMCOC115TW0408だけです。以下リンク先から必要なファイルをダウンロードしてFPGAボード(Sipeed Lichee Tang Primer)に書き込んでください。手順はこちらです。

btn_moscovium.png

 今回のプログラム(wbgt_clock.asm)は最低限、乗除算コプロセッサとSTWSERユニットが必要となります。

実験が暑い

 まずLCD1602とLCDCモジュールを、ブレッドボードなどを使って以下図の様に接続してください。

ar87_lcdctl.jpg

 その後、FPGAボードUSB⇔UART変換モジュール(FTDI)LCDCモジュールDHT11モジュールレベルシフタ(L/S)を以下表の様に接続してください。

FTDI 接続 FPGAボード 接続 L/S 接続 DHT11 接続 LCDCモジュール
GND GND GND GND GND
  3.3V LV    
P2(stws_scl) LV1
R2(stws_sda) LV2
C15(port_out[7]) LV3
5V HV VCC VCC
TXD R7(uart_rxd)   HV1 SCL
RXD T7(uart_txd) HV2 SDA
VCC(ジャンパ:3.3V側) ×   HV3 SDA  

※DHT11の双方向シリアル端子名SDAと、I2C端子名(SDA)が同じで紛らわしいですが、全く別な物なので間違って接続しないように。また、DHT11とLCD1602を3.3V駆動したところ、電源電圧が低下してしまってDHT11が応答しなかったため5V駆動としました(ジャンパ線だから??)。接続にはL/Sが必要です。


 以下、実験中の様子です。

a17a_expr.jpg

※配線の影で見えませんが、DHT11の右隣にL/Sが居ます。

 LCD1602の表示がしっかりと見えると思います。

  左側 右側
上段 【32.0℃】DHT11で計測した室温 【WARN28.8】熱中症アラートとWBGT(推定値)
下段 【51.0%RH】DHT11で計測した湿度 【12:40:18】現在時刻

 熱中症アラートは英単語の一部省略で、以下の様に表示します。

  DANG: 危険 (danger)
  WARN: 厳重警戒 (strict caution、warning)
  CAUT: 警戒 (caution)
  ATTN: 注意 (attention)

 計算(推定)したWBGT値も表示するので、同じ指針の中でも危険度が高めなのか低めなのか、知ることが出来ます。


 以下、完成したWBGT時計の指示値と、熱中症危険度が高かったため、エアコンを稼働した後の指示値の変化を動画にしておきました。



 何しろ、今居る部屋の危険度がリアルタイムで確認できるので、エアコンを稼働すると、ちゃんと危険度が下がります。対策の効果を確認できると言うのは、「対策した甲斐があった」と実感できて良いと思います。
 尚、正確に室内のWBGTを推定することが目的ではなく、早め早めに熱中症危険度を認知することが目的なので、その点に留意しておいてください。


 今年(2021年)のシーズンには、ちょっと出遅れましたが、来年以降も普遍に使えます。全天日射量のデータ(2020年)が少々古くなりますが、大勢に影響ありません。


btn_arduino.png

btn_prev.png btn_next.png

home