Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Teknologi Industri

Real Time Clocks (RTCs) di Pewaktu Mikrokontroler

Artikel ini adalah yang ketiga dari seri timer mikrokontroler yang menjelaskan RTC di dalam mikrokontroler.

Artikel ini adalah yang ketiga dari seri timer mikrokontroler. Artikel pertama menjelaskan fitur utama dari sebagian besar jenis timer dan mencakup timer periodik, dan artikel kedua membahas timer MCU modulasi lebar pulsa.

Jam waktu nyata (RTC) adalah pengatur waktu yang didedikasikan untuk mempertahankan basis waktu satu detik. Selain itu, RTC sering digunakan untuk melacak waktu jam dan tanggal kalender baik dalam perangkat lunak maupun perangkat keras. Banyak fitur RTC sangat khusus dan diperlukan untuk menjaga akurasi tinggi dan pengoperasian yang sangat andal. Ada perangkat RTC di luar mikrokontroler yang berinteraksi dengan I 2 C atau bus SPI.

Artikel ini menjelaskan RTC di dalam mikrokontroler.

Ikhtisar Jam Waktu Nyata

Fungsi dasar jam real-time adalah untuk menghasilkan interval satu detik dan mempertahankan hitungan terus menerus.

Anda dapat melihat representasinya dalam diagram di bawah ini.

Gambar 1. Diagram pengaturan waktu ini menggambarkan fungsi dasar RTC

Juga ditampilkan adalah fungsi program, A, membaca penghitung detik dan menjadwalkan suatu peristiwa, B, untuk terjadi tiga detik di masa depan. Tindakan ini disebut alarm. Perhatikan penghitung detik berjalan terus menerus dan tidak berhenti dan mulai. Dua persyaratan utama RTC adalah akurasi dan operasi berkelanjutan.

Diagram berikutnya menunjukkan fitur perangkat keras umum dari RTC.

Gambar 2. Fitur perangkat keras jam waktu nyata

Sebuah RTC sering memiliki osilator internal sendiri dengan kristal eksternal dan pilihan untuk menggunakan referensi frekuensi eksternal. Semua sumber jam berjalan pada 32.768 Hz. Sumber jam eksternal memungkinkan penggunaan perangkat yang sangat akurat dan stabil seperti TCXO (osilator kristal terkompensasi suhu).

Sumber clock dipilih dengan multiplexer dan input ke prescaler yang membagi clock dengan faktor 32.768 (215) untuk menghasilkan clock satu detik.

RTC dasar memiliki penghitung detik yang biasanya 32 bit atau lebih. Beberapa RTC memiliki penghitung khusus untuk melacak waktu dan tanggal kalender.

RTC dasar tanpa penghitung waktu dan tanggal menggunakan perangkat lunak untuk tujuan ini. Pilihan umum adalah gelombang persegi 1 Hz dari pin output. Sebuah RTC akan memiliki beberapa kemungkinan kejadian untuk menghasilkan interupsi prosesor.

RTC sering kali memiliki pin daya khusus untuk memungkinkan pengoperasian saat mikrokontroler lainnya dimatikan. Pin daya ini biasanya terhubung ke baterai atau catu daya terpisah.

Akurasi RTC dan Kompensasi Frekuensi

Keakuratan RTC tergantung pada sumber clock 32.768 Hz. Dalam osilator kristal yang dirancang dengan baik, sumber kesalahan utama adalah kristal. TCXO eksternal dapat digunakan untuk pengaturan waktu yang sangat akurat, atau teknik kompensasi frekuensi khusus digunakan dengan kristal yang lebih murah dan osilator internal. Ada tiga sumber kesalahan utama dari sebuah kristal.

Grafik di bawah ini menunjukkan beberapa konsep yang terkait dengan akurasi RTC.

Gambar 3. Grafik yang menunjukkan kesalahan pengukuran menggunakan suhu yang digunakan atas izin Texas Instruments

Jejak biru tua pada grafik ini menunjukkan toleransi awal yang khas dan perubahan dengan suhu. Jejak merah muda hanya menunjukkan kesalahan suhu. Kunci untuk mengkompensasi suhu adalah kenyataan bahwa perilaku kristal diketahui dan diprediksi dengan persamaan kuadrat. Jika kesalahan awal diukur setelah papan sirkuit dibuat dan suhunya diketahui, kemungkinan untuk mengkompensasi sumber kesalahan terbesar.

Pita kuning adalah target yang wajar untuk akurasi setelah kompensasi yang hati-hati. Perlu diingat 1 ppm selama setahun adalah sekitar 30 detik. Penuaan kristal sulit untuk dikompensasi. Untungnya, penuaan biasanya hanya beberapa ppm per tahun.

Cara Mengubah Waktu RTC

Berikut adalah dua cara untuk mengubah waktu RTC sebagai bagian dari sistem untuk mengkompensasi kesalahan.

Diagram pertama (Gambar 4) menggambarkan jumlah siklus osilator yang dihitung oleh prescaler untuk setiap periode penghitung detik.

Dua detik pertama adalah 32.768 siklus biasa. Perangkat lunak menggunakan pembacaan suhu dan kesalahan awal untuk menentukan bahwa osilator berjalan sedikit cepat dan 32.768 siklus sebenarnya adalah periode 0,99990 detik. Untuk mengkompensasi kesalahan kecil ini, perangkat lunak memberi tahu RTC untuk mengubah modulus prescaler menjadi 32,781 untuk setiap detik keempat untuk menambah waktu.

Gambar 4. Representasi siklus osilator yang dihitung oleh prescaler

