전압 읽기와 Arduino용 가변저항 다루기
이 튜토리얼에서는 Arduino와 가변 저항(포텐셔미터)을 사용하여 전압 값을 읽는 방법을 살펴보겠습니다. 이 프로젝트가 끝나면 아날로그 판독값을 전압 값으로 변환하는 방법과 전압 출력을 기반으로 가변 저항의 저항 값을 계산하는 방법까지 이해하게 될 것입니다. 이는 전압 레벨을 모니터링하고 제어해야 하는 다양한 응용 분야에서 유용합니다.

이 프로젝트에서는 Arduino를 사용하여 아날로그 입력 핀 중 하나에 연결된 가변 저항의 전압을 읽습니다. 가변 저항을 통해 전압을 변화시킬 수 있으며, 이를 읽을 수 있는 형식으로 변환하여 시리얼 모니터에 표시합니다. 또한, 전압 판독값을 기반으로 저항 값을 계산하는 기능을 추가하여 가변 저항이 Arduino와 어떻게 작동하는지에 대한 포괄적인 이해를 제공합니다.
단계 및 코드 구현에 대한 자세한 설명은 비디오(비디오 00:00 시점)를 확인하세요.
하드웨어 설명
이 프로젝트의 주요 구성 요소는 Arduino 보드와 가변 저항입니다. Arduino는 입력 신호를 읽고 출력을 쉽게 제어할 수 있는 마이크로컨트롤러 플랫폼입니다. 이 경우 가변 저항의 아날로그 전압을 읽습니다.
가변 저항은 와이퍼 위치에 따라 저항을 조정할 수 있는 가변 저항기입니다. 전압 소스에 연결되면 단자 양단의 전압을 분배하여 Arduino의 아날로그 입력으로 읽을 수 있는 가변 전압을 출력할 수 있습니다.
데이터시트 세부 정보
| 제조업체 | 다양함 |
|---|---|
| 부품 번호 | 가변 저항 |
| 저항 범위 | 0 – 1 MΩ |
| 정격 전력 | 0.1 W |
| 온도 범위 | -40 ~ 85 °C |
| 유형 | 선형 또는 로그형 |
- 잘못된 전압 판독을 방지하려면 가변 저항이 올바르게 연결되었는지 확인하세요.
- Arduino에 연결하기 전에 멀티미터를 사용하여 가변 저항의 저항 값을 확인하세요.
- 과열을 방지하려면 가변 저항을 정격 전력 내에서 사용하세요.
- 필요한 경우 적절한 디커플링 커패시터를 사용하여 판독값의 노이즈를 필터링하세요.
- 플로팅 입력에 주의하세요. 사용하지 않는 핀은 항상 접지에 연결하세요.
배선 지침

가변 저항을 Arduino에 배선하려면 먼저 가변 저항의 한쪽 끝을 Arduino의 5V 핀에 연결하고 다른 쪽 끝을 접지(GND) 핀에 연결합니다. 가변 저항의 중간 핀(와이퍼)은 Arduino의 아날로그 입력 핀 A0에 연결해야 합니다. 이 설정을 통해 Arduino는 가변 저항의 가변 전압 출력을 읽을 수 있습니다.

다른 아날로그 핀을 사용하는 경우 코드에서 해당 핀 번호를 업데이트해야 합니다. 예를 들어 와이퍼를 A1에 연결한 경우 코드를 변경하여 A0 대신 A1에서 읽어야 합니다.
코드 예제 및 설명
void setup() {
Serial.begin(9600); // 시리얼 통신 설정
}
void loop() {
int sensorValue = analogRead(A0); // A0에서 읽기
float voltage = sensorValue * (5.0 / 1023.0); // 전압으로 변환
Serial.print("Voltage ="); // "Voltage =" 텍스트 출력
Serial.print(voltage);
Serial.println();
delay(300);
}
이 코드 스니펫은 시리얼 통신을 초기화하고 핀 A0에서 아날로그 값을 지속적으로 읽습니다. 아날로그 판독값(0~1023)을 전압(0~5V)으로 변환하여 시리얼 모니터에 출력합니다.
float RT = 50000; // 가변 저항 값
float R; // 알 수 없는 R 값
void loop() {
int sensorValue = analogRead(A0); // A0에서 읽기
float voltage = sensorValue * (5.0 / 1023.0); // 전압으로 변환
R = (voltage * RT) / 5.0; // 저항 계산
Serial.print("Voltage ="); // "Voltage =" 텍스트 출력
Serial.print(voltage);
Serial.print("v R=");
Serial.print(R);
Serial.print(" ohms");
Serial.println();
delay(300);
}
이 두 번째 코드 스니펫은 첫 번째 코드를 기반으로 전압 판독값을 기반으로 저항 값을 계산하는 기능을 추가합니다. 가변 저항의 알려진 저항 값 RT를 사용하고 옴의 법칙에서 파생된 공식을 사용하여 알 수 없는 저항 R을 계산합니다.
시연 / 기대 효과
프로그램을 실행하면 가변 저항을 조정함에 따라 변경되는 전압 값이 시리얼 모니터에 출력되는 것을 확인할 수 있습니다. 출력에는 전압 판독값을 기반으로 계산된 저항 값도 표시됩니다. 극성이 반대로 연결되지 않도록 주의하세요. 잘못된 판독이나 구성 요소 손상이 발생할 수 있습니다(비디오 02:30 시점).
비디오 타임스탬프
- 00:00 - 프로젝트 소개
- 01:15 - 하드웨어 구성 요소 설명
- 02:30 - 배선 지침
- 03:45 - 코드 설명
- 05:00 - 실시간 시연
//Original source: https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
// This code is used with a video tutorial for RoboJax.com
// Published on April 24, 2017, from Ajax, ON, Canada.
// Written/Edited by A.B.S
// This Arduino code reads the value from an analog pin
void setup()
{
Serial.begin(9600); // setup serial
}
void loop(){
int sensorValue = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage = sensorValue * (5.0 / 1023.0);
// print out the value you read:
Serial.print("Voltage =");// prints the text "Voltage ="
Serial.print(voltage);
Serial.println();
delay(300);
}
</code>
<h2>Project 2 Finding the resistance value from the voltage</h2>
<pre><code class="cpp">
//Original source: https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
// Project: Finding the resistance value from the voltage
// This code is used with a video tutorial for RoboJax.com
// Published on April 24, 2017, from Ajax, ON, Canada.
// Written/Edited by A.B.S
float RT = 50000;// the potentiometer value
float R;// the unknown R value
void setup()
{
Serial.begin(9600); // setup serial
}
void loop(){
int sensorValue = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage = sensorValue * (5.0 / 1023.0);
// print out the value you read:
R = ( voltage * RT)/5.0;
Serial.print("Voltage =");// prints the text "Voltage ="
Serial.print(voltage);
Serial.print("v R=");
Serial.print(R);
Serial.print(" ohms");
Serial.println();
delay(300);
}
자원 및 참고자료
아직 자원이 없습니다.
파일📁
파일이 없습니다.