Output Square Wave pada DS3231

Modul DS3231 merupakan real-time clock (RTC) dengan osilator kristal internal berfrekuensi 32.768 kHz yang telah dilengkapi kompensasi suhu (temperature compensated crystal oscillator/TCXO). Berkat fitur ini, modul mampu menghasilkan sinyal square wave 1 Hz secara langsung melalui pin SQW dengan tingkat akurasi yang sangat tinggi, yaitu kurang dari 2 ppm atau setara dengan penyimpangan waktu sekitar ±1 menit per tahun. Tingkat presisi tersebut menjadikan DS3231 sangat ideal sebagai sumber interrupt untuk aplikasi waktu nyata (real-time). Selain itu, modul ini juga relatif murah dan sangat mudah diintegrasikan dengan mikrokontroler melalui antarmuka I2C untuk keperluan konfigurasi maupun pembacaan data waktu.

Pin SQW pada modul DS3231 menggunakan konfigurasi open-drain, sehingga memerlukan resistor pull-up agar dapat menghasilkan level logika yang benar. Resistor pull-up dengan nilai sekitar 4,7 kΩ hingga 10 kΩ dihubungkan antara pin SQW dan VCC (baik 3,3 V maupun 5 V) untuk memastikan sinyal square wave dapat berfungsi dengan stabil dan dapat dibaca dengan baik oleh sistem.


#include 
RTC_DS3231 rtc;

void setup() {
  rtc.begin();
  rtc.writeSqwPinMode(DS3231_SquareWave1Hz);  // Aktifkan 1 Hz output
  // rtc.writeSqwPinMode(DS3231_SquareWave4kHz); // 4096 Hz
  // rtc.writeSqwPinMode(DS3231_SquareWave8kHz); // 8192 Hz
  // rtc.writeSqwPinMode(DS3231_SquareWave32kHz);// 32768 Hz
  // rtc.writeSqwPinMode(DS3231_OFF); // matikan
  attachInterrupt(digitalPinToInterrupt(2), ISR_function, FALLING);  // Interrupt pada falling edge
}

void ISR_function() {
  // Kode yang dieksekusi setiap 1 detik, misalnya update waktu
}

Pada sebagian besar modul DS3231, terdapat resistor 200 Ω yang disolder di dekat dioda 1N4148. Kedua komponen ini membentuk rangkaian pengisian (charging circuit) sederhana yang ditujukan untuk baterai tipe LIR2032 yang bersifat rechargeable. Namun, perlu diperhatikan bahwa tidak semua modul menggunakan baterai jenis ini. Beberapa modul justru dilengkapi dengan baterai CR2032 yang tidak dapat diisi ulang. Pada kondisi tersebut, resistor 200 Ω sebaiknya dilepas untuk mencegah kerusakan baterai akibat proses pengisian yang tidak semestinya.