Przetaktowywanie Arduino z wykorzystaniem chłodzenia ciekłym azotem. Cel 20 MHz ⇒ 65,3 MHz @ -196°C
Przed opisem projektu autor odpowiada na dwa podstawowe pytania, które i tak zostałyby zadane, więc może warto od tego zacząć?
1) Dlaczego? Bo mogę. Aby nauczyć się jak działa elektronika w warunkach kriogenicznych i z czystej ciekawości, ile mocy obliczeniowej da się wycisnąć z zwykłego AVRa, jeśli odpowiednio mocno się postaramy. Eksperyment ten jest także poniekąd analogiczny do podobnych eksperymentów przeprowadzonych z wykorzystaniem procesorów komputerów osobistych.
2) Dlaczego Arduino UNO (ATmega328P)? Oczywiście, istnieje wiele szybszych mikrokontrolerów, jednakże ten model Arduino zdaje się być najpopularniejszy pośród amatorów programowania i mikrokontrolerów. Z punktu widzenia praktycznego łatwiej byłoby wykorzystać ARMu (na przykład Cortex M3 lub M4) albo układ FPGA.
Przetaktowywanie mikrokontrolerów z wykorzystaniem ciekłego azotu wydaje się być trudniejsze niż taki sam zabieg z wykorzystaniem procesora komputera osobistego - nie istnieją żadne znane testery wydajności, AVRy nie posiadają wewnętrznego programowalnego generatora częstotliwości ani źródła zasilania. Ponadto podczas zamrażania płytki prototypowej także inne jej elementy były chłodzone, często było to źródłem ich awarii. Na szczęście udało się pokonać wszystkie problemy napotkane podczas realizacji projektu.
Ciekły azot (LN2)
Autor już od dawna chciał wykorzystać do czegoś ciekły azot (LN2). Okazuje się że w okolicach Moskwy, gdzie mieszka, istnieje szereg firm sprzedających LN2 osobom fizyczny. Najbliżej jego miejsca zamieszkania znajduje się NII KM, gdzie litr ciekłego azotu można kupić już za $1,5. Oczywiście ceny wahają się i czasami dochodzą aż do $8.
Ciekły azot jest - dosłownie - robiony z powietrza. Jest ono skraplane, a następnie składniki są separowane od siebie w kolumnie frakcjonującej. Innym sposobem jest oddzielenie najpierw azotu od innych gazów składających się na powietrze, a następnie skroplenie go. Do oddzielania innych gazów od azotu używa się najczęściej filtrów zeolitowych. Maszyny do wytwarzania ciekłego azotu dostępne są komercyjnie, a koszt elektryczności potrzebnej do wytworzenia jednego litra LN2 to około $0,15 - $0,30... wiadomo już o co prosić św. Mikołaja
Pomimo bardzo niskiej temperatury ciekłego azotu (-196 °C ) można go normalnie transportować z wykorzystaniem zwykłych stalowych pojemników (szklane są wykluczone - stres termiczny w szkle spowoduje ich pęknięcie). Po dodaniu niewielkiej izolacji termicznej - 1 cm piankowego materiału plus warstwa folii) LN2 mógł być przechowywany przez około 30 godzin. Dla porównania - w dedykowanych pojemnikach na ciekły azot o pojemności 5 L (naczynia Dewara - przyp. tłum.) LN2 można przechowywać nawet przez 25 dni. Pamiętać należy że naczyń z skroplonym gazem nie można szczelnie zamykać! parujący gaz wytworzy ciśnienie zdolne rozerwać pojemnik. Każdy pojemnik.
Testy mikrokontrolera
Autor zmuszony był napisać odpowiednie oprogramowanie testujące do AVRa. Testuje ono zapis i odczyt z pamięci SRAM, odczyt pamięci flash a także wykonuje operacje arytmetyczne i monitoruje przebieg programu. Pomysł testu jest bardzo prosty - każdy krok niemalże losowo zmienia sumę kontrolną, ale po pewnej licznie cykli suma kontrolna zbiega do ustalonej wartości. Program da się pobrać z strony autora.
Rezultaty analizy wyświetlane są na standardowym LCD (HD44780) podłączonym do mikrokontrolera szyną 4 bitową. W drugiej linijce wyświetlacza znajdują się wszystkie istotne dane - numer iteracji oraz suma kontrolna. Jeśli wszystko jest w porządku suma kontrolna powinna wynosić 12345678. Pierwsze dwie cyfry odpowiadają za test SRAM, następne za flash, test arytmetyki i działania programu. Błędy w sumie kontrolnej się kumulują, zatem żaden błąd nie pozostanie niezauważony, nawet jeśli wydarzy się tylko raz.
Rezultaty badania stabilności programu są także podawane na mrugające pomarańczowe LEDy na płytce. Równomierne mrugania oznacza że wszystko jest OK. Jedno krótkie mrugnięcie odpowiada za błąd SRAM, dwa za flash etc.
Przy testach w temperaturze około -100 °C najczęstszymi błędami były błędy wynikające z ciągłości programu, przy temperaturze LN2 (-196 °C) najczęściej zawodziła pamięć SRAM. Wyświetlanie błędów na LEDach zostały zaimplementowane z powodu potencjalnych trudności z implementacją obsługi wyświetlacza spowodowanych podwyższonym napięciem pracy. Jednakże w rzeczywistości okazało się inaczej - właściwości diod LED drastycznie zmieniły się po schłodzeniu. Najpierw zmieniły one kolor, a następnie przestały w ogóle świecić. Wszystko wskazuje na to że pod wpływem zmiany temperatury przerwa energetyczna półprzewodnika zwiększyła się na tyle że napięcie przyłożone do diody było niedostateczne. Poniżej dokładniej opisano ten efekt.
Generator zegara taktującego
Arduino zazwyczaj taktowane jest z wykorzystaniem generatora kwarcowego. Fundamentalne częstotliwości tego typu generatorów zazwyczaj wynoszą 30 MHz lub mniej, co oznacza że nie jesteśmy w stanie wykorzystać tego rozwiązania do porządnego przetaktowania układu, musimy wykorzystać zewnętrzny generator. Aby nie zmieniać nic w samej płytce prototypowej po prostu odgięto dwa piny mikrokontrolera i podłączono jest do zewnętrznego generatora zegarowego. Oczywiście fuse bity zostały odpowiednio ustawione aby mikrokontroler korzystał z zewnętrznego zegara, co wymagało wykorzystania zewnętrznego programatora równoległego. (TL866CS MiniPro). Na zdjęciu poniżej, oprócz programatora, widać zewnętrzny moduł przetwornicy DC-DC opaty o LM2596, który został wykorzystany do zasilania układu.
Autor niestety nie posiada generatora laboratoryjnego o zakresie do 100 MHz, a jako że nie jest to tanie urządzenie samodzielnie skonstruował prosty generator do taktowania tego układu. Założenia były proste - częstotliwość od 16 MHz do 100 MHz, wypełnienie impulsów 50%, przebieg oczywiście prostokątny. Po pewnych problemach udało mu się skonstruować taki układ. Okazało się że większość dostępnych aktualnie popularnych układów TTL nie radzi sobie za dobrze z tak dużym zakresem częstotliwości lub działa niestabilnie. Schemat generatora poniżej.
Opornik R1 służy tutaj do terminacji szeregowej układu, a także ogranicza nadmierne napięcie na wyjściu. Przy zasilaniu 8V szpilki napięcia mogły by dochodzić nawet do 16 V, co jest niebezpieczne dla mikrokontrolera. Do jego skonstruowania można wykorzystać układy AC, LVC oraz VHC. Układy HC są zbyt wolne (maks 50 MHz). Odradza się równoległe łączenie wyjść układów, gdyż z uwagi na różny ich czas załączania czasami na wyjściu, na kilka nanosekund, pojawia się sygnał o amplitudzie 0,5 V.
Co dzieje się z elementami elektronicznymi w temperaturach kriogenicznych?
Po schłodzeniu do temperatury ciekłego azotu rezystancja metali znacznie spada. Na przykład opór cewki wynosi 56,3 Ω w temperaturze pokojowej, a jedynie 6,6 Ω w temperaturze LN2 - spadek o czynnik 8,5. W przypadku kondensatorów sprawy są znacznie bardziej skomplikowane. Pojemność kondensatorów spada o 5..6 rzędów wielkości - w zasadzie do zera. Ceramiczne kondensatory zachowują się zależnie od użytego dielektryka - Y5V spada do zera, droższe X7R spada do około 2/3 pojemności natomiast w przypadku kondensatorów z dielektrykiem NP0 spadek to tylko 1%, jednakże te ostatnie da się zakupić tylko do około 1000 pF. Zatem jeśli do odsprzęgania zasilania w układzie wykorzystano kondensatory z dielektrykiem Y5V układ może nie działać stabilnie w temperaturze LN2. W przypadku podgrzewania kondensatorów, do około 100 - 150 °C efekt jest podobny, można je zatem testować w takich warunkach. Aby zapewnić stabilne działanie mikrokontrolera autor zalutował kondensatory X7R i NP0 bezpośrednio na wyprowadzenia zasilające AVRa.
W przypadku półprzewodników niska temperatura poszerza przerwę energetyczną i zwiększa ruchliwość nośników (dziur i elektronów), jednakże nie jest to proces liniowy. W praktyce w ciekłym azocie spadek napięcia na diodzie krzemowej wynosi 1,1 V zamiast 0,6 V znanego z temperatury pokojowej. Efekt ten poważnie wpływa na działanie analogowej części układu. Drugą konsekwencją zwiększenia się przerwy energetycznej jest zmiana koloru emisji diod LED. Poszerzenie przerwy energetycznej powoduje przesunięcie się emisji w stronę krótkofalową (ku niebieskiemu). Efekt ten widać najlepiej dla diod żółtych i czerwonych - świecą na zielono. Jednocześnie wzrasta zapotrzebowanie na napięcie.
Czemu układy CMOS działają szybciej w niskiej temperaturze?
Prędkość działania układów wykonanych w technice CMOS zależy głównie od tego jak szybko tranzystory są w stanie naładować pasożytniczą pojemność (pojemność złącza plus pojemność bramki) poprzez pasożytniczy opór i induckyjność (połączenia pomiędzy tranzystorami). Gdy zmniejszymy temperaturę spada opór połączeń, co powoduje że całość działa szybciej. Zatem - LN2 pomaga w przetaktowywaniu układu nie dlatego że pomaga w odprowadzaniu ciepła z układu, ale dlatego że zmienia - na lepsze - parametry elektryczne układów CMOS.
Niech przetaktowywanie się rozpocznie!
Po wszystkich opisanych powyżej przygotowaniach można było przystąpić do samego eksperymentu. Włączony układ umieszczono w kuwecie i zaczęto wlewać LN2. Po chwili od wlania azotu... podświetlenie LCD zagasło, a sama płyta się zawiesiła. Gigantyczna porażka. Jednakże po podniesieniu płytki lekko powyżej poziomu cieczy, co spowodowało jej podgrzanie, płyta działała poprawnie i stabilnie z zegarem do 45 MHz. Jednakże sam rezultat nie był stabilny, gdyż temperatura układu pływała.
Po dokładniejszej analizie tego efektu okazało się że winnym tego zachowania może być detektor zapadu napięcia (ang. brown-out - spadek napięcia poniżej pewnego progu, wyższego niż black-out, czyli totalny zanik zasilania - przyp. tłum.). Po wyłączeniu detektora zapadu napięcia zasilającego płytka działała w pełni poprawnie w czasie zanurzenia w LN2. Jednakże problem związany z podświetleniem LCD nadal był aktualny. Podświetlenie zasilane było z płytki wyposażonej w liniowy stabilizator napięcia. Okazuje się że w temperaturach kriogenicznych układ ten nie działał lub napięcie było zbyt małe aby zapalić diodowe podświetlenie LCD.
Stabilny zegar układu wyniósł w tych warunkach około 50 MHz. Na tym etapie autor zaczął zwiększać napięcie zasilania, aż do 8 V. Powyżej tego napięcia mikrokontroler przestawał działać stabilnie. Przy napięciu około 7,5 V - 8 V udało się osiągnąć stabilną pracę przy zegarze 65,3 MHz. Dla porównania w temperaturze pokojowej przy zasilaniu 5V maksymalny zegar wyniósł 32,5 MHz, a przy zasilaniu 8 V 37 MHz. Przeprowadzono godzinną próbę stabilności na 65 MHz - nie zostały wykryte żadne błędy podczas pracy Arduino. W trakcie tego eksperymentu zużyto 3 litry ciekłego azotu.
Po wyjęciu Arduino z ciekłego azotu natychmiastowo pokrywa się ono szronem
Podsumowanie
* Arduino UNO wyposażone w ATmega328P jest stabilne przy zasilaniu 8 V do częstotliwości taktowania 65,3 MHz w temperaturze ciekłego azotu.
* Udało się eksperymentalnie sprawdzić jak elementy elektroniczne zmieniają swoje właściwości w temperaturach kriogenicznych - metal zmniejsza opór, kondensatory tracą pojemność, przerwa energetyczna półprzewodników poszerza się (diody LED zmieniają kolor, układy analogowe działają inaczej)
* Podczas schładzania układów poniżej 0 °C należy pamiętać o ogrzewaniu kondensatorów. W innym razie układ nie będzie stabilny z uwagi na brak odsprzęgania zasilania.
* Żadne Arduino nie zostało skrzywdzone w trakcie eksperymentu
Źródła:
http://3.14.by/en/read/arduino-liquid-nitrogen-overclocking
Fajne? Ranking DIY
