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 디지털 온도 센서 인터페이스 (3) | 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 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
캐어랩