Osilator internal atau eksternal

22

Saya selalu menggunakan osilator internal yang ada foto karena saya tidak pernah menemukan kebutuhan untuk menjalankan apa pun pada frekuensi lebih tinggi dari 8 MHz (yang merupakan tercepat foto yang saya gunakan cenderung dapat pergi). Apakah ada alasan, selain melampaui 8 MHz, itu berarti saya harus menggunakan osilator eksternal? Sepertinya ada satu hal lagi yang salah dengan saya, tetapi saya tertarik mendengar apa yang dilakukan orang lain.

SimonBarker
sumber
Mengapa kadang-kadang diperlukan kristal eksternal, meskipun MCU memiliki CPU internal? ” Fakta bahwa MCU memiliki CPU internal hampir tidak ada hubungannya dengan mengapa jam internal atau eksternal digunakan. Apakah Anda mengacaukan / membingungkan dua masalah yang berbeda?
gbulmer
Ini dapat membantu Anda untuk memahami sepenuhnya microcontrollerslab.com/oscillator-types-microcontrollers
Bilal Malik

Jawaban:

33

Seperti yang orang lain katakan, frekuensi dan stabilitas frekuensi yang akurat adalah alasan untuk menggunakan resonator keramik atau kristal eksternal. Resonator beberapa kali lebih akurat daripada osilator RC internal dan cukup baik untuk komunikasi UART. Kristal jauh lebih akurat, dan perlu jika Anda melakukan beberapa jenis komunikasi lain seperti CAN, USB, atau ethernet.

Alasan lain untuk kristal eksternal adalah pilihan frekuensi. Kristal datang dalam berbagai frekuensi sedangkan osilator internal biasanya satu frekuensi dengan kemungkinan pilihan 4x PLL diaktifkan. Beberapa PIC inti 24 bit yang lebih baru memiliki pengganda dan pembagi dalam rantai jam sehingga Anda dapat menekan berbagai pilihan frekuensi dari frekuensi osilator internal tunggal.

Tentu saja ada berbagai aplikasi yang secara inheren membutuhkan frekuensi atau waktu yang akurat selain komunikasi. Waktu adalah properti dalam elektronik yang dapat kita ukur paling akurat dengan harga murah, jadi terkadang masalahnya diubah menjadi salah satu pengukuran waktu atau menghasilkan pulsa dengan waktu yang akurat.

Lalu ada aplikasi yang membutuhkan sinkronisasi jangka panjang dengan blok lain. Osilator 1% akan dimatikan lebih dari 14 menit per hari jika digunakan sebagai dasar untuk jam waktu nyata. Waktu jangka panjang yang akurat juga mungkin diperlukan tanpa harus tahu waktu sebenarnya. Misalnya, Anda ingin sekelompok perangkat berdaya rendah untuk bangun sekali setiap jam untuk bertukar data selama beberapa detik dan kemudian kembali tidur. Kristal 50ppm (sangat mudah didapat) akan dimatikan tidak lebih dari 180ms dalam satu jam. Osilator RC 1% bisa dimatikan dalam 36 detik. Itu akan menambah tepat waktu dan karenanya kebutuhan daya ke perangkat yang hanya perlu berkomunikasi selama beberapa detik setiap jam.

Olin Lathrop
sumber
1
Di luar topik, tapi saya pikir CANbus dirancang cukup kuat untuk menangani variasi frekuensi clock antar node. Apakah saya salah paham?
Stephen Collings
1
@Remiel: CAN memiliki ketentuan untuk simpul yang tetap disinkronkan meskipun ada beberapa perbedaan frekuensi jam. Simpul masih harus cukup dekat. Dalam kebanyakan kasus, Anda pada dasarnya membutuhkan setidaknya resonator keramik di setiap node.
Olin Lathrop
24
  1. Presisi. Jam internal tidak tepat, dapat dipengaruhi oleh kebisingan.

  2. Presisi independen suhu. Osilator khas dapat sangat bervariasi. Osilator kompensasi suhu khusus dapat diperlukan dalam aplikasi suhu rendah atau tinggi, atau jika suhu sangat bervariasi.

  3. Kecepatan. Osilator internal mungkin tidak mencapai kecepatan tertinggi IC. Yang eksternal diperlukan untuk itu.

  4. Tegangan. Kecepatan timer internal mungkin tergantung pada voltase yang digunakan.

  5. Dibutuhkan beberapa jam. Beberapa aplikasi ingin berbagi osilator.

  6. Aplikasi khusus di mana jam internal mungkin tidak mudah digunakan. Membagi jam internal mungkin lebih sulit daripada melempar kristal arloji 31 ​​kHz murah untuk aplikasi yang menjaga waktu.

