-
아두이노 아날로그 신호 입력 | 조도센서Technology/Arduino 2023. 8. 4. 18:00
1. 아날로그 신호 입력
아두이노 하드웨어는 기본적으로 디지털 신호만을 입력 받고 출력하기 때문에, 아날로그 신호를 이진법을 이용한 디지털 신호로 변환해야 입력 받을 수 있다. 이를 위해 아두이노 하드웨어는 아날로그 신호를 입력 받는 전용 핀과 아날로그 신호를 이진법을 이용한 디지털 신호로 변환하는 아날로그 디지털 변환기(Analog-Digital Converter, ADC)를 탑재하고 있다. 아두이노 소프트웨어에서 아날로그 신호를 받을 핀을 설정하고 함수를 작성하여 아두이노 하드웨어에 업로드하면, 앞서 설정한 핀을 통해 아날로그 신호를 디지털 신호로 변환하여 입력 받을 수 있다.
입력 받은 아날로그 신호는 전압값에 따라 이진법으로 표현된 디지털 신호로 인식하는데, 10비트 ADC를 지원하는 아두이노 하드웨어는 전압 0V와 전압 5V 사이의 아날로그 신호를 0과 1023 사이의 정수로 인식한다. 즉, 전압 5V는 정수 1023으로, 전압 0V는 정수 0으로 인식하며, 정수 1당 약 4.9mV에 해당한다. 정수에 해당하는 전압값을 알고 싶다면 아래와 같은 식을 이용해 계산할 수 있다.
2. 조도센서
조도센서는 빛의 밝기에 따라 저항값이 바뀌는 황화카드뮴(Cadmium Sulfide, CdS)을 넣어 만든 센서이다. 빛이 강하면 저항값이 작아지고, 빛이 약하면 저항값이 커지는 특성을 가지고 있으며, LED와는 다르게 극성을 가지고 있지 않아 극성을 구분할 필요가 없다. 조도센서는 아래 링크로 접속하면 구매할 수 있다.
3. 예제
3.1. 회로 구성
조도센서와 직렬 연결하여 사용하는 저항의 저항값에 따라 조도센서를 통해 읽는 아날로그 값이 달라진다. 하지만 어떤 저항값을 가진 저항을 사용하더라도, 아래와 같이 회로를 구성하였다면 어두운 환경에서 아날로그 값이 증가하고 밝은 환경에서 아날로그 값이 감소하는 경향은 동일하게 나타난다. 본 예시에서는 220Ω 저항을 사용하였지만, 다른 저항값을 가진 저항을 사용하여도 괜찮다.
3.2. 프로그램 작성
int value = 0; // 정수형 변수 선언 후 0으로 초기화 float voltage = 0; // 실수형 변수 선언 후 0으로 초기화 void setup() { pinMode(A0, INPUT); // 아날로그 입력 A0번 핀을 입력(INPUT) 모드로 설정 Serial.begin(9600); // 시리얼 통신 시작 (통신 속도: 9600 bps) } void loop() { // 아날로그 입력 A0번 핀으로부터 아날로그 신호를 입력 받은 후 변수에 저장 value = analogRead(A0); // 아날로그 값에 해당하는 전압을 연산한 후 변수에 저장 voltage = 5.0 / 1023 * value; Serial.print("ADC Value: "); // 시리얼 모니터에 문자열 출력 Serial.print(value); // 시리얼 모니터에 변수에 저장된 값을 출력 Serial.print(" / Voltage: "); Serial.println(voltage); // 시리얼 모니터에 변수에 저장된 값을 출력한 뒤 줄 바꿈 delay(500); // 500 ms 대기 }
[함께 읽으면 좋은 페이지]
반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 아날로그 신호 출력: PWM (0) 2023.08.18 아두이노 프로젝트 | 어두우면 켜지는 가로등 (0) 2023.08.11 아두이노 디지털 신호 입력 | 택트 스위치 (0) 2023.07.28 아두이노 프로젝트 | 신호등 (0) 2023.07.21 아두이노 디지털 신호 출력 | LED (0) 2023.07.14