Pengukuran Frekuensi ADC internal pada Arduino Nano ATmega328
berikut ini kode yang dipakai untuk pengukuran
int counter; // how many iterations
int time_begin = 0;
int time_end = 0;
int duration;
int sensorPin = A0; // select the input pin for the potentiometer
int ledPin = 13; // select the pin for the LED
void setup() {
Serial.begin(115200);
counter = 0;
pinMode(2, OUTPUT);
Serial.println("start benchmark");
}
//---------------------------------------------------
void loop() {
int value; // angka yang ditulis
value = 0; // minimum value
analogRead(sensorPin);
PORTD=0; // langsung akses port supaya lebih cepat
analogRead(sensorPin);
PORTD=255;
counter = counter + 1;
if (counter >= 10000) {
float period;
int time_now = millis();
counter = 0;
duration = time_now - time_begin;
period = duration / 10000.0 /2;
Serial.print("period (ms): ");
Serial.println(period);
// prepare next round
time_begin = time_now;
}
}
Hasil Pengukuran
Pengukuran output pada pin D2 dengan osiloskop menghasilkan sinyal berikut
Dari data port serial, didapatkan angka perioda 0,11 ms
start benchmark
period (ms): 0.11
period (ms): 0.11
period (ms): 0.11
period (ms): 0.11
period (ms): 0.11
Dengan osiloskop didapatkan sinyal kotak dengan frekuensi 4,45532 kHz . Artinya frekuensi ADC adalah dua kalinya, yaitu 8,91064 kHz
Angka 8900 Hz ini sesuai dengan pengukuran di artikel lain: https://chisight.wordpress.com/2016/03/25/speeding-up-the-adc-on-an-arduino-atmega-328p/
Kesimpulan
Frekuensi ADC adalah 8,91064 kHz
Frekuensi ini jauh di bawah kecepatan teoritis. Kemungkinan kelambatan karena library yang dipakai.
Referensi
- Open Music Labs : ATmega ADC
- https://www.ee-diary.com/2022/08/programming-atmega328p-adc-in-c.html#
- https://chisight.wordpress.com/2016/03/25/speeding-up-the-adc-on-an-arduino-atmega-328p/
- Kode di https://github.com/waskita/embedded/tree/master/nano-adc