Skip to content

アクティビティ

エネルギーコスト計算機

上級 | MakeCode, Python | LED表示, ボタン, 光センサー | 13 気候, お金, かけ算, センサー, ブール論理, 入出力, 割り算, 変数, 計測

ステップ1: 作る

説明

エネルギー使用量に関するデータを集めるのに役立つ3つのプロジェクトの3番目。 エネルギーコストを算出する方法とタイマーを作成する方法を学び、電灯にどれぐらいのコストがかかるのかを測ってみましょう。

これは、SDGs(持続可能な開発目標)を達成する技術を探求するために作られた、課題解決とプロトタイピング活動の一連のプロジェクトの一つです。

はじめに

プログラミングガイド

学ぶこと

  • 単位を換算するための計算方法: ワットをキロワットに換算する方法と、分を時間に換算する方法
  • ワット(W)と時間で計測した電力からキロワット時(kWh)のエネルギーを計算する方法。
  • 事前にシステムで使う値の入った変数を使えるようにする方法。

使い方

前のプロジェクト、エネルギー光タイマーでは、電灯が点灯している時間を計測しました。 同じプロジェクトであるこの特殊バージョンでも同じように機能しますが、時間ではなく、電灯で使われるエネルギーのコストを計算して表示します。
これを行うには3つの数値を知っている必要があります:

  • 電灯が点灯しているときの明るさ。 これは、最初のプロジェクト「エネルギー光メーター」でも、「エネルギー光タイマー」でも使った数値です
  • 電灯のワット数。 これはたいてい電灯に印字されています。
  • kWh あたりの電気料金

プログラムはプロジェクトのはじめに、これら3つの数値を変数に格納します。

以前の光メーターのプロジェクトで使った数値を LIGHT 変数に設定します。

電灯のワット数が何かを調べるには電灯を見てください。 電灯は非常に熱くなりますし、たいていは主電源に繋がっていますので、大人の人にお願いしましょう。 調べた数値は変数 WATTS に設定します。

再度に kWh あたりの電気料金を変数 COSTPERKWH に設定します。 この数値を調べるには大人に尋ねる必要があるかもしれません。電力会社のオンラインサイトでも調べられるかもしれません。

micro:bit にこのプログラムを転送し、バッテリーパックを取り付けます。 このタイマーを光源の近くに置くと、micro:bitは、光の強さ、電球のワット数、電気のコストの情報と、内蔵された光センサーとプロセッサーのタイマーからの読み取り値を組み合わせて、一定期間に使用された電気代を監視します。

毎日とか毎週の同じ時刻に B ボタンを押すと、その間のコストの測定値をとることができます。リセットするには micro:bit の背面にあるリセットボタンを押してください。B ボタンをもう一度押してゼロに戻っていることを確認してください。

これは1つの電灯だけしか対象にしていないことを忘れないでください。建物全体の1年間のコストを考えてみましょう。
エネルギー消費に関するデータを取得してみました。人々の行動を変えてエネルギーとお金を節約し、気候変動の対策に役立てようとするにはどうすればよいでしょうか?

動作の仕組み

  • プログラムは micro:bit の光センサーを使って、電灯が点灯したままになっている時間を測ります。
  • エネルギーの使用量は、電灯の電力と時間を乗算して求めます。 これはキロワット時(kWh)で求められます。 電灯の電力はたいていワットではなくキロワットで測られるので、プログラムはワット(W)をキロワット(kW)に換算するために 1000 で割ります:
    ワット ÷ 1000 = キロワット
    たとえば、60 ワットの電灯は 0.06 キロワットになります:
    60 W ÷ 1000 = 0.06 kW
  • プログラムは時間の単位も換算します。 時間を秒から時に換算するには、時間を 60 で割ります。 たとえば:
    600 分 ÷ 60 = 10 時間
  • 一定期間に消費されたエネルギーのコストを算出するために、プログラムはエネルギー使用量(キロワット時)にキロワット時あたりの電気料金を乗じます。
  • エネルギーコストが 1kWh あたり 0.16 ポンド(=16ペンス)であれば、60ワットの電灯を10時間つけておくと10ペンスほどのコストになります(ポンドとペンスはイギリスの通貨単位: 1ポンド=100ペンス):
    0.6 kWh × 16 ペンス = 9.6ペンス

必要なもの

  • micro:bit
  • MakeCodeまたはPythonエディター
  • バッテリーパック(推奨)

ステップ2: プログラムする

1from microbit import *
2display.show('L')
3
4LIGHT = 114  # <<< Enter your 'measured' reading here
5WATTS = 1000  # <<< Enter your bulb wattage here
6COSTPERKWH = 0.18  # <<< Enter unit electricity cost here
7
8HYSTERESIS = 8
9LIGHT -= (HYSTERESIS/2)
10DARK = LIGHT - HYSTERESIS
11ON_IMAGE = Image('99999:99999:99999:99999:99999')
12OFF_IMAGE = Image('00000:00000:00900:00000:00000')
13timing = False
14start_time = 0
15total_time = 0
16reading = display.read_light_level()
17sleep(1000)
18
19def calc_cost(m):
20    # Calculate cost of electricity for this number of mins
21    kw = WATTS / 1000.0  # answer as a decimal
22    hours = m / 60.0  # answer as a decimal
23    kwh = kw * hours
24    cost = kwh * COSTPERKWH
25    return cost  # as pounds and pence
26    
27def show_number(n):
28    # Scroll number as 3 decimal places
29    display.scroll("%.3f" % n)
30
31while True:
32    reading = display.read_light_level()
33    if reading < DARK:
34        if timing:
35            # it has just gone dark, update timer for 'on' time
36            end_time = running_time()
37            total_time += (end_time - start_time)
38            timing = False
39        
40    elif reading >= LIGHT:
41        if not timing:
42            # it has just gone light, start the timer
43            start_time = running_time()
44            timing = True
45        
46    if button_b.was_pressed():
47        # calculate and display cumulative cost in pounds and pence
48        minutes = total_time / 60000
49        if timing:
50            # adjust live for current ON time
51            minutes += (running_time() - start_time) / 60000
52        display.clear()
53        show_number(calc_cost(minutes))
54        sleep(500)
55
56    # update the display with the ON/OFF state
57    if timing:
58        display.show(ON_IMAGE)
59    else:
60        display.show(OFF_IMAGE)
61    sleep(1000)
62
63        

ステップ3: 改善する

  • 複数の micro:bit を使って、いろいろな場所での照明のコストを測定してみましょう。
  • 無線を使って、コストデータを別の micro:bit に送信して、リモートでタイマーをリセットしてみましょう。