아두이노 - 가변 저항기 | Arduino - Potentiometer

이 튜토리얼에서는 다음을 배우게 됩니다:

준비물

1×Arduino Uno Amazon
1×USB 2.0 cable type A/B 쿠팡 | Amazon
1×Potentiometer Amazon
1×Breadboard 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Optional) 9V Power Adapter for Arduino Amazon
1×(Recommended) Screw Terminal Block Shield for Arduino Uno 쿠팡 | Amazon
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

포텐쇼미터에 대하여

회전형 포텐쇼미터(또는 회전 각도 센서라고 함)는 어떤 것의 값을 수동으로 조정하는 데 사용됩니다(예: 스테레오의 볼륨, 램프의 밝기, 오실로스코프의 줌 레벨...).

Potentiometer Pinout

핀배열

포텐쇼미터는 보통 3개의 핀을 가지고 있습니다:

  • GND 핀: GND(0V)에 연결해야 합니다.
  • VCC 핀: VCC(5V 또는 3.3v)에 연결해야 합니다.
  • 출력 핀: 아두이노의 입력 핀에 전압을 출력합니다.
Potentiometer Pinout

※ NOTE THAT:

GND 핀과 VCC 핀은 교환 가능합니다.

작동 원리

포텐시오미터의 축은 0°(GND와 가장 가까운 지점)부터 상한 각도(VCC 핀과 가장 가까운 지점)까지 회전할 수 있으며, 이 상한 각도를 ANGLE_MAX라고 합니다.

출력 핀의 전압은 GND의 전압부터 VCC의 전압까지 변합니다. 출력 전압은 축의 회전 각도에 직접 비례합니다.

  • 각도가 0°이면 출력 핀의 전압은 0V입니다.
  • 각도가 ANGLE_MAX이면 출력 핀의 전압은 VCC의 전압입니다.
  • 각도가 0°와 ANGLE_MAX 사이인 경우, 출력 전압 = 각도 × VCC / ANGLE_MAX입니다.

※ NOTE THAT:

ANGLE_MAX 값은 제조사에 따라 달라집니다. 실제로 우리는 ANGLE_MAX의 값에 대해 일반적으로 관심을 가지지 않습니다, 회전된 각도를 계산해야 할 때를 제외하고는요(사용 사례 부분 참조).

How Potentiometer Works

아두이노 - 로터리 포텐쇼미터

아두이노의 A0에서 A5 핀은 아날로그 입력으로 작동할 수 있습니다. 아날로그 입력 핀은 전압(0v와 VCC 사이)을 정수 값(0에서 1023 사이)으로 변환하는데, 이를 ADC 값 또는 아날로그 값이라고 합니다.

포텐쇼미터의 출력 핀을 아날로그 입력 핀에 연결함으로써, 핀에서 아날로그 값을 읽고 이를 의미 있는 값으로 변환할 수 있습니다.

아두이노가 얻는 값은 각도도 아니고 전압도 아닙니다. 그것은 0부터 1023까지의 정수 값입니다.

아날로그 입력 핀에서 정수 값을 얻은 후, 이 값을 다른 값으로 재조정합니다. 사용 사례를 살펴봅시다.

사용 사례

  • 전위차계의 각도로 재조정합니다.
  • 전위차계의 전압으로 재조정합니다.
  • 제어 가능한 값으로 재조정합니다(예: 스테레오의 볼륨, 밝기, 직류 모터의 속도...). 이것은 가장 일반적으로 사용되는 경우입니다.

범위 재조정

FROM TO
Anglerotated by userANGLE_MAX
Voltagefrom potentiometer's pin 0VVCC
ADC valueread by Arduino 01023
Other valueconverted by Arduino VALUE_MINVALUE_MAX

선연결

Arduino Potentiometer Wiring Diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

포텐쇼미터를 위한 프로그래밍 방법

