情報ラボ > 計測と制御
センサーで量をはかり、コンピュータが条件で判断して、照明や換気扇を動かします。センサーの値の読み方から、制御のルールづくり、プログラムまでを順に確かめましょう。
教室・時間割・明るさ・人数はすべて架空です。CO2 の 1000 ppm は、建築物衛生法の建築物環境衛生管理基準(二酸化炭素の含有率 100万分の1000以下)の値です。学校の教室には、別に学校環境衛生基準(1500 ppm 以下であることが望ましい)があります。
| 照明のルール | 換気扇のルール | 間隔 | 電力量 | 切りかえ 照明/換気扇 | CO2超 | 暗いのにOFF | 無人でON |
|---|
シミュレーションの仮定:教室の容積 180 m³、生徒1人が出す CO2 は 1時間に 0.015 m³、外の空気の CO2 は 420 ppm、すきま風などによる換気は 1時間に部屋の空気1回分、換気扇はさらに6回分、照明は 400 W、換気扇は 40 W。センサーの値には小さなゆらぎがあります(毎回同じゆらぎを使うので、ルールどうしを公平に比べられます)。どれもこのページで決めた値で、実際の教室の測定値ではありません。
ルールを変えると、ここも書きかわります。センサーの値を読み、「もし〜ならば」で判断し、結果を照明と換気扇に送る、という処理を繰り返す形です。書き方の決まりは プログラム表記を動かす の「書き方の一覧」と同じです。
| 人感センサーの値() | 人がいれば 1、いなければ 0 を返す |
|---|---|
| 明るさセンサーの値() | 明るさ(lx)を整数で返す |
| CO2センサーの値() | CO2 の濃度(ppm)を整数で返す |
| 照明に送る(x) | x が 1 なら照明をつけ、0 なら消す |
| 換気扇に送る(x) | x が 1 なら換気扇を回し、0 なら止める |
| 待つ(m) | m 分間、何もしないで待つ |
共通テストでは、このような関数は問題文で説明されます。ここでは、この表の説明に従います。
ひし形は分岐、上下の角を落とした形は繰り返しの始まりと終わり、平行四辺形は入力と出力です。黄色は、選んだ時刻の1回分で通った記号です。
それぞれの機器で、使われているセンサーと、動かすもの(出力)を選んでください。2つとも選ぶと、処理の説明が出ます。
センサーなどの装置を使って、明るさや温度などの量をはかることを計測といいます。そして、ある目的の状態にするために、モーターなどの装置を動かすことを制御といいます。たとえばエアコンは、室温を計測し、設定した温度に近づくように運転を制御しています。
コンピュータを使った計測では、センサーから得たデータを入力ポート(入力端子)からコンピュータに取りこみます。制御では、コンピュータが判断した結果を出力ポート(出力端子)から送り、アクチュエータを動かします。この「センサー → 処理 → アクチュエータ」の流れの中で、データはプログラムによって処理されています。プログラムは、順次・分岐・反復の3つの基本構造の組み合わせでできています。
センサー(センサとも書きます)は、光・温度・動き・距離などの自然界の量を、人間や装置が扱いやすい電気の信号に置きかえる装置です。アクチュエータは、コンピュータが決めた内容を、動きなどの物理的なはたらきに変える装置で、さまざまなモーターが代表です。
| センサー | はかるもの | 使われている例 |
|---|---|---|
| 温度センサー | 温度 | 冷蔵庫、エアコン |
| 湿度センサー | 空気の湿り気 | エアコン |
| 加速度センサー | 傾きや動き | スマートフォン |
| 赤外線センサー | 赤外線の信号 | リモコン(テレビなどが信号を受け取る部分) |
| カメラ・レーダーなど | 前や後ろの障害物 | 自動車 |
アクチュエータの動きは、まっすぐ動く直進運動と、回る回転運動に分けられます。DCモーターは車輪のように回り続ける動きに、サーボモーターはロボットの関節のように決めた角度まで回す動きに使われます。動力には電気のほか、油圧(建設機械のシリンダなど)や空気圧もあります。
人感センサーのように「いる・いない」の2つの状態だけを返すセンサーはデジタル型で、その信号をそのまま 1 と 0 として入力できます。一方、明るさや温度のように連続的に変わる量を、電圧の大きさで表すセンサーはアナログ型です。アナログの信号をコンピュータが扱うには、次の A/D 変換が必要です。
A/D変換(アナログ・デジタル変換)は、連続的に変わる電圧を、決まった数の段階に区切り、どの段階に入るかを整数で表す処理です。区切る段階の数はビット数で決まり、n ビットなら 2n 段階になります。
このページの仮想の明るさセンサーは、0〜1000 lx(ルクス、明るさの単位)を 0〜3.3 V の電圧に変えると決めています。これを 4 ビットで読むと 16 段階で、1段階は 62.5 lx です。8 ビットなら 256 段階で約 3.9 lx、10 ビットなら 1024 段階で約 0.98 lx になります。1段階より小さな変化は同じ値になってしまうので、ビット数が多いほど細かく計測できます。「センサーの値を読む」で 4 ビットを選ぶと、グラフが階段のようになるのはこのためです。
これは、音のデジタル化で学ぶ量子化と同じ考え方です。音では量子化ビット数が音質を決めましたが、計測ではビット数がはかれる細かさ(分解能)を決めます。また、決まった時間ごとに値を読む「記録の間隔」は、音の標本化にあたります。
センサーから入力した値は、そのままでは「何段階目か」を表す整数です。プログラムの中で、センサーの特性に合わせた計算式を使って、温度などの量に換算する必要があります。ただし教育用のプログラミング言語には、温度などを直接得られる命令が用意されていることもあります。
反対に、コンピュータが出した数値を電圧に戻す処理がD/A変換です。モーターの回る速さを少しずつ変えるなど、アナログ型のアクチュエータを動かすときに使います。
「明るさが 300 lx より小さければ暗い」のように、判断の境目にする値をしきい値といいます。複数の条件は、and(かつ)や or(または)で組み合わせます。
| 人がいる | 暗い | 人がいる かつ 暗い | 人がいる または 暗い |
|---|---|---|---|
| いる | 暗い | ON | ON |
| いる | 明るい | OFF | ON |
| いない | 暗い | OFF | ON |
| いない | 明るい | OFF | OFF |
この表は、論理回路の AND と OR の真理値表と同じ形です。「または」にすると、だれもいない夕方の教室でも照明がつき、電力のむだになります。「かつ」にすると、必要なときだけつけられます。「条件で制御する」で、だれもいないのに照明がついていた時間を比べてください。
しきい値を1つだけにすると、センサーの値がしきい値の近くで小さく上下するたびに、ON と OFF が細かく切りかわります。これをばたつき(チャタリング)といいます。雲が出たり消えたりする日の照明や、CO2 がしきい値の近くにある換気扇がそうなります。何度も切りかわると、使う人にとってわずらわしいだけでなく、機器の負担にもなります。
そこで、ONにするしきい値と OFF にするしきい値を分けます。たとえば「CO2 が 1000 ppm を超えたら換気扇をつけ、800 ppm より下がったら止める」とすると、800〜1000 ppm の間では前の状態を続けるので、切りかえの回数が大きく減ります。このように、状態によって切りかえの境目を変えるしくみをヒステリシスといいます。センサーを読む間隔を長くしても切りかえは減りますが、その間は変化に気づけないので、反応がおそくなります。
換気扇を回すと CO2 が減り、減った値をまたセンサーがはかって、次に換気扇をどうするかを決めます。このように、制御した結果を計測し、目標とのずれをもとに次の操作を決めるやり方をフィードバック制御といいます。
このページの照明や換気扇は、つけるか消すかの2通りだけを選ぶ ON/OFF 制御です。しくみが簡単な反面、値が目標の上下を行ったり来たりします。これに対して、目標とのずれの大きさに応じて操作の強さを変えるのが比例制御です。
たとえば換気扇の回る速さを、CO2 がしきい値をどれだけ超えたかに比例させれば、ずれが大きいときは強く、目標に近づくと弱く運転できます。速さを少しずつ変えるには、D/A変換のような、連続的な出力が必要になります。実際の機器では、これにさらに工夫を加えた制御が使われることもあります。
「プログラムで制御する」では、決めたルールを共通テスト用プログラム表記で表しています。センサーの値を読む → もし〜ならば で判断する → 照明と換気扇に送る → 少し待つ、という処理を繰り返す形です。ヒステリシスを入れると「そうでなくもし」が加わり、どちらの条件にも当てはまらないときは変数を変えない(前の状態を続ける)ことが、プログラムの形からも読み取れます。時刻を選ぶと、その1回でどの行を実行したかが黄色で表示されます。トレース表で変数の動きを追う練習は、プログラム表記を動かすでもできます。
実際にセンサーを使ってみるには、教育用のマイコンボードが便利です。マイコンボードは、小さなコンピュータ(マイクロコントローラ)にセンサーや入出力の端子を付けた板です。たとえば micro:bit は、イギリスで教育用に作られたマイコンボードで、ボタン、明るさのセンサー(LED の表示部を光センサーとして使う)、温度センサー、加速度センサー、方位(コンパス)のセンサーを持ち、新しい版(V2)にはマイクも付いています。出力には 5×5 の LED 表示があり、V2 にはスピーカーもあります。
micro:bit のプログラムを作れる Microsoft MakeCode では、明るさを 0(暗い)から 255(明るい)の数で得られます。256 段階なので、8 ビットで表せる範囲です。また、端子につないだアナログのセンサーは 0 から 1023 の数で読み取れます。1024 段階なので、10 ビットで表せる範囲です。「センサーの値を読む」の 8 ビットと 10 ビットは、この段階の数にあたります。
実習では、たとえば「暗くなったら LED を光らせる」「温度がしきい値を超えたら音を鳴らす」といったプログラムを作り、しきい値を1つにした場合とヒステリシスを入れた場合で、手で光をさえぎったときのふるまいを比べると、このページの体験とつながります。
さまざまなモノが、センサーと無線通信を通してインターネットの一部になることを IoT(Internet of Things、モノのインターネット)といいます。センサーの値をインターネットに送れば、離れた場所から教室の CO2 の変化を見たり、たくさんの部屋のデータを集めて分析したりできます。一方で、インターネットにつながる機器は不正アクセスのねらいにもなるので、初期のパスワードを変える、ソフトウェアを更新するなどの対策が欠かせません。
制御は、センサーが正しく計測できる範囲でしか働きません。国土交通省は、自動車の衝突被害軽減ブレーキについて、カメラやレーダーで周囲を監視し、衝突のおそれがあれば警報で運転者にブレーキ操作をうながし、それでも衝突を避けられないと判断したときに自動でブレーキをかける装置だと説明しています。そのうえで、機能には限界があり、故障していなくても状況によっては作動しないことがあると注意をうながしています。計測と制御のしくみを知ることは、こうした機器を正しく使うことにもつながります。
CO2 の基準について補足します。建築物衛生法(建築物における衛生的環境の確保に関する法律)の建築物環境衛生管理基準では、空気調和設備のある居室の二酸化炭素の含有率を 100万分の1000以下(1000 ppm 以下)としています。学校の教室については、学校保健安全法にもとづく学校環境衛生基準で、換気の基準として二酸化炭素は 1500 ppm 以下であることが望ましいとされています。このページでは、しきい値の初めの値と評価の目安に 1000 ppm を使っています。
情報Ⅰ 授業の進め方ガイドでは、この教材を次の授業で使います。ねらい・導入の問い・50分の流れ・確認問題をまとめています。