Dari atas kepala saya, ATMEGA 328 yang menggunakan Arduino membutuhkan kristal eksternal pada 5V untuk kecepatan maksimalnya. Versi lily pad beroperasi pada 8 MHz, pada osilator internal karena terbatas pada 3.3V. Launchpad MSP430 Value Line terbatas pada 10 MHZ pada 3V, 8 pada 2.5V.

Pejalan kaki
sumber
10
Contoh untuk presisi: USB membutuhkan jam yang tepat. Microchips PIC18F2550 dapat menghasilkan kecepatan clock apa pun secara internal, tetapi ketepatannya terlalu buruk untuk USB. Ketika saya mencobanya, ada pemutusan setiap 10-20s. Ini tidak terjadi dengan osilator eksternal. Sementara itu mereka memiliki PIC18F25k50, yang dapat menyinkronkan jamnya ke sinyal USB dan tidak memerlukan osilator eksternal untuk USB lagi.
sweber
1
Hanya untuk menjadi bertele-tele, clock 8MHz internal adalah osilator RC, bukan kristal, karenanya akurasinya buruk.
Austin
@Austin memperbaiki komentar.
Pejalan kaki
13

Stabilitas frekuensi akan lebih tinggi dengan yang eksternal. Jadi, jika Anda memiliki aplikasi yang benar-benar tergantung pada MCK freq, maka Anda mungkin perlu menggunakan yang eksternal.

Tetapi sebagian besar MCU modern memiliki osc internal yang cukup stabil, oleh karena itu saya pikir ini dulu pertanyaan yang lebih besar beberapa tahun yang lalu. Juga ada semakin banyak cara untuk memotong internal, dan mengimbangi penyimpangan suhu (dll.).

Di sisi lain ada cara lain untuk memastikan bahwa Anda disinkronkan, di beberapa negara stabilitas freq di jaring daya adalah 50Hz ± 0,01Hz dan tempat-tempat lain seperti Swedia sebenarnya memiliki ± 0,001Hz dan saya telah melihat proyek menggunakan ini untuk menjaga hal-hal yang disinkronkan. Dan kemudian Anda tidak lagi tergantung pada mcu freq dan Anda dapat menggunakan yang internal. Tapi ini sedikit topik :)

Johan
sumber
3
Perhatikan bahwa angka-angka frekuensi utama adalah stabilitas jangka panjang . Tidak apa-apa untuk menjaga waktu secara akurat selama berminggu-minggu atau berbulan-bulan, tetapi dalam waktu singkat (jam) Anda mungkin mengalami penyimpangan serius. Anda tidak akan pernah harus menyesuaikan waktu pada jam digital murah.
stevenvh
@stevenvh poin yang baik, juga perhatikan bahwa ada sumber lain yang dapat digunakan untuk memverifikasi stabilitas jangka panjang juga. Baik sistem gps dan gsm memiliki jam yang sangat bagus tetapi lebih rumit untuk menggunakannya.
Johan
3
meskipun ada banyak aplikasi lain yang membutuhkannya, ada satu yang secara khusus menyebabkan banyak masalah tanpa basis waktu yang akurat - komunikasi serial.
JustJeff
Saya tidak tahu ada stabilitas frekuensi yang tidak akan lebih tinggi dengan kristal kuarsa eksternal. Anda tidak akan mendapatkan akurasi sub-0,1% dengan osilator silikon.
Jason S
1
@Johan - DCF77 / WWVB seakurat GPS atau GSM, dan jauh lebih mudah untuk bekerja dengan (detak jantung 1Hz)
stevenvh
2

Stabilitas frekuensi adalah yang utama, terutama untuk komunikasi serial dengan kecepatan tinggi. Tetapi itu juga memunculkan kebutuhan sesekali untuk kristal pada frekuensi yang aneh untuk mendapatkan baud rate yang tepat, karena pilihan terbatas yang diberikan oleh pembagi jam kepada Anda.

