亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

用 Arduino 测量地球质量:DIY 分步指南

所需元件与材料

元件数量备注
Arduino UNO1主控板
USB-A 转 B 型数据线1供电与程序上传
560 Ω 电阻4压电传感器并联保护
100 Ω 电阻2IR 电路限流
压电传感器4检测落地冲击
IR 发射管(红外 LED)1起始计时触发
IR 接收管(光敏二极管)1起始计时触发
旋转电位器1比较器阈值调节
运放 UA741C1IR 信号比较整形
面包板1原型搭建
1.2 米导线3模块间连接
通用 PCB 板1IR 电路焊接
胶带1固定用
硬纸板1搭建释放平台

所需软件

项目原理

引言

某天我在体重秤上称重时突然想到:地球的质量是多少?显然无法直接把地球放上秤,必须用间接测量法。本项目实现了一种基于牛顿定律的间接测量方法。

间接测量法

19 世纪科学家利用牛顿第二定律 F = ma 和万有引力定律 F = G·m·M / r²(其中 m 为物体质量,a 为加速度,G 为引力常数,M 为地球质量,r 为地球半径)。令 a = g(重力加速度),联立得:

m·g = G·m·M / r² → M = g·r² / G

已知 G ≈ 6.674×10⁻¹¹ N·m²/kg²、r ≈ 6.371×10⁶ m,只需通过实验测得 g,即可反推地球质量 M。

实验概述

利用自由落体运动测定 g。自由落体仅受重力,初速度 v₀ = 0,下落距离 s = 1 m。根据位移公式:

s = v₀·t + ½·g·t² → 1 = ½·g·t² → g = 2 / t²

关键在于精确测量落体时间 t。需两个时刻戳:释放瞬间与触地瞬间。本项目分别用 IR 光栅与压电传感器获取这两个时刻,Arduino 计算时间差,进而求出 g 与 M。

硬件电路

电路 1:IR 起始计时模块

电路 2:压电触地检测模块

机械组装

  1. 用硬纸板搭建高约 1.1 m 的“屋顶”固定墙面
  2. IR 模块朝下固定于屋顶下沿
  3. 压电传感器平铺地面,正对 IR 模块下方
  4. 三根 1.2 m 导线分别连接 IR 模块的 VCC、GND、信号至 Arduino
  5. 所有部件用胶带、扎带牢固固定,防震动

实验步骤

  1. 在落体物体顶部粘贴薄挡板(约 5 mm 厚)
  2. 将物体托至 1 m 高度,挡板遮挡 IR 光路
  3. 松手释放,不施加额外推力
  4. 物体离开瞬间 IR 光路通,Arduino 记录 startTime
  5. 物体砸中压电传感器,产生电压尖峰,Arduino 记录 endTime
  6. timeOfFlight = endTime - startTime,代入公式计算 g 与 M

Arduino 代码

const int sensorPin[4] = {A0, A1, A2, A3};
const int photoPin = 4;
const int ledPin = 13;
const int threshold = 110;

int startTime, endTime;
int val[4];

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  for (int i = 0; i < 4; i++) pinMode(sensorPin[i], INPUT);
  pinMode(photoPin, INPUT);
}

void loop() {
  int start = digitalRead(photoPin);
  startTime = millis();
  if (start == HIGH) digitalWrite(ledPin, HIGH);

  while (start == LOW) {
    digitalWrite(ledPin, LOW);
    for (int i = 0; i < 4; i++) val[i] = analogRead(sensorPin[i]);
    if (val[0] >= threshold || val[1] >= threshold || val[2] >= threshold || val[3] >= threshold) {
      endTime = millis();
      Serial.print(endTime - startTime);
      Serial.println(" ms");
      digitalWrite(ledPin, HIGH);
      delay(1000);
      digitalWrite(ledPin, LOW);
      start = HIGH; // 退出 while
    }
  }
}

实验结果

三次测得飞行时间:443 ms、443 ms、464 ms,平均 450 ms。

g = 2 / (0.450)² ≈ 9.876 m/s²

M = g·r² / G ≈ 6.007×10²⁴ kg

谷歌标准值 5.972×10²⁴ kg,误差约 0.6%,结果相当接近!

原理图

文末附有 Fritzing 原理图与实物接线图,可按图焊接 PCB 或面包板搭建。

制造工艺

  1. 使用 OpenSensors 监测空气质量:Arduino 与 Python 实战指南
  2. Arduino Mega 按键 PWM 调光:三阶段渐变 LED 实战教程
  3. 用 Arduino 制作超声波悬浮装置:分步指南
  4. 基于Arduino UNO的精准频率与占空比测量
  5. Find Me:基于 Arduino 与蓝牙的智能寻物器制作指南
  6. Arduino 声纳实时测距与 Processing 可视化
  7. 智能停车计数系统:Arduino + Processing + PHP 实时车位追踪上云
  8. MAX30100脉搏血氧传感器与Arduino接入指南:获取PPG波形与SpO2
  9. 分步指南:将 YL-39/YL-69 土壤湿度传感器连接到 Arduino UNO
  10. 构建基于 PHP 的 Web 界面控制 Arduino Uno
  11. DIY Arduino 手柄方向盘 - 游戏竞速模拟器自制指南
  12. 企业数字化成熟度评估:科学框架与进阶路径