제 3 강 arduino로 아날로그 센서 입력 사용 (내용추가)
컴퓨터구조설계=11
목원대학교
2013. 1학기
강의내용
Ⅰ Arduino로 아날로그 센서
입력 사용(내용추가)
소개 1. 소개
- 아두이노에서 센서를 연결한다고 하는 말은 대부분이 아날로그 센서 연결을 말함 .
-거리측정, 온도측정, 무게(압력)측정 등이 보통 사용하는 센서 용도임.
: 거리가 있다없다, 온도가 있다없다, 무게가 있다없다가 아니라 거리가
얼마나 떨어져 있는지, 온도가 얼마나 되는지, 무게가 얼마나 되는지를 알려고 하는 것임
: “얼마”라는 값을 간단히 아날로그라고 함. 물리적량을 표현하는 방식
소개 1. 소개
- 디지털이란 무엇인가?
: “있다”,” 없다”의 값만 갖는 값을 말함. “0”과 “1”을 의미함.
: 0V를 “0”, 5V를 “1”이라고 판단한다고 보면 됨.
: 디지털에서는 1.5V의 값을 표현하지 못함. 1.5V정도면 “0”이 됨.
: 아날로그에서는 1.5V를 표현할 수 있음. 0V~5V 사이의 어느정도의 값인지의 물리량을 숫자로 표현할 수있음
: 예를 들면, 거리가 0m, 1m, 1.5m, 1.56m, …, 5m 등으로 표현할 수 있음
0~1023값 사이로 나오는 포트라고 보면됨. 물론 0V~5V가 입력되었을
경우임 .
2. 아두이노 아날로그 포트
- 아두이노는 6개의 아날로그 포트가 있음
- 다시말하면, 아날로그 센서를 동시에 6개까지 장착할 수 있다는
의미임
2.1 아날로그 포트
2. 아두이노 아날로그 포트
아두이노 아날로그 포트의 위치
- 위의 사진에서 빨간색으로 칠한 부분이 아날로그 포트임.
- 우측부터 0번 좌측이 5번까지 번호가 기입되어 있음.
2.1 아날로그 포트
2. 아두이노 아날로그 포트
(1) 아두이노의 아날로그 포트의 값 범위는 0~1023까지 표시 (2) 0은 0V에, 1023은 5V에 맵핑되어 있음
※ 수학 공식
value = 5V / 1024 = 0.0048828125V
수치 1에 해당하는 값 = 약 0.00488V
- 1씩 증가할 때마다 0.00488V씩 증가한다고 보면 됨
- 만약 센서에 0.00488V를 가하면 약 1이라는 숫자가 나옴.
3.1 아날로그 포트 실험 3. 아날로그 포트 실험
아두이노 아날로그 포트 실험
회로도
- 위의 그림과 같이 볼륨을 연결함. 볼륨의 값은 크게 상관 없지만 약 100k옴정도면 좋음.
- 볼륨의 양단 포트중 하나는 GND로 다른 하나는 5V로 연결함. 그리고, 가운데 포트는 아두이노의 Analog In 0번에 연결함.
볼륨
3.1 아날로그 포트 실험 3. 아날로그 포트 실험
소스 코드(1/2)
const int analogInPin = 0; // 현재 볼륨의 노란 선으로 연결된 Analogin 포트 번호 0번
int sensorValue = 0; //볼륨에서 들어오는 값을 받을 변수
void setup() {
// 시리얼통신으로 현재 아날로그 값을 뿌리기 위해 연결 설정 9600bps Serial.begin(9600)
}
void loop() {
//아날로그 핀 0번의 값 읽기
sensorValue = analogRead(analogInPin);
}
3.1 아날로그 포트 실험 3. 아날로그 포트 실험
소스 코드(2/2)
// 시리얼 포트로 현재 아날로그 값 표시하기 Serial.print(“sensor = ”);
Serial.print(sensorValue);
Serial.print(“\t output = ”);
//다음 아날로그 값을 읽기 위해 10미리초 대기, delay값이 너무 빠르면 아날로그 값이 잘 읽히지 않음
delay(10);
}
- Delay값으로 10미리초를 주는 이유는 analogRead를 너무 빠르게 호출하면 현재의 아날로그 값이 아나리 엉뚱한 포트의 아날로그 값을 가져옴. 전문 용어로 Acqusition Tiem이라고 함.
- 아두이노 내부적으로 6개의 포트를 돌아가며 읽기 때문에 다시 0번을 읽기 위해서는 약간 기다려줘야 됨. 이 시간을 어퀴지션 타임이라고 하는데 이 값이 빠르면 빠를수록 좋은 하드웨어임.
※ 아래와 같이 작성 후 컴파일하여
아두이노에 upload함
3.1 아날로그 포트 실험 3. 아날로그 포트 실험
시리얼 통신 테스트 화면
아날로그 포트 실험 3. 아날로그 포트 실험
- 9600bps로 연결 설정을 했기 때문에, 시리얼통신 창에서 반드시 9600bps로 설정해야 출력값이 깨지지 않고 보이게 됨.
- 시리얼 통신에 찍히는 값이 너무 빨리 바뀐다면, delay 값을 충분히 늘려 잡아서 다시 upload 후 시도.
- 이제 정상적이라면, 볼륨을 돌려봄.
- 끝까지 가면 0 또는 1023이 나올 것임. 안나오면 그 볼륨이 좀
오래됐거나 탓거나 하는 여러가지 이유가 있는 것임
4. 결론
- 아두이노의 아날로그 포트에는 전압으로 값이 나오는 센서를 연결하여 사용
- 또는, 저항 배분에 의하여 전압값으로 만들어 줄 수 있는 센서들이면 됨
- 동시에 6개까지의 센서 입력을 받을 수 있으므로 여러가지 응용이 가능
- 다음 시간에는 센서입력에 따라 간단한 무엇인가를 제어할 수 있는 예를 한번 해보도록 하겠음.