W tym poście chciałbym opisać w jaki sposób należy dobrać odpowiedni kwarc, kondensatory oraz jak daleko można je umieścić od układu, który jest nimi taktowany. Jest on jednym z najlepszych rozwiązań jeśli chodzi o stabilizację drgań oscylatora, ponieważ jest to stosunkowo tani i bardzo dokładny element.
Na samym początku należy zwrócić uwagę na jego parametry oraz dokładność.
Dokładność kwarcu
Ten parametr wyrażany jest w jednostkach PPM (ang. Parts Per Million). Jednostka ta pozwala na określenie odchylenia wartości częstotliwości od zakładanej. Przeważnie przyjmuje ona następujące wartości: +/- 5, 10, 15, 20, 30, 50, 100 ppm.
Przeliczenie na wartość procentową odbywa się w następujący sposób:
50 ppm = 50 / 1000000 = 0,005%
Do błędu deklarowanego przez producenta należy dołączyć jeszcze błąd, który występuje w trakcie starzenia się kwarcu. Wartość ta wynosi +/- 5ppm.
Oscylatory wewnętrzne osiągają dokładność około +/-2%, a w niesprzyjających warunkach temperaturowych mogą one wynosić nawet 4%. Oznacza to, że posiadają one znacznie mniejsze dokładności niż te jakie mogą zapewnić kwarce.
Dla przykładu posłużę się płytką STM32 - Discovery. Zastosowany na niej mikrokontroler STM32F407VG posiada dwa źródła sygnału taktującego zewnętrzne w postaci kwarcu 8MHz, oraz oscylator wewnętrzny HSI 16MHz. Oba te źródła posiadają różną dokładność. Kwarc HC-49S-8MHz wyprodukowany przez firmę Hosonic Electronic zapewnia dokładność wynoszącą +/-30ppm. Natomiast dokładność wewnętrznego źródła silnie zależy od temperatury. Wartości zdeklarowane przez producenta przedstawiłem w tabelce poniżej.
Tab. 1. Dokładność HSI w STM32
Jak można zaobserwować w tabeli, dokładność silnie zależy od wahań i temperatury pracy. Dla wartości pokojowej tj 25 st. C wynosi 1% czyli 10000 ppm. Jak widać ta wartość jest znacznie większa od tej zdeklarowanej dla kwarcu.
Duże znaczenie ma ten parametr w przypadku dokładnych generacji sygnałów np. dla zegarów czasu rzeczywistego. Poniżej przedstawię przykładowe różnice dla HSE i HSI.
Kwarc: +/- 30 ppm czyli 0,003%, dla jednej sekundy błąd wynosi 0,003[%] * 1[s] = 0,00003 [s]
HSI: +/- 10000 ppm czyli 1%, dla jednej sekundy błąd wynosi 1[%] * 1[s] = 0,01 [s]
Oznacza to, że w skrajnych przypadkach odchyleń uzyska się następujące wartości błędu dla:
Doby:
Kwarc: 24[h] * 60[min] * 60[sek] * 0,003[%] = 2,592 [s]
HSI: 24[h] * 60[min] * 60[sek] * 1[%] = 864 [s]
Miesiąca:
Kwarc: 30[dni] * 24[h] * 60[min] * 60[sek] * 0,003[%] = 77,76 [s] =~ 1,178 min
HSI: 30[dni] * 24[h] * 60[min] * 60[sek] * 1[%] = 25920 [s] = 432 minuty
Roku:
Kwarc: 12 [miesiac] * 30[dni] * 24[h] * 60[min] * 60[sek] * 0,003[%] = 933,12 [s] =~ 15,552 [min]
HSI: 12[miesiac] * 30[dni] * 24[h] * 60[min] * 60[sek] * 1[%] = 311040 [s] = 5184 [min]
Jak można zaobserwować powyżej, różnice w stabilności są znaczne. Patrząc na maksymalne odchylenie roczne dla kwarcu wynik wynosi około +/-15 minut rocznie, natomiast HSI, tylko przy pracy w normalnych warunkach, może wykazać błąd wynoszący 5184 [min] co daje 3 dni i 14,5 godziny.
Błędy kwarcu
Oprócz błędów wymienionych powyżej, można wyróżnić takie rodzaje błędów jak jitter i dryf. Stabilność kwarcu można wyznaczyć z następującej zależności:
Gdzie: f0 - jest częstotliwością w temperaturze odniesienia, T0 - temperatura odniesienia, przeważnie przyjmowane jest 25 st. C,
Im większe odchylenia temperatury tym większe wahania błędów taktowania dla kwarcu, podobnie jak dla wspomnianego wcześniej HSI. Z tą różnicą, że w tym przypadku różnica wynosi około 100 ppm.
Dryf, powoduje pewne zniesienie sygnału albo do sąsiedniego kanału, albo jego przenikanie przez różne obwody w układzie. W związku z tym należałoby maksymalnie ograniczyć jego wpływ na obwody. Na ten rodzaj błędu wpływ ma temperatura, wilgotność, ciśnienie, Dwa ostatnie można rozwiązać poprzez odpowiednie odseparowanie kwarcu od reszty układu, np. w komorze z gazem. Co do temperatury to wypadałoby by odpowiednio dostosowywać temperaturę wykorzystując wiatraki, bądź jeśli w ujemnej temperaturze to podgrzewacze. Druga opcja dotyczy wykorzystania układu z możliwością zastosowania kompensacji temperatury. W tym celu wykorzystywane są takie techniki jak:
- TCXO - wykorzystywany jest wewnętrzny czujnik temperatury.
- MCXO - wykorzystywany jest kształt charakterystyki rezonatora w funkcji temperatury.
- OCXO - jest stabilizowany termicznie. Rezonator zamknięty w obudowie i odpowiednio podgrzewany.
Dokładniejsze obliczenia taktowania kwarcu
Kolejnym elementem jest pojemność jaka występuje w dopasowanych kondensatorach oraz pojemności ścieżek i wszystkich dodatkowych elementów.
Dokładniejsze obliczenia dla kwarcu można przeprowadzić w oparciu o notę wydaną przez STM32 [1].
Przykładowy model kwarcu zawiera takie elementy jak: C0, jest to pojemność bocznikowa, która wynika z pojemności elektrod, Lm reprezentuje wibrującą część kryształu, pojemność Cm pozwala na określenie wibrującej części kryształu, rezystancja Rm opisuje straty jakie występują w obwodzie.
Rys. 1. Model kwarcu [1]
Poniżej przedstawiam wzory wraz z przykładowymi obliczeniami dla kwarcu 8MHz zastosowanego w STM32F4.
Fs jest to częstotliwość rezonansowa przy impedancji wynoszącej 0, czyli dolna minimalna częstotliwość. Fa jest to maksymalna dopuszczalna częstotliwość.
Rys. 2. Wzory do obliczeń częstotliwości
Częstotliwość taktowania zależy głównie od parametry Cl. W jego skład wchodzą pojemności kondensatorów jakie są umieszczone koło kwarcu oraz od pojemności pasożytniczych ścieżek łączących te elementy.
Rys. 3. Obliczenie pojemności
Cs oznacza pojemność pasożytniczą ścieżek od kwarcu do mikrokontrolera. Cl1 i Cl2 są to wartości kondensatorów towarzyszących.
Dokładną częstotliwość generowaną przez układ można wyliczyć z równania zamieszczonego na rysunku 4.
Rys. 4. Obliczenie dokładnej wartości częstotliwości
Jak montować
W celu zapewnienia jak najlepszych parametrów sygnału taktującego generowanego z kwarcu należy stosować następujące zasady:
- kwarc umieszczony jak najbliżej pinów wejściowych układu taktowanego, najlepiej w odległości kilku mm.
- kondensatory wspomagające poprawną pracę powinny być umieszczone jak najbliżej źródła taktującego.
- dobrym pomysłem jest także oblać okolicę tego układu masą, przez co będzie on odpowiednio oddzielony od źródeł zakłócających
- linie z sygnałami szybkozmiennymi, posiadającymi dużą częstotliwość, należy umieścić możliwie daleko od kwarcu
Tutaj wspomnę jeszcze, że błąd spowodowany błędnym działaniem oscylatora może powodować trudności w działaniu układu dopiero po kilku latach, gdzie wpływy starzenia się kwarcu dadzą poważnie o sobie znać. Więc jeśli na etapie projektowania nie został układ dopracowany, to należałoby pomyśleć o wymianie kwarcu na nowy.
Na etapie projektowania warto także przewidzieć możliwość, poprawki zegaru poprzez dostrojenie go co jakiś czas z zegarem internetowym.
Bibliografia
[1] STM32, "Oscillator design guide for ST microcontrollers"
[2] Elektronika Praktyczna, Minimalizacja dryftu częstotliwości rezonatorów kwarcowych