Saat ini saya sedang mencoba membuat jam waktu Arduino dengan menggunakan perpustakaan Waktu PJRC ( http://www.pjrc.com/teensy/td_libs_Time.html ). Saya tahu bahwa karena sebagian besar papan Arduino berjalan dengan clock 16MHz dan resonator tunggal, waktu dapat menjadi "tidak sinkron" setelah periode waktu tertentu.
Namun, saya bertanya-tanya apakah ada yang punya ide tentang keakuratan perpustakaan Waktu ketika digunakan pada Arduino DUE dengan jam 84MHz. Saya sudah mengujinya dan sejauh ini, jam telah disinkronkan selama beberapa jam. Terima kasih!
time
arduino-due
KK6FSL
sumber
sumber
Jawaban:
Keterbatasan akurasi perpustakaan tergantung pada keakuratan kristal. Ketika mereka membuat, atau memasak, kristal yang hanya dapat mereka buat dengan tingkat tertentu akurat, juga lingkungan kristal (suhu, kelembaban, dll.) Berperan dalam keakuratannya. Katakanlah Anda memiliki kristal yang mati dengan 0,5 detik setiap jam, bagus untuk jangka pendek, tetapi jika Anda mengembangkannya lebih dari setahun, itu lebih dari 1 jam pada saat itu. Jika Anda menginginkan sesuatu untuk menjaga waktu yang akurat dalam jangka waktu lama, saya sarankan jam waktu nyata (mereka masih memiliki ketidakakuratan), modul GPS, atau koneksi internet untuk disinkronkan.
Untuk informasi lebih lanjut, lihat artikel wikipedia tentang kristal kuarsa
Penggunaan kristal 84MHz versus kristal 16MHz belum tentu meningkatkan akurasi jam Arduino karena frekuensi kristal lebih merupakan indikator kecepatan prosesor daripada akurasi. Keakuratan jam Arduino terutama tergantung pada keakuratan osilator kristal.
EDIT: Saya bukan ahli osilator kristal jadi jika Anda melihat ada yang salah di sini, beri tahu saya
sumber
Mengunjungi kembali sebuah pertanyaan lama ... ketika saya menemukan posting blog yang sangat informatif yang memberi cahaya baru ke dalamnya. Tetapi pertama-tama saya berikan beberapa konteks sebelum memberikan tautan.
Saat menilai kualitas basis waktu, baik itu kristal, resonator keramik, atau standar frekuensi tingkat laboratorium, ada dua gagasan yang harus dibedakan:
Akurasi penting jika Anda ingin jam Anda memberi waktu yang tepat "di luar kotak". Namun, jika Anda bersedia meluangkan waktu untuk mengkalibrasi jam Anda, maka Anda tidak terlalu peduli karena Anda akan mengkalibrasi setiap ketidakakuratan yang Anda ukur. Jawaban jfpoilpret memberikan contoh protokol kalibrasi “manual”, yang tentunya cukup panjang. Jika Anda dapat meminjam modul GPS dengan output 1PPS, kalibrasi dapat dilakukan dalam beberapa detik.
Stabilitas adalah masalah yang lebih serius. Jika frekuensi basis waktu melayang secara acak, ini akan mengalahkan upaya kalibrasi Anda. Pada dasarnya, kalibrasi akan memberi tahu Anda seberapa cepat atau lambat jam Anda sedang berjalan sekarang , tetapi itu tidak akan memungkinkan Anda untuk memprediksi seberapa cepat atau lambat itu akan berjalan di masa depan .
Inilah tautan yang dijanjikan: Akurasi frekuensi jam Arduino , oleh Joris van Rantwijk.
Apa yang Joris lakukan adalah mengukur akurasi dan stabilitas Arduino Pro Mini (clock resonator keramik) dan Duemilianove tua (kristal kuarsa). Dari perspektif saya, takeaways utama adalah:
Berikut ini adalah plot penyimpangan Allan- nya , yang mengukur ketidakstabilan jam sebagai fungsi dari waktu pengamatan:
(sumber: jorisvr.nl )
Meskipun penelitian ini memiliki beberapa keterbatasan (hanya dua papan yang diuji, dan waktu pengamatannya terlalu singkat), pemikirannya bagus dan sangat informatif. Saya mendorong Anda untuk membacanya secara keseluruhan.
sumber
Cara terbaik untuk mengetahui akurasi resonator papan Anda adalah dengan mengukurnya sendiri.
Untuk melakukannya, Anda dapat menggunakan
millis()
fungsi Arduino papan Anda dan menulis sketsa kecil yang akan:millis()
nilainya setiap jam atau lebih.Tentu saja, pendekatan ini masih jauh dari sempurna karena membutuhkan intervensi manusia dan dengan demikian akan membuat drift waktu tambahan selama pengukuran, itulah mengapa Anda perlu mengukur waktu jam Anda melayang dalam periode yang lama.
Pendekatan yang ditingkatkan akan menghubungkan jam RTC dengan akurasi tinggi (akurasi harus dipilih berdasarkan keakuratan yang Anda butuhkan untuk aplikasi Anda) ke board Anda dan mengadaptasi sketsa sehingga secara otomatis menghitung drift. Setelah Anda mendapatkan penyimpangan waktu, Anda dapat melakukan hal yang sama seperti langkah 5 di atas dalam sketsa Anda, dan lepaskan jam RTC dari papan Anda.
Poin-poin penting :
Terakhir, jika Anda benar-benar membutuhkan akurasi tinggi, maka hubungkan sumber jam eksternal (misalnya jam RTC, GPS, NTP) dengan pasti dan gunakan sebagai SyncProvider untuk pustaka PJRC.
sumber
Kristal jam sistem rata-rata Anda akan dimatikan beberapa puluhan ppm (bagian per juta. Mereka bagus untuk pengaturan waktu sinyal yang stabil dan akurat, tetapi dramatis untuk menjaga waktu yang akurat. Tanpa ketentuan khusus, kristal sistem dapat dimatikan beberapa detik per hari.
Solusinya adalah dengan menggunakan Real Time Clock yang tepat, didorong oleh apa yang umumnya dikenal sebagai kristal arloji 32768Hz. Kristal-kristal ini dengan mudah merupakan faktor 10 yang lebih baik dalam akurasi. Anda dapat mengatur osilator Anda sendiri yang mengganggu prosesor utama dan tetap menghitung dalam sketsa Arduino Anda atau Anda menemukan papan pelarian RTC.
Dua contoh acak yang muncul di Google dengan istilah pencarian "RTC breakout":
sumber