Teknik ini memiliki keuntungan dari perubahan kecil dalam periode dari detik ke detik. Namun, teknik ini membutuhkan prescaler yang dapat disesuaikan dan register tambahan untuk menampung penghitungan praskala khusus dan jumlah detik antara penerapan penghitungan khusus. Saya pikir ini cukup keren. Sedikit rumit tapi cukup keren.

Bagaimana jika RTC tidak memiliki prescaler khusus untuk mengatur waktu? Diagram ini menunjukkan metode lain.

Gambar 5. Situasi yang sama seperti yang ditunjukkan pada Gambar 4, tetapi tanpa prescaler

Dalam hal ini, angka di dalam kotak adalah penghitung detik. Hitungan yang ditampilkan adalah 100251 diikuti oleh 100252. Perangkat lunak terus menghitung penyesuaian dan melacak hitungan detik RTC. Ketika kesalahan terakumulasi tepat satu detik, perangkat lunak menambah atau mengurangi satu detik untuk menyesuaikan kesalahan yang terakumulasi.

Kerugian dari teknik ini adalah perubahan dari detik ke detik besar ketika penyesuaian dilakukan. Teknik ini memiliki keunggulan kompatibilitas dengan RTC apa pun.

Keamanan di RTC

Keamanan adalah persyaratan yang menarik. Ada aplikasi di mana waktu digunakan untuk menagih pelanggan karena menggunakan layanan atau menghabiskan sumber daya. Ada banyak praktik untuk mencegah atau mendeteksi peretasan RTC. Teknik berkisar dari deteksi intrusi untuk enklosur hingga fitur khusus dalam mikrokontroler.

RTC pada mikrokontroler yang saya gunakan saat ini memiliki register khusus untuk memungkinkan perangkat lunak mengunci register kritis secara permanen. Setelah dikunci, mereka tidak dapat diubah dan dilindungi dari peretasan atau kode di luar kendali. Mengubah waktu memerlukan reset lengkap mikrokontroler.

Waktu dan Tanggal

Beberapa RTC memiliki penghitung perangkat keras untuk mempertahankan waktu hari dan tanggal kalender. Ini membutuhkan penghitung untuk menit, jam, hari, bulan, tahun, dan pertimbangan untuk tahun kabisat. Waktu dan tanggal kalender juga dapat disimpan oleh perangkat lunak.

Contoh yang menonjol adalah fungsi di C Standard Library yang terlihat di file time.h. Untuk mikrokontroler, sistem ini dapat didasarkan pada pencacah detik dari RTC. Empat kecil, fungsi khusus harus ditulis untuk sepenuhnya mendukung perpustakaan time.h.

Satu fungsi yang menarik di sini disebut dengan fungsi time() di perpustakaan, yang mengembalikan waktu sebagai jumlah detik sejak titik awal yang disebut "epoch", biasanya 1 Januari 1970. Biasanya, fungsi kustom untuk membaca pengatur waktu perangkat keras bernama get_time() atau variasi serupa. Yang dilakukan get_time() adalah membaca penghitung detik dan mengembalikan nilainya. Perpustakaan melakukan sisanya untuk mengubah waktu ini dalam hitungan detik ke waktu hari dan tanggal saat ini.

Masalah dengan Penghitung Detik 32-Bit

Penghitung detik 32-bit berjalan untuk waktu yang lama tetapi tidak selamanya. Mungkin ada masalah serius karena rentang hitungan yang terbatas. Misalnya, waktu sistem berdasarkan penghitung 32-bit menggunakan pustaka standar C dan zaman 1 Januari 1970, bisa gagal pada Januari 2038 ketika penghitung bergulir setelah penghitungan maksimum. Masalah ini dikenal sebagai masalah Y2038.

Sebuah kegagalan terjadi selama misi luar angkasa NASA Deep Impact untuk mempelajari sebuah komet. Tujuan misi utama tercapai dan pesawat ruang angkasa melanjutkan untuk mempelajari objek lain. Namun, komunikasi tiba-tiba terputus pada tahun 2013. Berikut adalah komentar resmi NASA.

“Meskipun penyebab pasti kehilangan tidak diketahui, analisis telah mengungkap potensi masalah dengan penandaan waktu komputer yang dapat menyebabkan hilangnya kontrol untuk orientasi Deep Impact.”

- Rilis Berita NASA pada tahun 2013

Kemungkinan penyebab kegagalan adalah bahwa pengatur waktu 32-bit mempertahankan waktu dalam peningkatan 0,1 detik dan berguling menyebabkan "penghentian" misi.

Saran saya, ketika waktu dan tanggal dilibatkan, adalah menggunakan masa pakai yang lebih lama dari yang diharapkan dalam desain Anda.

Apa Selanjutnya

Artikel berikutnya mengakhiri seri dengan pengatur waktu Watchdog.


Teknologi Industri

  1. Saatnya Menjadikan Manajemen Cloud sebagai Praktik TI yang Nyata
  2. Pengisian dan Pengosongan Kapasitor
  3. Perhitungan Tegangan dan Arus
  4. Peluang sebenarnya adalah peluang industri
  5. Peralatan Kerja:Apakah Saatnya Upgrade?
  6. 7 Penggerak Transformasi Digital
  7. Apakah Saatnya Merangkul Pemesinan Berperforma Tinggi?
  8. Robot Mendeteksi dan Membagikan Perubahan 3D dalam Waktu Nyata
  9. Sensor yang Lebih Baik Mendeteksi Pembentukan Es, Secara Waktu Nyata
  10. Interoperabilitas Perusahaan Waktu Nyata