산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

아두이노로 지구 질량 측정하기: 단계별 DIY 가이드

부품 및 소모품

부품 수량
아두이노 우노 1
USB-A to B 케이블 1
560옴 저항 4
100옴 저항 2
압전 센서 4
IR 송신기 (일반) 1
IR 수신기 (일반) 1
회전 포텐셔미터 (일반) 1
오피앰프 UA741C 1
브레드보드 (일반) 1
1.2m 길이 전선 3
범용 PCB 1
테이프 1
골판지 시트 1

앱 및 온라인 서비스

프로젝트 소개

소개

어느 날 체중계 위에 올라섰을 때 문득 이런 생각이 들었습니다. "지구의 질량은 얼마나 될까?" 지구를 올려놓을 체중계는 없으니, 간접적인 방법으로 지구 질량을 측정해야 합니다. 여기서는 아두이노와 몇 가지 센서를 이용해 지구 질량을 측정하는 한 가지 간접 측정 방법을 구현해 보겠습니다.

1단계: 간접 측정 원리

19세기 초 과학자들은 뉴턴의 제2법칙(F = ma)과 만유인력 법칙(F = GmM/r²)을 결합해 지구 질량을 구했습니다. 여기서 m은 물체 질량, a는 가속도, G는 중력 상수, M은 지구 질량, r은 지구 반지름입니다. 가속도 a 자리에 중력 가속도 g를 대입하면:

mg = GmM/r²

이를 지구 질량 M에 대해 풀면:

M = gr²/G

G와 r 값은 알려진 상수를 사용하고, 중력 가속도 g를 실험으로 구한 뒤 공식에 대입해 지구 질량을 계산합니다.

2단계: 실험 개요

(수식이 조금 나옵니다만, 곧 아두이노가 등장합니다)

중력 가속도 g를 구하려면 '자유 낙하'를 이해해야 합니다. 자유 낙하는 중력만 작용해 물체가 지구 쪽으로 떨어지는 운동입니다. 이를 특징짓는 요소들은 다음과 같습니다.

뉴턴의 운동 방정식 중 하나인 이동 거리 = (초기 속도 × 비행 시간) + (가속도 × 비행 시간²)/2를 사용합니다. 4개 변수 중 3개를 알면 나머지 1개를 구할 수 있습니다.

우리는 두 변수를 고정합니다:

이제 미지수는 가속도(g)와 비행 시간뿐입니다. 아두이노와 센서로 비행 시간을 측정하면 g를 구할 수 있습니다. 비행 시간 측정을 위해 낙하 시작과 끝, 두 시점의 타임스탬프가 필요합니다. 이에 대한 회로는 4단계와 5단계에서 설명합니다.

고정된 값을 방정식에 대입하면:

1 = g × (비행 시간)² / 2

따라서 g = 2 / (비행 시간)²

3단계: 필요한 물품

위 부품 목록과 동일합니다. 회로도 이미지를 참고하세요.

4단계: 회로도 1 - IR 회로 (낙하 시작 감지)

이 회로는 자유 낙하 시작 시점을 기록합니다. 주요 포인트:

5단계: 회로도 2 - 압전 센서 회로 (낙하 끝 감지)

이 회로는 자유 낙하 종료 시점을 기록합니다. 주요 포인트:

6단계: 조립하기

7단계: 실험 절차

모든 준비가 끝났다면(아두이노 코드는 8단계), 실험을 진행합니다.

  1. 낙하 물체 위에 얇은 돌출부를 붙입니다(이미지 1 참조).
  2. 물체를 1m 지점에서 잡고, 돌출부가 IR 송수신기 사이 빛을 차단하도록 합니다(이미지 2).
  3. 외부 힘 없이 물체를 놓아 자유 낙하시킵니다.
  4. 물체가 떨어지면서 IR 빛이 다시 통하면, 이것이 낙하 시작 타임스탬프가 됩니다.
  5. 물체가 착지 구역(압전 센서)에 닿으면 압전 센서가 전압 스파이크를 내며 낙하 종료 타임스탬프를 알립니다.
  6. 종료 시간에서 시작 시간을 빼면 비행 시간을 얻고, 앞서 본 공식으로 g를 계산합니다.

8단계: 아두이노 코드

실험용 아두이노 코드입니다. 코드는 단순하며, 상세 설명은 영상(13분 35초)을 참고하세요.

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단계: 결과 및 지구 질량 계산

3회 반복 실험 결과(비행 시간):

평균 비행 시간 = 450 ms

이를 g = 2 / (0.45)² 공식에 대입하면 g ≈ 9.8755 m/s²

최종적으로 M = gr²/G에 대입하면 지구 질량 ≈ 6.0066 × 10²⁴ kg

구글 기준 실제 지구 질량은 5.972 × 10²⁴ kg로, 꽤 근접한 결과를 얻었습니다.

제조공정

  1. 아두이노와 파이썬으로 OpenSensors를 활용한 공기질 측정 가이드
  2. 아두이노 메가에서 푸시 버튼으로 PWM을 이용해 LED 밝기 제어하기
  3. 아두이노로 초음파 부양 장치 만들기: 단계별 가이드
  4. 아두이노 우노로 정밀 주파수 & 듀티 사이클 측정기 만들기
  5. 아두이노와 블루투스로 만드는 스마트 물건 찾기 'Find Me'
  6. 아두이노 소나 & 프로세싱으로 실시간 거리 측정 및 시각화
  7. 스마트 주차 카운터: 아두이노, 프로세싱, PHP로 실시간 차량 추적
  8. MAX30100 맥박 산소포화도 센서 아두이노 연동: 단계별 가이드
  9. YL-39/YL-69 토양 수분 센서를 아두이노 우노에 연결하는 단계별 가이드
  10. 회사 디지털 성숙도 평가: 검증된 프레임워크