logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Przetaktowanie Arduino z chłodzeniem ciekłym azotem

ghost666 25 Wrz 2013 15:05 11778 7
  • Przetaktowanie Arduino z chłodzeniem ciekłym azotem

    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 ;).

    Przetaktowanie Arduino z chłodzeniem ciekłym azotem
    Przetaktowanie Arduino z chłodzeniem ciekłym azotem


    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.

    Przetaktowanie Arduino z chłodzeniem ciekłym azotem


    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.

    Przetaktowanie Arduino z chłodzeniem ciekłym azotem


    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.

    Przetaktowanie Arduino z chłodzeniem ciekłym azotem


    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.

    Przetaktowanie Arduino z chłodzeniem ciekłym azotem


    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.

    Przetaktowanie Arduino z chłodzeniem ciekłym azotem


    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.

    Przetaktowanie Arduino z chłodzeniem ciekłym azotem Przetaktowanie Arduino z chłodzeniem ciekłym azotem Przetaktowanie Arduino z chłodzeniem ciekłym azotem


    Po wyjęciu Arduino z ciekłego azotu natychmiastowo pokrywa się ono szronem

    Przetaktowanie Arduino z chłodzeniem ciekłym azotem






    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 ;). Płytka prototypowa po całym eksperymencie nadal jest w pełni funkcjonalna.
    Źródła:
    http://3.14.by/en/read/arduino-liquid-nitrogen-overclocking

    Fajne? Ranking DIY
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    https://twitter.com/Moonstreet_Labs
    ghost666 napisał 11960 postów o ocenie 10197, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • #2 12776870
    dondu
    Moderator na urlopie...
    Wprawdzie temat dotyczył przetaktowania, ale szkoda, że autor nie zgłębił tematu wpływu temperatury na część analogową (wspomniał jedynie, że jest ogromny), wszak to jeden z najistotniejszych elementów mikrokontrolerów.
  • #3 12777031
    maciej_333
    Poziom 38  
    Przetaktowałem ostatnio w pewnym projekcie Atmegę16A do 20MHz. Niby działa dobrze, ale są np. problemy z UART'em. Działa dziwnie powyżej 38400b/s. Natomiast w Atmedze32 UART nie działał wcale przy tej częstotliwości taktowania.
  • #4 12777128
    shg
    Poziom 35  
    Chciałbym zaprzeczyć doniesieniom, jakoby nie można było wlewać ciekłego azotu do szklanych pojemników. Można, ale pojemnik musi być wykonany z odpowiedniego szkła. Nadaje się np. Duran, czyli szkło borokrzemianowe 3.3 (współczynnik rozszerzalności cieplnej 3.3e-6 1/K). Bez problemu można kupić szklane dewary (obudowane jakimś plastikiem / metalem) przeznaczone do przechowywania LN2. Sam takiego używam.

    Cały czas mam w planie sprawdzenie jak zachowa się cały zestaw LED (różne kolory) przy takim chłodzeniu. Myślałem też o zrobieniu superniskoszumnego wzmacniacza mikrofonowego, niestety to nie CCD i chłodzenie do -40°C zmniejsza szum tylko nieznacznie.
  • #5 12777942
    NdYAG
    Poziom 16  
    shg napisał:
    Chciałbym zaprzeczyć doniesieniom, jakoby nie można było wlewać ciekłego azotu do szklanych pojemników. Można, ale pojemnik musi być wykonany z odpowiedniego szkła. Nadaje się np. Duran, czyli szkło borokrzemianowe 3.3 (współczynnik rozszerzalności cieplnej 3.3e-6 1/K). Bez problemu można kupić szklane dewary (obudowane jakimś plastikiem / metalem) przeznaczone do przechowywania LN2. Sam takiego używam.
    .


    Tutaj chodzi o co innego: zabrudzony pojemnik szklany jest niebezpieczny, bo inna jest rozszerzalność szkła a inna pokrywającego szkło brudu (czy innej obecnej substancji, np. wody). Ponieważ są to naczynia z wąskimi szyjami trudno obejrzeć wnętrze takiego pojemnika i wyczyścić. Jeśli pojemnik jest czysty to ok.
  • #6 13005912
    jacynka84
    Poziom 26  
    Co te ludzie z ta atmegą...Niech Xmega się wreszcie spopularyzuje SMD i niskie napięcia.
    Co rusz to dziadowska atmega8 się gdzieś przewija.

    Choć rozumiem że to akurat na cele eksperymentu.
    Co do przetaktowania to Xmega 32a4 działa mi na 64Mhz, (org 32Mhz), ale prefyreia nie podzielają jej zapału i taki Lcd ILI9341 na SPI siada powyżej 48Mhz o ile pamiętam, jednak ledy itp proste rzeczy działały przy 64Mhz co znaczyło że sama xmega też, zobaczę czy da się jej pocisnąć 72Mhz+.
  • #7 13005969
    ghost666
    Tłumacz Redaktor
    jacynka84 napisał:
    Co te ludzie z ta atmegą...Niech Xmega się wreszcie spopularyzuje SMD i niskie napięcia.
    Co rusz to dziadowska atmega8 się gdzieś przewija.

    Choć rozumiem że to akurat na cele eksperymentu.
    Co do przetaktowania to Xmega 32a4 działa mi na 64Mhz, (org 32Mhz), ale prefyreia nie podzielają jej zapału i taki Lcd ILI9341 na SPI siada powyżej 48Mhz o ile pamiętam, jednak ledy itp proste rzeczy działały przy 64Mhz co znaczyło że sama xmega też, zobaczę czy da się jej pocisnąć 72Mhz+.


    (nie)stety AVRy to nowe 8051 i ATmega będzie żyła jeszcze bardzo długo wśród hobbystów, tak jak rdzeń '51 egzystuje nadal w wielu aplikacjach embedded.
  • #8 13006339
    jacynka84
    Poziom 26  
    No niestety.
    Teraz Xmega kręciłem na 3,3V rzecz jasna na wew. oscylatorze, na 64Mhz chodził normalnie choć na Lcd 320x240 pojawiały się rzadko artefakty, ale zasadniczo działał niemal normalnie, z tym lcd przy 72Mhz nie startowała, ale bez lcd startowała ale robiła błędy nawet przy błyskaniu ledami.
    Może w celach takich jak w artykule podwyższę napięcie ale to nie teraz, tym bardziej że lcd nie mogę traktować za wysokim napięciem bo ryzykowne.
REKLAMA