Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Измерение массы Земли с Arduino: пошаговое руководство по DIY

Компоненты и расходники

Arduino UNO×1
USB-кабель (Type A — Type B)×1
Резистор 560 Ом×4
Резистор 100 Ом×2
Пьезоэлектрический датчик×4
ИК-передатчик (общего назначения)×1
ИК-приёмник (фотодиод, общего назначения)×1
Потенциометр (общего назначения)×1
Операционный усилитель UA741C×1
Макетная плата (breadboard)×1
Провода длиной 1,2 м×3
Печатная плата общего назначения (5×5 см)×1
Скотч×1
Лист картона×1

Программное обеспечение и онлайн-сервисы

О проекте

Введение

Однажды, взвешиваясь на весах, я подумал: «Какова масса Земли? И как её вообще можно измерить? Весов, на которых можно поставить планету, не существует. Значит, должен быть косвенный метод». Здесь я представлю реализацию одного такого метода.

Шаг 1: Косвенный метод

В начале XIX века учёные использовали второй закон Ньютона (F = ma) и закон всемирного тяготения (F = G·m·M / r²), где m — масса тела, a — ускорение, G — гравитационная постоянная, M — масса Земли, r — её радиус. Подставляя ускорение свободного падения g вместо a и объединяя уравнения, получаем:

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

Отсюда масса Земли:

M = (g·r²) / G

Предполагаем, что G и r известны. Остаётся экспериментально определить g с помощью Arduino и датчиков, а затем вычислить M.

Шаг 2: Обзор эксперимента

(немного математики — Arduino подключится скоро)

Для определения g используем свободное падение — движение тела только под действием гравитации. Ключевые параметры:

Уравнение Ньютона:

S = v₀·t + (a·t²)/2

Знаем три переменные: S = 1 м, v₀ = 0, измерим t с помощью Arduino. Тогда:

1 = (g·t²)/2 → g = 2 / t²

Arduino зафиксирует момент начала падения (ИК-барьер) и момент удара (пьезодатчики), их разница и есть t.

Шаг 3: Необходимые детали

Список приведён в таблице выше. Дополнительно: паяльник, клей-пистолет, отвёртка, мультиметр.

Шаг 4: Схема 1 — ИК-цепочка (старт отсчёта)

Когда падающий предмет перекрывает луч — фиксируется время старта.

Шаг 5: Схема 2 — Пьезоэлектрическая цепочка (конец отсчёта)

Удар о посадку генерирует импульс — фиксируется время окончания.

Шаг 6: Сборка установки

Шаг 7: Процедура эксперимента

  1. На верхушку падающего предмета клеим тонкий выступ (шпильку).
  2. Держим предмет на отметке 1 м так, чтобы выступ перекрывал ИК-луч.
  3. Отпускаем без начального толчка.
  4. В момент отпускания луч восстанавливается — Arduino запоминает startTime.
  5. При ударе о пьезопанель генерируется пик — Arduino запоминает endTime.
  6. timeOfFlight = endTime - startTime.

Шаг 8: Код для Arduino

const int sensorPin1 = A0;
const int sensorPin2 = A1;
const int sensorPin3 = A2;
const int sensorPin4 = A3;
const int photoPin = 4;
const int ledPin = 13;
const int threshold = 110;

char stringToPrint[100];
int startTime, endTime;
int val1, val2, val3, val4;

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  pinMode(sensorPin1, INPUT);
  pinMode(sensorPin2, INPUT);
  pinMode(sensorPin3, INPUT);
  pinMode(sensorPin4, INPUT);
  pinMode(photoPin, INPUT);
}

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

  while (start == LOW) {
    digitalWrite(ledPin, LOW);
    val1 = analogRead(sensorPin1);
    val2 = analogRead(sensorPin2);
    val3 = analogRead(sensorPin3);
    val4 = analogRead(sensorPin4);

    if ((val1 >= threshold) || (val2 >= threshold) || (val3 >= threshold) || (val4 >= threshold)) {
      endTime = millis();
      sprintf(stringToPrint, "%d ms", endTime - startTime);
      Serial.println(stringToPrint);
      digitalWrite(ledPin, HIGH);
      delay(1000);
      digitalWrite(ledPin, LOW);
      start = HIGH;
    }
  }
}

Шаг 9: Проведение эксперимента

Шаг 10: Результаты и масса Земли

Три замер времени полёта: 443 мс, 443 мс, 464 мс. Среднее: 450 мс.

Подставляем в формулу:

g = 2 / (0,45)² ≈ 9,8755 м/с²

Масса Земли:

M = (g·r²)/G ≈ 6,0066 × 10²⁴ кг

Справочное значение: 5,972 × 10²⁴ кг. Результат очень близок к реальности!

Производственный процесс

  1. Измерение качества воздуха с OpenSensors: руководство по Arduino и Python
  2. Управление яркостью LED с ШИМ через кнопку на Arduino Mega
  3. Создание ультразвукового левитатора на Arduino: пошаговое руководство
  4. Точное измерение частоты и коэффициента заполнения на Arduino UNO
  5. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  6. Измерение расстояния в реальном времени: Ардуино-сонар с визуализацией в Processing
  7. Умный счетчик парковки: Отслеживание машин в реальном времени (Arduino, Processing, PHP)
  8. Подключение датчика пульса MAX30100 к Arduino: Пошаговое руководство
  9. Пошаговое руководство: подключение датчика влаги почвы YL-39/YL-69 к Arduino UNO
  10. Оценка цифровой зрелости компании: проверенная методика