-
아두이노 아날로그 신호 출력: PWMTechnology/Arduino 2023. 8. 18. 18:00
1. 아날로그 신호 출력
아두이노 하드웨어는 기본적으로 디지털 신호만 처리할 수 있기 때문에, 출력되는 신호 또한 디지털 신호 형태로 출력된다. 아두이노 하드웨어에서 아날로그 신호 또한 출력하기 위해, 아날로그 신호와 유사한 효과를 내는 펄스 폭 변조(Pulse Width Modulation, PWM) 신호를 만들어 출력한다. PWM 신호 또한 기본적으로 디지털 신호이기 때문에 디지털 입출력핀을 통해서 출력할 수 있지만, 모든 핀에서 PWM 신호를 출력하는 것은 아니다. PWM 신호를 출력할 수 있는 디지털 입출력핀은 핀 번호 앞에 물결 표시가 되어 있으니, PWM 신호를 출력하고자 한다면 해당 디지털 입출력 핀들을 이용하도록 하자.
2. PWM
PWM 신호는 디지털 신호 1과 디지털 신호 0으로 만들어지는 펄스의 폭을 적절하게 조절함으로써 아날로그 신호를 모사한다. 펄스의 한 주기에서 디지털 신호 1이 출력되는 시간의 비율인 듀티 사이클(duty cycle)로 아날로그 신호의 크기를 조절한다. 예를 들어, 듀티 사이클이 25%인 경우에는 아날로그 신호 1.25V가, 50%인 경우에는 2.5V가, 75%인 경우에는 아날로그 신호 3.75V가 출력된다.
PWM을 구현하기 위해서는 원하는 아날로그 신호에 맞게 듀티 사이클을 조절하는 알고리즘을 작성해야 한다. 하지만 아두이노 플랫폼에서 PWM 함수를 지원하고 있어, 사용자가 PWM 신호를 직접 구현할 필요가 없다. 이때 PWM 함수에 입력할 수 있는 값은 8비트로 표현할 수 있는 정수로, 0과 255 사이의 정수를 함수에 입력하면 전압 0V와 전압 5V 사이의 아날로그 신호를 출력할 수 있다. 즉, 정수 255를 입력하면 전압 5V를, 정수 0을 입력하면 전압 0V를 출력할 수 있으며, 정수 1당 약 19.6mV에 해당한다. 전압값에 해당하는 정수를 알고 싶다면 아래와 같은 식을 이용해 계산할 수 있다.
3. 예제
3.1. 회로 구성
3.2. 프로그램 작성
void setup() { pinMode(11, OUTPUT); // 디지털 입출력 11번 핀을 출력(OUTPUT) 모드로 설정 } void loop() { for (int i = 1; i <= 255; i++) // 10ms 간격으로 점점 밝아짐 { analogWrite(11, i); // 디지털 11번 핀에 PWM 아날로그 신호 i 출력 delay(10); // 10 ms 대기 } for (int i = 254; i >= 0; i--) // 10ms 간격으로 점점 어두워짐 { analogWrite(11, i); // 디지털 11번 핀에 PWM 아날로그 신호 i 출력 delay(10); // 10 ms 대기 } }
[함께 읽으면 좋은 페이지]
참고문헌
- 최훈. (2022). 팅커캐드 & 아두이노. 길벗캠퍼스.
반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 프로젝트 | 밝기 조절이 가능한 스탠드 (0) 2023.09.01 아두이노 | 가변저항 (0) 2023.08.25 아두이노 프로젝트 | 어두우면 켜지는 가로등 (0) 2023.08.11 아두이노 아날로그 신호 입력 | 조도센서 (0) 2023.08.04 아두이노 디지털 신호 입력 | 택트 스위치 (0) 2023.07.28