아두이노:전압계 만들기
둘러보기로 이동
검색으로 이동
아두이노 관련 정보를 모으기 위한 틀. 틀:아두이노
- 아두이노:개요
- 아두이노:하드웨어
- 아두이노:코드
- 아두이노:핀 사용
- 아두이노:시리얼 통신
- 아두이노:편의함수
- 센서 사용
- 아두이노:LCD 사용
- 아두이노:스위치 사용
- 아두이노:릴레이
- 통신 관련, 정보 교환
- 아두이노:해결되지 않은 다양한 의문들
- 수업용 간단 실습
- 아두이노 모터 출력
- 미완문서
- 분류:아두이노 프로젝트
개요[편집 | 원본 편집]
전압계 만들기. 볼트미터! voltmeter.
원리[편집 | 원본 편집]
| 아두이노 특성 | 확인 | 비고 |
|---|---|---|
| 아두이노의 아날로그 핀은 전압에 따라 0~1023의 총 1024개 값을 반환한다.(전압은 0부터 5V까지. 역전압은 인식 불가.) | 연결 예시
const int analogPin = A0;
void setup() {
Serial.begin(9600); // 시리얼 통신 시작
}
void loop() {
int adcValue = analogRead(analogPin); // 0~1023 Analog-to-Digital Converter의 약자.
float voltage = adcValue * (5.0 / 1023.0); // 실제 전압으로 변환
Serial.print("ADC Value: ");
Serial.print(adcValue);
Serial.print(" → Voltage: ");
Serial.print(voltage, 2); // 소수 둘째 자리까지 출력
Serial.println(" V");
delay(1000); // 1초마다 갱신
}
|
가변저항(potentiometer)의 원리
|
| 아두이노가 읽을 수 있는 전압은 5V까지이기에, 저항들을 직렬연결하여 전압 분배법칙을 통해 정리한다. | 보통 다음과 같이 연결.
(Vin) ----[ R1 ]----+----[ R2 ]---- GND (병렬연결) | A0 (아날로그 입력)
|
간이 전압계 만들기[편집 | 원본 편집]
영상메뉴얼[편집 | 원본 편집]

회로구성[편집 | 원본 편집]
- 측정하고자 하는 전압공급원의 -극은 GND와 연결시키고, +극을 통해 제공되는 전압을 측정하자.
- 측정하고자 하는 전압이 5V보다 낮다면 곧바로 아날로그핀으로 넣어주면 된다.
- 측정하고자 하는 전압이 5V보다 크다면 전압 강하와 저항비를 이용하여 저항의 중간에서 나오는 전압을 아날로그핀으로 측정한다.

5V 이상인 경우, 연결은 이렇게!
코드[편집 | 원본 편집]
const int analogPin = A0;
const float R1 = 20000;
const float R2 = 20000;
void setup() {
Serial.begin(9600);
}
void loop() {
int raw = analogRead(analogPin);
float va0 = raw * (5.0 / 1023.0); // 아날로그 핀 전압. .0을 넣어준 것은 정수가 아니라, 실수로 만들기 위해.
float vtotal = va0 * (R1 + R2) / R2; // 원래 입력 전압 계산
Serial.print("Raw: ");
Serial.print(raw);
Serial.print(" V_a0: ");
Serial.print(va0);
Serial.print(" Measured Voltage: ");
Serial.print(vtotal, 2); // 소수점 2자리
Serial.println(" V");
delay(1000);
}
유의사항[편집 | 원본 편집]
- A0 단자와 연결한 선을 배터리의 +극과 -극에 연결해도 정확한 전압이 측정되지 않는다. 떠 있는 상태(floating)로, 외부 교란이 섞인다. ==>> 전지의 -단자가 아두이노의 GND에 연결되게끔 구성.
- 절대로 A0 단자에 5V 이상의 입력이 들어가게 하면 안된다. 파손...
오차[편집 | 원본 편집]
| 오차 원인 | 상세 내용 | 해결법 및 완화책 |
|---|---|---|
| ADC 해상도 제한 | 10bit로 미세 변화 감지 한계 | 고해상도 ADC 모듈 사용 |
| 기준 전압 불안정 | 5V가 정확하지 않음(구동전압 자체가 5V가 아닌 경우) | 외부 정밀 기준 전압 사용 |
| 저항 오차 | 저항 공차에 따른 측정 오차 | 정밀 저항(±1% 이하) 사용 |
| 전기 잡음 및 간섭 | 주변 노이즈로 인한 신호 왜곡 | 차폐, 필터링, 풀다운 저항 사용 |
| 접촉 불량 | 배선 불량, 납땜 불량 | 배선 점검, 신뢰성 높은 연결 |
| 코드 및 연산 오차 | 반올림, 샘플링 간격 문제 | 코드 최적화 및 평균값 처리 |
| 환경 온도 영향 | 온도 변화에 따른 부품 특성 변화 | 온도 보상 회로 또는 보정 |
생각해볼 만한 것[편집 | 원본 편집]
- 최대로 측정할 수 있는 전압은 어느 정도일까?
- 일 때가 최대이므로, 인데, 10kΩ과 100kΩ 을 쓴다면 55V도 가능하지만, 20V 정도가 어느 정도 정밀도가 확보된 측정에 적절하지 않을지.
해 볼 만한 활동[편집 | 원본 편집]
- 오차의 원인 살펴보기.(생각보다 꽤 많음)
- 같은 저항이라도 R_1, R_2에 몇 개를 연결하느냐에 따라 저항비가 달라진다. 조합을 통해 측정 가능 전압의 범위를 넓혀보자.(누가 가장 큰 전압을 측정하는 전압계를 만들었을까?)
- 전지의 병렬, 직렬연결 후 뿜어내는 전압을 측정.
- 시판되는 멀티미터에서 측정되는 값과 비교하는 것도 재미있다.
Idea[편집 | 원본 편집]
- 저항계 만들때 떠올린 건데, R_1를 가변저항으로 만들고 R_2를 작은 저항으로 두어 상황에 따라 바꾸어 사용하면 쓸만할듯?(혹은 둘 다 가변저항으로 두든가. 가변저항값을 측정해서 반영하게끔)
- 이걸 이용해서 LED에 최대 입력 가능 전압 띄워보고...
- 전지의 직렬, 병렬연결 등 확인해보면 재미있을듯.