analogRead() 함수를 사용하여 포텐쇼미터의 출력 핀에 연결된 입력 핀에서 값을 읽습니다.

analogValue = analogRead(A0);
  • map() 함수를 사용하여 포텐시오미터의 각도에 맞게 재조정하세요.
angle = map(analogValue, 0, 1023, 0, ANGLE_MAX);

포텐쇼미터의 전압에 맞게 재조정하십시오.

voltage = map(analogValue, 0, 1023, 0, VCC);

제어 가능한 값으로 재조정하기 (예: 스테레오의 볼륨, 밝기, 직류 모터의 속도 등)

value = map(analogValue, 0, 1023, VALUE_MIN, VALUE_MAX);

예를 들어, LED의 밝기에 맞게 재조정하는 것입니다. 이 튜토리얼에서 언급했듯이, LED의 밝기는 PWM 값으로 제어할 수 있습니다. 0(항상 꺼짐)에서 255(항상 켜짐)까지입니다. 그러므로, 아날로그 값을 LED의 밝기에 매핑할 수 있습니다(꺼진 상태에서 가장 밝은 상태까지) 다음과 같이:

brightness = map(analogValue, 0, 1023, 0, 255);

밤에 사용하는 조명부터 가장 밝은 빛까지 LED의 밝기를 조절하고 싶다면,

nightlight = 100; brightness = map(analogValue, 0, 1023, nightlight , 255);

※ NOTE THAT:

map() 함수는 아날로그 값을 int 또는 long 타입 값으로 재조정하는 데만 사용될 수 있습니다. 제어 가능한 값이 float 타입인 경우, map() 함수 대신 floatMap() 함수를 사용해야 합니다.

floatMap() 함수:

float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; }

아두이노 코드

/* * 이 Arduino 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-potentiometer */ float floatMap(float x, float in_min, float in_max, float out_min, float out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; } // 설정 루틴은 리셋을 누를 때 한 번 실행됩니다: void setup() { // 초당 9600비트 속도로 직렬 통신을 시작합니다: Serial.begin(9600); } // 루프 루틴은 계속해서 반복 실행됩니다: void loop() { // 아날로그 핀 A0에서 입력을 읽습니다: int analogValue = analogRead(A0); // 전위차계의 전압(0V에서 5V까지)으로 재조정합니다: float voltage = floatMap(analogValue, 0, 1023, 0, 5); // 읽은 값을 출력합니다: Serial.print("Analog: "); Serial.print(analogValue); Serial.print(", Voltage: "); Serial.println(voltage); delay(1000); }

사용 방법

  • 위의 코드를 복사하고 Arduino IDE로 열기
  • Arduino IDE에서 Upload 버튼을 클릭하여 아두이노에 코드를 업로드하기
Arduino IDE Upload Code
  • 시리얼 모니터 열기
  • 포텐쇼미터를 돌리세요
  • 시리얼 모니터에서 결과를 확인하세요
COM6
Send
Analog: 0, Voltage: 0.00 Analog: 0, Voltage: 0.00 Analog: 126, Voltage: 0.62 Analog: 281, Voltage: 1.37 Analog: 517, Voltage: 2.53 Analog: 754, Voltage: 3.69 Analog: 906, Voltage: 4.43 Analog: 1023, Voltage: 5.00 Analog: 1023, Voltage: 5.00
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

도전해보세요

다음 프로젝트 중 하나를 수행하기 위해 가변 저항을 사용하세요:

추가 지식

GND 핀과 VCC 핀은 서로 바꿀 수 있습니다. 이 두 핀에 관한 정해진 규칙이 없습니다. 만약 한 핀을 GND 핀으로 선택한다면, 다른 하나는 VCC 핀이 됩니다. 유의해야 할 단 하나의 사항이 있습니다. 이 핀들을 서로 바꿀 때, 출력 핀에서의 전압 값이 반대로 됩니다.

함수 참조

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!