아두이노:저항계 만들기
보이기
아두이노 관련 정보를 모으기 위한 틀. 틀:아두이노
- 아두이노:개요
- 아두이노:하드웨어
- 아두이노:코드
- 아두이노:핀 사용
- 아두이노:시리얼 통신
- 아두이노:편의함수
- 센서 사용
- 아두이노:LCD 사용
- 아두이노:스위치 사용
- 아두이노:릴레이
- 통신 관련, 정보 교환
- 아두이노:해결되지 않은 다양한 의문들
- 수업용 간단 실습
- 아두이노 모터 출력
- 미완문서
- 분류:아두이노 프로젝트
개요
아두이노로 저항계 만들기. 오옴미터(Ohmmeter). 옴미터 만들기에 관한 문서.
원리
| 원리 | 설명 | 비고 |
|---|---|---|
| 아두이노 아날로그 핀 |
|
|
| 전압 분배 법칙 |
|
전압값을 이용해 저항값을 유도하는 방식. 옴의 법칙과 전압 분배 공식 사용. |
| 회로 구성 |
(Vin=5V) ----[ R_known ]----+----[ R_unknown ]---- GND (병렬연결) | A0 핀에서 읽는 전압 |
실제로는 R_known = 10kΩ 정도를 많이 사용. |
| 계산식 유도 |
|
아두이노가 읽은 전압으로 R_unknown을 계산할 수 있음. |
| 주의사항 | R_unknown이 너무 작으면 전류가 많이 흐르고, 너무 크면 오차가 커짐.
⇒ R_known과 R_unknown이 같은 크기일 때 가장 정확함. |
10kΩ:10kΩ 또는 10kΩ:100kΩ 정도에서 안정적으로 동작. |
최종 코드
const int analogPin = A0;
const float Vin = 5.0; // 입력 전압
const float R_known = 10000.0; // 기준 저항 10kΩ
void setup() {
Serial.begin(9600);
}
void loop() {
int raw = analogRead(analogPin);
float Vout = raw * (Vin / 1023.0); // A0에서 읽은 전압
float R_unknown = R_known * (Vout / (Vin - Vout)); // 공식 적용
Serial.print("Raw: ");
Serial.print(raw);
Serial.print(" Vout: ");
Serial.print(Vout, 2);
Serial.print(" V Measured Resistance: ");
Serial.print(R_unknown);
Serial.println(" ohms");
delay(1000);
}
유의사항
- R_unknown의 한쪽은 반드시 아두이노 GND에 연결되어야 정확한 측정 가능.
- A0 핀에 직접 전압을 넣지 않고 반드시 전압 분배 회로를 사용해야 함.
- 아두이노의 전원(5V)이 정확하지 않으면 결과 오차가 생김.
- 측정할 수 있는 저항 범위는 보통 수백Ω ~ 수백kΩ 정도가 적당.
- 저항값이 너무 작으면 발열 및 회로 손상 위험이 있음.
오차
| 오차 원인 | 상세 내용 | 해결법 및 완화책 |
|---|---|---|
| ADC 해상도 제한 | 10bit(1024단계)로는 정밀한 변화 감지가 어려움 | 고해상도 외부 ADC 사용 또는 평균값 처리 |
| Vin 전압 불안정 | 5V 기준이 흔들리면 R_unknown 계산도 흔들림 | 정밀 레퍼런스 전압 사용 |
| R_known의 공차 | 저항이 표기값과 다를 수 있음(예: ±5%) | 정밀 저항(±1% 이하) 사용 |
| 노이즈/잡음 | 아날로그 측정값에 간섭 발생 | 커패시터, 풀다운 저항, 평균화 사용 |
| 코드상 반올림 오차 | 실수 처리 중 소수점 계산 손실 | float 대신 double, 또는 정밀 처리 |
생각해볼 만한 것
- R_known 값을 바꿔가며 어떤 저항 범위에서 가장 정확하게 측정되는지 실험해보자.
- 여러 개의 고정 저항을 토글 스위치로 전환해가며 범위를 바꾸는 ‘자동 스케일 저항계’를 만들어볼 수 있다.
- 상용 멀티미터와 비교하여 오차율을 분석해보자.
- 블루투스나 OLED, LCD에 측정값을 출력하는 것도 재미있는 확장 프로젝트다.
해 볼 만한 활동
- 실제 전자 부품(LED, 가변저항, 센서 등)의 내부 저항을 측정해보자.
- 여러 개의 저항을 직렬/병렬로 연결하고 계산값과 측정값을 비교해보자.
- 물에 녹인 소금물이나 연필심의 저항을 측정해보고 전도도 실험에 활용해보자.
- 아두이노와 컴퓨터를 연결하지 않고 입력장치를 통해 숫자를 입력하고 LCD를 통해 나타내는 프로젝트.
Idea
- 가변저항값을 아날로그 단자로 읽을 수 있으니, 여기에서 저항값을 조절하여 저항계를 만든다면? 상황에 따라 다양한 저항을 쓰는 저항계가 될 수 있을듯?