atmega128 adc 예제

감사! 이것은 따라야 할 뛰어나고 쉬운 튜토리얼입니다. 예제 프로그램도 처음 작동했습니다. 매우 고무적입니다. 이 문서에서는 아날로그 신호를 디지털 신호로 변환하기 위해 Atmega32의 ADC를 사용하는 방법에 대해 알아봅니다. 아날로그 신호의 예로, 우리는 LM35 온도 센서에서 나오는 출력 신호를 사용한다. 이 기사의 끝으로, 우리는 온도가 특정 한계 (예를 들어 60 섭씨)를 초과 할 때 부저를 트리거 간단한 화재 경보를 만들 수있을 것입니다. 좋은 아이디어, 나에게 예제 센서를 제공하고 나는 그것을 위해 코드를 디자인합니다. 아날로그에서 디지털 변환으로 변환하는 것은 일반적으로 아날로그 출력을 생성하는 센서(예: LM35 온도 센서)를 다룰 때마다 필요하며, 이는 광범위한 센서의 경우입니다. 이러한 센서를 다룰 때 마이크로 컨트롤러가 이를 처리하고 이를 기반으로 결정을 내릴 수 있도록 아날로그 신호를 디지털 단어로 변환해야 합니다.

우리는 ADC (디지털 변환기에 아날로그)라는 장치가 필요하고 다행히, 많은 컨트롤러는 이제이 장치가 내장되어 있습니다 you.it. atmega128의 eeprom,그럼 우리는 무엇을해야합니까? AVR의 ADC는 일정한 간격으로 아날로그 신호를 디지털 신호로 변환합니다. 이 간격은 클럭 빈도에 따라 결정됩니다. 일반적으로 ADC는 50kHz ~ 200kHz의 주파수 범위 내에서 작동합니다. 그러나 CPU 클럭 주파수는 (MHz의 순서로) 훨씬 높다. 이를 달성하기 위해서는 주파수 분할이 이루어져야 합니다. 프리 스케일러는 이 분할 계수역할을 합니다. 외부의 높은 주파수에서 원하는 주파수를 생성합니다. 2, 4, 8, 16, 32, 64 및 128과 같이 미리 정의된 몇 가지 분할 요소가 있습니다. 예를 들어 64의 프리스케일러는 F_ADC = F_CPU/64를 의미합니다. F_CPU = 16MHz, F_ADC = 16M/64 = 250kHz입니다.

이 줄은 채널 번호를 유효한 값으로 제한합니다. ch를 0-7 사이로 통과하면 변경되지 않지만 예를 들어 11을 통과하면 3으로 변환됩니다. 어떻게 작동하는지 얻으려면 이진 숫자와 비트 현명한 논리 연산을 사용하여 비트 논리 연산자 (&like)에 대해 잘 알고 있어야합니다. 간단한 것은 위의 ADMUX 레지스터 설명의 표를 참조하십시오. 이 예제에서는 2 번째 옵션 (굵은 기울임꼴)을 위해 갔지만 다른 volatge를 사용하여 첫 번째 옵션을 사용합니다. 그런 다음 Aref 핀 (mega8의 핀 21)에 전압을 적용 할 수 있으며 기준 전압이 됩니다. 이 예제에서는 AVR ATMega16 마이크로 컨트롤러의 ADC를 사용하여 채널 ADC0에 제시된 아날로그 전압을 이진 값으로 변환하고 해당 값을 마이크로 컨트롤러의 portD로 출력합니다. ADC0에 대한 입력 전압은 가변 저항기를 사용하여 다양합니다. 다음은 이 작업을 달성하기 위한 회로도입니다. AVR C 프로그램은 회로도를 따라 비디오뒤에 있습니다. 당신이 정말로 전력을 측정하려는 경우 예를 들어 다른 조명 조건에서 멀티 미터를 사용하여 LDR의 저항을 측정할 수 있으며 동일한 조건에서 전압 분배기에서 아날로그 입력 값을 측정 할 수 있습니다.

근사치에 대한 표를 바하십시오. 그럼 당신은 전압과 저항을 알고 전력을 계산할 수 있습니다. 제대로 하지 않는 한 정확한 측정을 기대하지 마십시오 (여기서 설명하기에는 너무 많습니다). BR, 토마스 H. 아날로그 핀은 전류가 아닌 기준 전압을 기준으로 전압만 측정합니다. 구글 ADC. LDR로 인해 다양한 전압을 측정하기 위해, 예를 들어 아두 이노 LDR 구글. 전압 분배기 또는 기타 회로가 필요합니다. 예를 들어, 2.56V에서 PA1, VCC에서 PA2, VREF에서 PA3? 전류를 측정해야 하는 경우 예를 들어 션트 저항기 또는 기타 회로를 사용할 수 있습니다. 인터넷 검색을 해보십시오. 션트 저항이 너무 높으면 회로 작동에 영향을 미칩니다. BR, 토마스 H.

ADMUX |= (1 << ADLAR); 이렇게 하면 이 예제에 대한 ADC 하드웨어 설정이 완료됩니다. ADC가 측정을 시작하기 전에 두 개의 비트를 더 설정해야 합니다. 다음은 위에서 설명한 ATMega16 인터럽트 기능 예제에 대한 AVR C 코드입니다.