ADC 채널 변환 시 주의 사항

2019. 5. 19. 18:49임베디드/ATmega128

[출처] 10장 아날로그-디지털 변환, ATmeaga128로 배우는 마이크로컨트롤러 프로그래밍

 

2개 이상의 아날로그 입력을 사용하고자 한다면, 문제가 발생할 수 있다. 시스템을 구성할 때 2개 이상의 아날로그 입력을 사용하는 경우는 흖하다. 아날로그 값을 출력하는 센서 2개를 사용하고자 한다면 2개의 AD 변환기를 사용해야 한다. 하지만 ATmega128에는 하나의 AD 변환기만 존재하는 데다가, 8개의 채널이 MUX로 연결되어 있지만 '한 번에 하나씩' 읽어 들일 수 있을 뿐이다.

이처럼 2개의 아날로그 값을 디지털로 변환하기 위해서는 채널 전환이 필요한데, 이때 주의해야 할 점이 또 하나 있다. 바로 채널 전환에 시간이 필요하다는 점이다. 채널 전환 명령 실행 이후에는 실제로 채널이 전환되고 AD 변환을 시작할 수 있는 준비가 될 때까지 대기 시간이 필요하다. 따라서 채널이 전환되고 약간의 대기 시간을 두어 회로가 안정화되기를 기다려야 하므로 처음 AD 변환된 값은 버리고, 두 번째 읽은 값을 사용하는 것이 안전하다

 

1. 변환 직후 얻은 첫 번째 값을 버린다

2. 125KHz 분주 주파수로 동작하는 ATmega128은 첫 변환시 25ADC 클럭, 그 이후엔 13ADC 클럭이 필요하다. 1ADC는 1/125K = 8us로 최대 25ADC 클럭을 쉰다면 200us = 0.2ms이다. 따라서 _delay_ms(0.2)를 해도 무방할 것이다