Tester rezonatorów kwarcowych
: poniedziałek 13 gru 2021, 03:02
Swego czasu obiecałem w temacie „Z PC-towego śmiatnika”, że jak coś wymyślę, to dam znać. No i wymyśliłem: tester rezonatorów kwarcowych. Temat nawet całkiem interesujący, gdyż jest to okazja na połączenie kilku wątków (takie zagadnienie wielowątkowe). Nawet doliczyłem się trzech wątków, bo z PC-towego śmetnika pochodzi zastosowanie układu FS741 i TPS2013 <tutaj>, oraz wątek poświęcony kompilatorowi SDCC dla procków C51 <tutaj>.
Zdecydowałem się na użycie proca z rodziny C51. Tak nawiasem mówiąc to chyba najbardziej rozległa rodzina (liczba jego mutacji i firm, które wypuściły go na świat jest całkiem spora). Tak patrząc z historycznego punktu widzenia, to był taki okres w dziejach, że ten proc stał się praktycznie jedną z niewielu alternatyw do stosowania. Owszem był wręcz kultowy Z-80, ale czasy jego świetności przeszły do historii i można o nich jedynie poczytać w kronikach. Era AVR'ów jeszcze nie nadeszła, więc... nie bardzo była szeroka alternatywa do wyboru. Cóż, trzeba się dostosować do możliwości i w ich zakresie się poruszać. Wybór jest jeszcze podyktowany przez czysty pragmatyzm: przez całe życie człowiek sobie zgromadził tak całkiem sporo problemów. Tak na moje oko to będzie jakieś 100 sztuk procków (a może i więcej) z tej familii, z którymi nie bardzo wiadomo co zrobić (bo zupy z nich nie będę gotować – chyba wyjdzie mało kaloryczna).
A problemy należy rozwiązywać, więc... o jednego na stosiku będzie mniej. Tak jakoś się dzieje, że wszystko powoli składa się do kupy. Jednym z powodów, dla których przestałem używać tych procków było oprogramowanie narzędziowe. W czasach średniowiecznych pisałem w asm, ale ta zabawa na dłuższą metę jest dosyć wyczerpująca (nawet mam kilka niedokończonych projektów w tej architekturze, bo nie chciało mi się dłubać w asmie, może właśnie przyszedł czas na realizację niedokończonych tematów). Każdy jakoś dąży do lepszych czasów, gdzie podstawowym narzędziem jest kompiler C. No więc pojawił się niekomercyjny (legalny w użyciu i bez ograniczeń) kompiler C dla procków C51. Nawet naumiałem się jego używać.
Jak sprawdzić, że rezonator kwarcowy działa? Jest taka koncepcja, że należy podłączyć go do układu FS741. Jak jest wszystko OK, to na wyjściu tego cosia będzie fala prostokątna. Początkowo wymyśliłem jedynie jakiś układ, który stwierdzi, czy jest na wyjściu FS741 przebieg zegarowy. Takie coś typu jest ↔ nie ma. Temat odłożyłem na kilka dni do przemyśleń. Często stosuję tą metodę: czy wytrzyma próbę czasu. No i koncepcja nie wytrzymała tej próby, została znacznie poszerzona. No urodziła mi się w głowie taka rozbudowa: może przydało by się stwierdzić a ile Hz'ów ów cóś produkuje. Skoro w szufladzie walają się całkiem fajne układy, to wymyśliłem sobie, że ten układ będzie miał komutowane zasilanie przez układ TPS2013. FS741 ma jakieś swoje magiczne dopasowania do rezonatora kwarcowego w zależności od jego częstotliwości, które „zaciąga” jedynie w chwili załączenia zasilania → trzeba prockiem włączać i wyłączać układ. Przy okazji sam układ staje się bezpieczny, bo nie do końca wiadomo, czy takie grzebanie w biegu mu nie nabruździ (rezonatory kwarcowe w końcu trzeba wtykać i wytykać). No i nie wiadomo, czy jak gwałtownie zmieni się częstotliwość rezonatora, to czy układ nie zgłupieje. No więc istniejąca koncepcja została powiększona o miernik częstotliwości.
Wygląda to następująco. Sam generator oparty o układ FS741 z komutacją zasilania w wykonaniu TPS2013.
Całością zarządza procek (z rodziny C51, mam nadzieję, że starczy mu pamięci FLASH na program, choć w sytuacji podbramkowej mam asa w rękawie: AT89C53 → ten ma szersze horyzonty, znaczy więcej pamięci). Aplikacja nie odbiega od typowej. Jedynie sygnał RESET dla proca (w C51 jest takie nietypowe rozwiązanie, gdzie stanem aktywnym jest HIGH, ja jakoś sympatyzuję z filozofią Ziloga, gdzie stanem aktywnym jest LOW) jest przepuszczony przez bramkę Schmitta na potrzeby układu PLD.
Wszystko chciałem zrealizować w średniowiecznej technologii, nawet hercmeter zrobić na TTL'ach, ale wyszedł pewien problem. Zakładając, że zajdzie potrzeba obróbki kwarców do 50MHz, to standardowe TTL'e mogą mieć problemy z nadążaniem za rzeczywistością (liczniki tak wysoko nie sięgają). Pozostała alternatywa pod tytułem układ PLD. No więc sam hercmeter bazuje na mało średniowiecznych układach: rodzina XC9500XL.
Obok pomiernika częstotliwości jest drobny układ tranzystorowy do stwierdzenia, czy jest fala prostokątna, czy jej nie ma. Wyjście ma charakter logiczny.
Jak się bawić, to na całego. Do zabawy jest niezbędny jakiś wyświetlacz i niewielka klawiatura. Schematy nie są skomplikowane.
Klawiatura bazuje na układzie 74HCT165: rejestr przesuwający o wejściu równoległym i wyjściu szeregowym. To pozwala znacząco zaoszczędzić piny w procku, ale komplikuje obsługą (no coś za coś).
Całość zamyka impulsowy stabilizator napięcia. Często stosuję takie rozwiązanie z układem LM2575, przynajmniej nie sprawia mi niespodzianek.
Taka to oto koncepcja. Nie jest to jeszcze projekt zrealizowany do końca, więc nie wiadomo, czy nie zawiera problemów do rozwiązania, których nie dostrzegłem w fazie tworzenia schematu. Buduję jeden egzemplarz, więc nawet nie będę projektować płytki PCB, całość pokynarzę. Oprócz sporej pracochłonności, ta koncepcja ma jedną poważną zaletę: każdy problem jaki wyjdzie po drodze można rozwiązać bez przecinania ścieżek. Cokolwiek wyjdzie nie tak, da się naprawić metodą przecinania drucików i innego połączenia i finalnie tego nie będzie widać.
PS
Zrezygnowałem z początkowej koncepcji sterowania pinami RS0 i RS1 w układzie FS741. Gdyby coś wyszło nie halo ze wzbudzeniem rezonatora, to mam w zanadrzu jeszcze wolne piny w procku i zawsze można coś dobudować. Robiąc „badania naukowe” z tym układem, sprawdziłem kilka kwarców, ale były one ze środkowego zakresu częstotliwości. Nie sprawdziłem przykładowo typowych kwarców zegarkowych 32kHz i bardzo dużych typu kilkadziesiąt MHz. Cóż, o problemach dowiadujemy się jak już wystąpią, ale ufam, że nie będzie problemów.
Zdecydowałem się na użycie proca z rodziny C51. Tak nawiasem mówiąc to chyba najbardziej rozległa rodzina (liczba jego mutacji i firm, które wypuściły go na świat jest całkiem spora). Tak patrząc z historycznego punktu widzenia, to był taki okres w dziejach, że ten proc stał się praktycznie jedną z niewielu alternatyw do stosowania. Owszem był wręcz kultowy Z-80, ale czasy jego świetności przeszły do historii i można o nich jedynie poczytać w kronikach. Era AVR'ów jeszcze nie nadeszła, więc... nie bardzo była szeroka alternatywa do wyboru. Cóż, trzeba się dostosować do możliwości i w ich zakresie się poruszać. Wybór jest jeszcze podyktowany przez czysty pragmatyzm: przez całe życie człowiek sobie zgromadził tak całkiem sporo problemów. Tak na moje oko to będzie jakieś 100 sztuk procków (a może i więcej) z tej familii, z którymi nie bardzo wiadomo co zrobić (bo zupy z nich nie będę gotować – chyba wyjdzie mało kaloryczna).
A problemy należy rozwiązywać, więc... o jednego na stosiku będzie mniej. Tak jakoś się dzieje, że wszystko powoli składa się do kupy. Jednym z powodów, dla których przestałem używać tych procków było oprogramowanie narzędziowe. W czasach średniowiecznych pisałem w asm, ale ta zabawa na dłuższą metę jest dosyć wyczerpująca (nawet mam kilka niedokończonych projektów w tej architekturze, bo nie chciało mi się dłubać w asmie, może właśnie przyszedł czas na realizację niedokończonych tematów). Każdy jakoś dąży do lepszych czasów, gdzie podstawowym narzędziem jest kompiler C. No więc pojawił się niekomercyjny (legalny w użyciu i bez ograniczeń) kompiler C dla procków C51. Nawet naumiałem się jego używać.
Jak sprawdzić, że rezonator kwarcowy działa? Jest taka koncepcja, że należy podłączyć go do układu FS741. Jak jest wszystko OK, to na wyjściu tego cosia będzie fala prostokątna. Początkowo wymyśliłem jedynie jakiś układ, który stwierdzi, czy jest na wyjściu FS741 przebieg zegarowy. Takie coś typu jest ↔ nie ma. Temat odłożyłem na kilka dni do przemyśleń. Często stosuję tą metodę: czy wytrzyma próbę czasu. No i koncepcja nie wytrzymała tej próby, została znacznie poszerzona. No urodziła mi się w głowie taka rozbudowa: może przydało by się stwierdzić a ile Hz'ów ów cóś produkuje. Skoro w szufladzie walają się całkiem fajne układy, to wymyśliłem sobie, że ten układ będzie miał komutowane zasilanie przez układ TPS2013. FS741 ma jakieś swoje magiczne dopasowania do rezonatora kwarcowego w zależności od jego częstotliwości, które „zaciąga” jedynie w chwili załączenia zasilania → trzeba prockiem włączać i wyłączać układ. Przy okazji sam układ staje się bezpieczny, bo nie do końca wiadomo, czy takie grzebanie w biegu mu nie nabruździ (rezonatory kwarcowe w końcu trzeba wtykać i wytykać). No i nie wiadomo, czy jak gwałtownie zmieni się częstotliwość rezonatora, to czy układ nie zgłupieje. No więc istniejąca koncepcja została powiększona o miernik częstotliwości.
Wygląda to następująco. Sam generator oparty o układ FS741 z komutacją zasilania w wykonaniu TPS2013.
Całością zarządza procek (z rodziny C51, mam nadzieję, że starczy mu pamięci FLASH na program, choć w sytuacji podbramkowej mam asa w rękawie: AT89C53 → ten ma szersze horyzonty, znaczy więcej pamięci). Aplikacja nie odbiega od typowej. Jedynie sygnał RESET dla proca (w C51 jest takie nietypowe rozwiązanie, gdzie stanem aktywnym jest HIGH, ja jakoś sympatyzuję z filozofią Ziloga, gdzie stanem aktywnym jest LOW) jest przepuszczony przez bramkę Schmitta na potrzeby układu PLD.
Wszystko chciałem zrealizować w średniowiecznej technologii, nawet hercmeter zrobić na TTL'ach, ale wyszedł pewien problem. Zakładając, że zajdzie potrzeba obróbki kwarców do 50MHz, to standardowe TTL'e mogą mieć problemy z nadążaniem za rzeczywistością (liczniki tak wysoko nie sięgają). Pozostała alternatywa pod tytułem układ PLD. No więc sam hercmeter bazuje na mało średniowiecznych układach: rodzina XC9500XL.
Obok pomiernika częstotliwości jest drobny układ tranzystorowy do stwierdzenia, czy jest fala prostokątna, czy jej nie ma. Wyjście ma charakter logiczny.
Jak się bawić, to na całego. Do zabawy jest niezbędny jakiś wyświetlacz i niewielka klawiatura. Schematy nie są skomplikowane.
Klawiatura bazuje na układzie 74HCT165: rejestr przesuwający o wejściu równoległym i wyjściu szeregowym. To pozwala znacząco zaoszczędzić piny w procku, ale komplikuje obsługą (no coś za coś).
Całość zamyka impulsowy stabilizator napięcia. Często stosuję takie rozwiązanie z układem LM2575, przynajmniej nie sprawia mi niespodzianek.
Taka to oto koncepcja. Nie jest to jeszcze projekt zrealizowany do końca, więc nie wiadomo, czy nie zawiera problemów do rozwiązania, których nie dostrzegłem w fazie tworzenia schematu. Buduję jeden egzemplarz, więc nawet nie będę projektować płytki PCB, całość pokynarzę. Oprócz sporej pracochłonności, ta koncepcja ma jedną poważną zaletę: każdy problem jaki wyjdzie po drodze można rozwiązać bez przecinania ścieżek. Cokolwiek wyjdzie nie tak, da się naprawić metodą przecinania drucików i innego połączenia i finalnie tego nie będzie widać.
PS
Zrezygnowałem z początkowej koncepcji sterowania pinami RS0 i RS1 w układzie FS741. Gdyby coś wyszło nie halo ze wzbudzeniem rezonatora, to mam w zanadrzu jeszcze wolne piny w procku i zawsze można coś dobudować. Robiąc „badania naukowe” z tym układem, sprawdziłem kilka kwarców, ale były one ze środkowego zakresu częstotliwości. Nie sprawdziłem przykładowo typowych kwarców zegarkowych 32kHz i bardzo dużych typu kilkadziesiąt MHz. Cóż, o problemach dowiadujemy się jak już wystąpią, ale ufam, że nie będzie problemów.