Martin
sumber
1

Saya sebenarnya menemukan skenario di mana 1% tidak cukup baik untuk UART.

Jika ada dari kalian yang pernah mendengar tentang board dev mikrokontroler Teensy ++ v1.0, ia memiliki UART yang sangat sensitif. Saya memiliki host saya set baud pada 115200, dan itu diatur pada 115200 dan untuk waktu yang paling lama tidak tahu mengapa itu tidak membaca data dengan benar. Ternyata tuan rumah saya mengirim lebih dekat ke 114300 baud. (115200 - 114300) / 115200 = ~ 0,9% kesalahan. Saya mencobanya dengan dua MCU yang berbeda dan mereka bekerja dengan baik.

Intinya adalah: terlepas dari aplikasi Anda, jika akurasi frekuensi clock yang lebih besar adalah keuntungan, Anda harus menggunakan resonator eksternal, kristal, atau bahkan osilator jika chip Anda tidak memiliki sirkuit mengemudi yang diperlukan.

PS Saya ingin tahu apakah ada yang memiliki wawasan seperti apa pilihan desain tingkat rendah yang mereka buat pada perangkat keras UART yang membuatnya sangat sensitif?

NickHalden
sumber
Persyaratan mendasar untuk UART adalah bahwa penerima sampel setiap bit sementara itu valid. Idealnya, penerima akan melihat saat yang tepat bit mulai tiba, dan sampel data tepat 1,5 satu kali kemudian, kemudian 2,5, 3,5, dll hingga 8,5 kali kemudian. Dalam praktiknya, biasanya ada beberapa kemunduran ketika penerima mendeteksi pulsa mulai, dan mungkin ada lebih banyak kemalangan setelah itu. Sebagai contoh, orang mungkin mencoba menerima 2.400 baud menggunakan prosesor yang menjalankan 8.192 instruksi per detik ....
supercat
Hal seperti itu dapat dilakukan jika waktu pengiriman benar-benar bersih, tetapi pengambilan sampel tidak akan terjadi pada interval 417usec yang tepat. Sebaliknya itu akan terjadi pada beberapa interval 366us dan beberapa 488us. Ketika penerima "pilih-pilih", yang sering berarti adalah pengambilan sampel data jauh lebih awal atau lebih lambat dari yang seharusnya, tetapi pada saat pemancar yang ideal akan mengeluarkan bit data yang diharapkan.
supercat
@supercat Mengapa mereka mendesainnya untuk sampel lebih awal daripada nanti? Sepertinya pengambilan sampel di 0,5 seperti yang Anda gambarkan akan selalu yang terbaik. Itulah cara saya mengimplementasikan perangkat lunak saya UART beberapa tahun yang lalu ... bahkan tidak terpikir oleh saya untuk melakukannya dengan cara lain. Itu hanya memungkinkan untuk margin kesalahan paling banyak pada pemancar.
NickHalden
@ JGord: Jika pengambilan sampel dikendalikan oleh jam yang jauh lebih cepat daripada baud rate, semuanya indah, tapi itu tidak selalu terjadi. Misalkan, misalnya, seseorang mencoba untuk menerima 115.200 baud menggunakan berjalan 6502 pada 1.0MHz dan tidak ada UART. Putaran menunggu bit awal akan mengambil 7 us, dan peluang polling dijadwalkan pada interval 1 us. Ada ketidakpastian 8us tentang kapan 6502 akan polling sedikit, tetapi karena bit panjang 8.6us, orang bisa menerima data dengan sukses jika ...
supercat
... kecepatan transmisi tepat, waktu naik dan turun seragam dan simetris, dan tidak ada kegugupan lainnya. Saya tidak tahu tentang papan Teensy, tapi saya tidak akan terkejut jika menggunakan perangkat lunak UART untuk mendorong controller melampaui kemampuan normalnya.
supercat
1

Osilator kristal kristal eksternal lebih akurat daripada jam internal, dan mereka harus digunakan ketika waktu yang akurat diperlukan. Terkadang untuk menghemat uang, desainer menggunakan yang internal.

Mahmoud Hosseinipour
sumber
2
This doesn't seem to add anything to the existing answers.
Adam Haun