ADC 비트 수, 분해능, 레졸루션을 변경하는 방법
Arduino Nano 33 BLE에는 아날로그 읽기 해상도를 변경하여 analogRead() 함수가 반환하는 값의 비트 수를 늘릴 수 있는 기능이 있습니다. 기본 해상도 값은 10비트(0~1023 사이의 값 반환)이며 최대 12비트 ADC(0~4095 사이의 값 반환)까지 지원할 수 있습니다.
이를 위해 analogRead()가 반환하는 값의 크기(비트)를 설정하는 analogReadResolution()이라는 또 다른 함수가 있습니다. 바로 이 함수에서 ADC 분해능(해상도, 비트 수)를 변경할 수 있습니다.
analogReadResolution()
analogReadResolution()은 제로, 듀, MKR 제품군, 나노 33(BLE 및 IoT) 및 포텐타를 위한 아날로그 API의 확장입니다.
analogRead()가 반환하는 값의 크기(비트 단위)를 설정합니다. AVR 기반 보드와의 하위 호환성을 위해 기본값은 10비트(0~1023 사이의 값 반환)입니다.
Zero, Due, MKR 제품군 및 Nano 33(BLE 및 IoT) 보드에는 해상도를 12로 변경하여 액세스할 수 있는 12비트 ADC 기능이 있습니다. 이렇게 하면 analogRead()에서 0에서 4095 사이의 값이 반환됩니다. Portenta H7에는 16비트 ADC가 있어 0~65535 사이의 값을 사용할 수 있습니다.
구문 : analogReadResolution(비트)
매개변수: bits: analogRead() 함수가 반환하는 값의 해상도(비트 단위)를 결정합니다. 1에서 32 사이로 설정할 수 있습니다. 지원되는 12비트 또는 16비트보다 높은 해상도를 설정할 수 있지만 analogRead()에서 반환되는 값은 근사치가 적용됩니다.
반환값: 없음
아래 샘플 코드를 참고하세요
void setup() {
// open a serial connection
Serial.begin(9600);
}
void loop() {
// read the input on A0 at default resolution (10 bits)
// and send it out the serial connection
analogReadResolution(10);
Serial.print("ADC 10-bit (default) : ");
Serial.print(analogRead(A0));
// change the resolution to 12 bits and read A0
analogReadResolution(12);
Serial.print(", 12-bit : ");
Serial.print(analogRead(A0));
// change the resolution to 16 bits and read A0
analogReadResolution(16);
Serial.print(", 16-bit : ");
Serial.print(analogRead(A0));
// change the resolution to 8 bits and read A0
analogReadResolution(8);
Serial.print(", 8-bit : ");
Serial.println(analogRead(A0));
// a little delay to not hog Serial Monitor
delay(100);
}
참고 및 경고
아날로그ReadResolution() 값을 보드의 기능보다 높은 값으로 설정하면 아두이노는 여분의 비트를 0으로 채워서 최고 해상도로만 보고합니다.
예를 들어, Due를 analogReadResolution(16)과 함께 사용하면 처음 12비트는 실제 ADC 판독값을 포함하고 마지막 4비트는 0으로 패딩된 대략적인 16비트 숫자가 표시됩니다.
analogReadResolution() 값을 보드의 기능보다 낮은 값으로 설정하면 ADC에서 읽은 추가 최하위 비트는 버려집니다.
16비트 해상도(또는 실제 하드웨어 기능보다 높은 해상도)를 사용하면 향후 보드에서 더 높은 해상도의 ADC를 사용할 수 있게 될 때 코드 한 줄도 변경하지 않고도 자동으로 장치를 처리하는 스케치를 작성할 수 있습니다.
'개발자 > Arduino' 카테고리의 다른 글
Arduino와 여러 개 DS18B20 디지털 온도 센서 인터페이스 (2) | 2024.09.05 |
---|---|
아두이노 짧은 시간 Delay 사용 하지 않는 코드 (1) | 2023.10.18 |
nano 33 iot 1초 타이머 작동 - delay 사용 금지 (1) | 2023.10.13 |
가변저항 두 개로 시간을 보여주는 코드 (1) | 2023.10.13 |
0부터 1023 까지 숫자를 12시간중 어떤 구간인지 알아내는 코드 (1) | 2023.10.05 |
PIR 센서를 이용한 보안 경보 시스템 (0) | 2023.08.28 |
아두이노 ADC 모듈 ADS1115 ADS1015 (0) | 2023.05.02 |
전류 전압 컨버터 4~20mA 전류 측정 (0) | 2023.05.02 |
더욱 좋은 정보를 제공하겠습니다.~ ^^