Hard Ware/Atmega 128!!

1. ADC 와 잡음 제거 필터 및 재구적 평균 필터 !!!

달려가보자 2011. 8. 28. 01:19

1. AVR 의 ADC 란 ??

-> 아날 로그 신호를 디지털 화 시키는 것이다!!

ADC 레지스터 설정에서 ADMUX 의 REFS0 의 설정에 따라 데이터가 우측 정렬 , 좌측 정렬로
값이 들어간다!!!.

우측 정렬 같은경우
 $05              ADC9 ADC8 
 $04  ADC7  ADC6  ADC5  ADC4  ADC3  ADC2  ADC1  ADC0

좌측 정렬 같은경우
 $05 ADC9  ADC8  ADC7  ADC6  ADC5  ADC4  ADC3  ADC2 
 $04 ADC1  ADC0             

이런식으로 데이터 가 쌓이게 되는데!!!! 여기서 집고 넘어가야 할것은 !!!

메모리 주소이다 !!! ADC 각각의 레지스터 에 들어가는데 메모리 주소 번지를 보아라

ADCL가 먼저 들어오고 ADCH 가 나중에 들어오는것을 알수있다!!!

그럼 사용자는 ADC값을 받기 위해서는 ADCL 먼저 받고 ADCH를 받아야 될것이다 !!!!


2. AVR 의 LC 필터

LC 필터는 외부전원인 VCC 와 AVR에 인가되는 VCC 단 사이에 0.1uF 세라믹 커패시터를 연결하고 다시 외부전원 VCC와 AVCC 연결 사이에 10uH 를 연결 시켜준다.
10uH의 끝부분에는 0.1uF을 마지막으로 연결 시켜주고 그라운드랑 연결하면 LC필터가 
만들어진다!!.  


3. 재귀적 평균 필터

재귀적 평균 필터란 ??

평균값을 구할때 입력된 값을 다 더하고 그 입력된 횟수만큼 나눔으로서 평균값을 구할수 있는데 이런식으로 평균값을 구하면 컨트롤러가 처리하는데 시간이 걸릴수 밖에 없다 !!!1

자 그럼 이를 해결하기 위해 재귀적 평균 필터를 쓰겠다!!!

재귀적 평균은

 now_Data = (unsigned int)((cCount * avg)-avg) /cCount ; 
 after_Data = (unsigned int) g_adcMdata / cCount ;
 filter_Data = now_Data + after_Data;
 avg = filter_Data ;

식으로 표현 하자면 Data = ((n-1) / n)*전 데이터값 + (1/n)*현재 데이터값