Arduinoで地球の質量を測定:ステップバイステップDIYガイド
必要な部品と材料
| 部品 | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | |
| USB-A to B ケーブル | 1 | |
| 560Ω 抵抗 | 4 | |
| 100Ω 抵抗 | 2 | |
| 圧電センサー | 4 | |
| IR送信機(汎用) | 1 | |
| IR受信機(汎用) | 1 | |
| ロータリーポテンショメータ(汎用) | 1 | |
| オペアンプ UA741C | 1 | |
| ブレッドボード(汎用) | 1 | |
| 1.2m 長のワイヤー | 3 | |
| 汎用 PCB 基板 | 1 | 5cm×5cm程度 |
| テープ | 1 | |
| 段ボールシート | 1 |
使用するアプリとオンラインサービス
- Arduino IDE
プロジェクト概要
はじめに
ある日、体重計に乗っているとき、ふと思いました。「地球の質量ってどれくらいなんだろう?そもそもどうやって測るんだ?」地球を載せられる体重計なんてありません。間接的な方法で測定するしかないのです。ここでは、Arduinoといくつかのセンサーを使って地球の質量を求める間接測定法を実装します。
ステップ1:間接測定の原理
19世紀初頭、科学者たちはニュートンの運動の第2法則(F = ma)と万有引力の法則(F = GmM/r²)を組み合わせて地球の質量を求めました。ここで、mは物体の質量、aは加速度、Gは万有引力定数、Mは地球の質量、rは地球の半径です。加速度aを重力加速度gで置き換え、2式を連立すると:
mg = GmM/r²
これを地球の質量Mについて解くと:
M = (g × r²) / G
Gとrは既知の値として、実験でg(重力加速度)を測定し、最後にMを算出します。
ステップ2:実験の概要
(少し数式が続きますが、すぐにArduinoが登場します)
重力加速度を求めるには「自由落下」を利用します。自由落下とは、重力のみを受けて物体が下向きに運動する現象です。これを特徴づける要素は以下の5つです。
- 初速度:自由落下開始時の速度
- 終速度:自由落下終了時の速度
- 落下距離:自由落下中に移動した距離
- 落下時間:落下距離を移動するのにかかった時間
- 加速度:速度の変化率。自由落下では重力加速度gに等しい
ニュートンの運動方程式の一つに:
落下距離 = (初速度 × 落下時間) + (加速度 × 落下時間²) / 2
があります。4つの変数のうち3つが分かれば残り1つが求められます。ここで2つを固定します。
- 落下距離 = 1メートル(高さ1mから落とす)
- 初速度 = 0 m/s(静止状態から解放)
すると式は:
1 = (g × 落下時間²) / 2
よって:
g = 2 / 落下時間²
残る未知数は落下時間のみ。これをArduinoとセンサーで測定します。落下開始と終了の2つのタイムスタンプが必要です。ステップ4で開始時刻、ステップ5で終了時刻を取得する回路を作ります。
ステップ3:必要なもの
上記の部品リストを参照してください。詳細は添付画像をご覧ください。
ステップ4:回路図1 - IR回路(落下開始検出)
この回路は自由落下の開始時刻をタイムスタンプとして記録します。ポイント:
- IR LEDを順方向バイアスで使用(通常のLEDとして発光)
- フォトダイオードを逆方向バイアスで使用
- フォトダイオードのカソードと抵抗の接点からの出力をオペアンプの入力端子の一つに接続
- オペアンプのもう一方の入力端子をポテンショメータに接続し、閾値電圧を設定
- オペアンプの出力をArduinoに接続
ステップ5:回路図2 - 圧電センサー回路(落下終了検出)
この回路は自由落下の終了時刻を検出します。ポイント:
- 4つの圧電センサーを回路図のように接続
- 各圧電センサーと並列に560Ω抵抗を接続し、衝撃時の電圧スパイクを抑制
- 圧電センサーの負極をグランドに接続
- 正極をArduinoのアナログ入力ピンに接続
ステップ6:組み立て
- 段ボールで屋根のような構造を作り、壁に約1.1mの高さで固定
- IRモジュールを段ボールの屋根に下向きで取り付け
- オペアンプの出力をArduinoのピン4に接続(1.2mワイヤー使用)
- ArduinoからIRモジュールへVCCとGNDを供給(残りの1.2mワイヤー)
- 圧電センサーモジュールをIRモジュールの真下の床に固定
- すべての配線とモジュールがしっかり固定されていることを確認
ステップ7:実験手順
- 落下させる物体の上部に薄い突起を取り付け(画像1参照)
- 物体を1mの高さで保持し、突起がIR送信機と受信機の間の光を遮るようにする(画像2参照)
- 外力を加えずに静かに手を離し、自由落下させる
- 落下中はIR光路が開くため、落下開始の信号が得られる
- 物体が圧電センサー着地ゾーンに触れると、制御された電圧スパイクが発生し、落下終了の信号が得られる
- 終了時刻から開始時刻を引いて落下時間を算出し、ステップ2の式でgを計算
ステップ8:Arduinoコード
実験用のArduinoコードを添付しています。コードはシンプルです。詳細な解説は動画(13分35秒頃)をご覧ください。
ステップ9:実験実行
実験前の注意点:
- 圧電センサーの閾値をArduinoコードで適切に設定する
- 圧電パネルをIRモジュールの真下に配置する
- 物体を1mの高さから外力を加えずに落とす
動画の17分頃で実験を行っています。得られた落下時間から地球の質量を計算します。
ステップ10:結果と地球の質量
3回実験を繰り返した結果、落下時間は以下の通りでした。
- 443 ms
- 443 ms
- 464 ms
平均落下時間 = 450 ms
この値を式に代入すると、重力加速度 g ≈ 9.8755 m/s² が得られます。
さらにこのgを用いて地球の質量を求めると:
M ≈ 6.0066 × 10²⁴ kg
Googleによる実際の地球の質量は 5.972 × 10²⁴ kg です。かなり近い値が得られました。
ご覧いただきありがとうございました。ご質問はコメント欄か動画でお気軽にどうぞ。
製造プロセス
- OpenSensorsで空気質を測定: ArduinoとPythonによるガイド
- Arduino MegaでPWM制御:プッシュボタン付きLEDフェード制御チュートリアル
- Arduinoで超音波レベーション(浮遊)装置を自作:ステップバイステップガイド
- Arduino UNOで周波数とデューティサイクルを高精度測定
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduino超音波センサーとProcessingで作るリアルタイム距離測定ソナー
- スマート駐車場カウンター:Arduino、Processing、PHPでリアルタイム車両管理
- MAX30100脈波センサーをArduinoで活用:ステップバイステップガイド
- YL-39/YL-69土壌湿度センサーをArduino UNOに接続するステップバイステップガイド
- PHPベースのWebインターフェースでArduino Unoを制御する構築ガイド
- 企業のデジタル成熟度を評価する:実証済みフレームワーク