[아두이노] 아날로그 입력으로 전압값 읽기

analogRead() 입력을 전압값으로 변환하기

아두이노의 아날로그 A0 핀에 입력으로 들어오는 전압값을 아두이노 IDE 시리얼 모니터로 출력해 보겠습니다. 필요한 항목은 아두이노 우노 보드와 10KΩ 가변저항입니다.

사용하는 가변저항에 맞게 배선을 합니다. 가변저항에 인가된 아두이노의 5V전압은 가변저항의 출력핀을 통해 0~5V의 전압이 출력됩니다. 가변저항을 거쳐 A0핀을 통해 인가된 5V전압은 아두이노 내부 ADC(analog-digital-converter) 회로에 의해 0~1023 사이의 정수값으로 변환됩니다. 이 값은 analogRead() 함수를 통해 접근할 수 있으며, 적절한 수식을 통해 다시 전압값으로 변환해서 시리얼 모니터로 출력하려 합니다.

사용된 전체 코드는 아래와 같습니다.

void setup() {
    // 시리얼 통신 설정
    Serial.begin(9600);
}

void loop() {
    // A0를 핀을 통한 아날로그 값 받기 (0~1023 사이 정수)
    int sensorValue = analogRead(A0);

    // 0~1023 사이 정수 값을 (0~5V의 전압 값으로 다시 변환
    float voltage = sensorValue * (5.0 / 1023.0);
  
    // 아두이노 IDE 시리얼 모니터로 출력
    Serial.println(voltage);
}


코드해석

우선 아래 코드로 시리얼 통신을 위한 설정을 합니다. 통신 속도는 9600bps입니다.

Serial.begin(9600);

그 다음, 메인 루프에서 아날로그 입력핀 A0를 통해 가변저항의 값을 변수로 저장합니다.

int sensorValue = analogRead(A0);

전압값을 저장할 변수, 가변저항의 값을 다시 변환할 약간의 수식이 필요합니다.

float voltage= sensorValue * (5.0 / 1023.0);

이렇게 구해진 전압값을 아두이노 IDE 시리얼 모니터(단축키 Ctrl+Shift+M)로 확인할 수 있도록 시리얼 출력을 합니다.

Serial.println(voltage)

가변저항을 돌리면 변화하는 전압값을 시리얼 모니터로 볼 수 있게 되었습니다.

끝.

댓글

이 블로그의 인기 게시물

[PLC] PLC 아날로그 입출력 기본

NPN, PNP 트랜지스터 차이점

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

커패시터에 저장된 에너지 계산

3선 결선식 센서의 타입 PNP, NPN

제너 다이오드에 저항을 연결하는 이유

3상 모터 전력에서 전류 계산하기 (How to Convert Three-Phase Power to Amps)

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

[공압밸브] 5포트 2웨이 & 4포트 2웨이, 단동 VS 복동 차이점

공압 속도 제어: 미터인 vs 미터아웃