Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Miernik temperatur do PC pod zatokę 3.5 cala

phanick 13 Aug 2020 13:51 4086 6
  • Miernik temperatur do PC pod zatokę 3.5 cala
    Miernik temperatur do PC pod zatokę 3.5 cala
    Projekt powstał na zamówienie znajomego, ale trochę spędziłem nad nim czasu i nie wszystko szło jak po myśli, więc pomyślałem, że może przy okazji powstanie z tego ciekawy artykuł do działu DIY.

    Założenia
    Tematem miał być miernik trzech temperatur (CPU, GPU oraz powietrza w obudowie), umieszczany z zatoczkę 3.5 cala. Wynik prezentowany byłby na trzech wyświetlaczach siedmiosegmentowych. Dodatkowym elementem miał być port USB, który pozwalałby przenieść wewnętrzne gniazdo USB, obecny na karcie rozszerzeń PCI w bardziej racjonalne miejsce, tj. na front obudowy i oczywiście wykorzystywany też do zasilenia miernika. Sposób realizacji dowolny.
    Miernik temperatur do PC pod zatokę 3.5 cala

    Projekt
    Podejścia konstrukcyjne były dwa:
    1) całość umieszczona na pojedynczej płytce PCB pasującej w zatoczkę i jakiś sposób montowana do zatoki w obudowie komputera,
    + oszczędność czasu w wykonaniu (tylko jedna płytka)
    - brak konieczności stosowania dodatkowych gniazd/wtyków łączących wie płytki
    - konieczność montażu gniazda USB w pionie
    - konieczność starannego zaprojektowania PCB i maksymalnego upchania wszystkich elementów

    2) Wyświetlacze umieszczone na pierwszej płytce, a reszta na drugiej, połączone złączem szpilkowym 90 stopniowym. Druga płytka byłaby montowana do zatoki od dołu.
    + gniazdo USB można zamocować w poziomie na drugiej płytce
    + więcej miejsca na drugiej płytce do umieszczenia elementów
    - konieczność wykonania 2 płytek
    Miernik temperatur do PC pod zatokę 3.5 cala

    Jako, że lubię wyzwania optymalizacyjne, wybrałem pierwszą metodę.
    * Do tego typu projektu świetnie nadaje sie AVR Atmega 8 w miniaturowej obudowie TQFP32 - wystarczająca ilość końcówek
    * Jako czujniki temperatury wybrane zostały oczywiście DS18B20 pracujące na magistrali 1-W3ire.
    * Do sterowania anodami wyświetlaczy wykorzystałem tranzystory PNP BC857 (IcMAX = 100mA, IcPeak = 200mA) w obudowie SOT23 (kazdy z segmentów wyświetlacza ma ustalony prąd na Iseg = 20 mA:
    Rcathode = (VCC - VGreenLed) / Iseg = (5V - 1.8V) / 20mA = 160R =~ 150R (czyli Iseg =~ 21mA)
    Więc sumarycznie przy wszystkich zapalonych segmentach daje to 7 * 21 = 147 mA. Jednak każdy wyświetlacz jest włączany tylko na 1/6 swojego czasu więc średni prąd to 147 mA / 6 = 25 mA.
    Tranzystory mają pracować jako klucze nasycone więc wg zakresu wzmocnień z noty (100..800), wybierając najgorsze wzmocnienie i margines bezpieczeństwa x3:
    Ib = 3 * Ic / 100 = 3 * 147 mA / 100 = 4.4 mA
    Rb = (Vcc - Vbe) / Ib = (5 V - 0.7 V) / 4.4 mA = 970R ~= 1k

    W połączeniu nie ma nic odkrywczego. Jednym z dylematów był sposób podłączenia termometrów do PC
    1) można każdy przepiąć do oddzielnej linii danych
    - więcej zużytych pinów (akurat tutaj nie było noża na gardle)
    - termometry można podłączać do dowolnych gniazd, bo zawsze gniazdo nr 1 będzie skojarzone z wyświetlaczem nr 1, gniazdo nr 2 z wyśw. nr 2, itd.

    2) można je wszystkie podłączyć do wspólnej linii danych
    + oszczędność pinów
    - konieczność skojarzenia unikalnego numeru seryjnego z danym czujnikiem (czyli np. numery zaszyte w kodzie mikroprocesora lub jakiś inny sposób konfiguracji)



    Wybór padł na sposób nr 1. problem z gniazdem USB rozwiązałem po prostu odginając jego styki pionowo i lutując całość także do metalowej części obudowy, w ten sposób trwale je mocując.
    Miernik temperatur do PC pod zatokę 3.5 cala Miernik temperatur do PC pod zatokę 3.5 cala

    Niestety, już od samego początku wszystko nie szło tak jak trzeba:
    * Po wykonaniu płytki programator w ogóle nie wykrywał mikrokontrolera. Okazało się, że winowajcą była linia MOSI, którą także wykorzystałem do sterowania segmentem D. W momencie programowania wszystkie linie I/O mikrokontrolera są w stanie wysokiej impedancji co oznacza, że tranzystory sterujące anodami mogą się przełączać same z siebie. W efekcie, taki tranzystor puszczał na linię MOSI/CD napięcie zasilania i pomimo rezystora 160R w szeregu, programator nie był w stanie wysterować tej linii. Oczywiście wszystkie linie specjalne (MOSI, MISO, SCK) mogą być wykorzystane podczas pracy mikrokontrolera w dowolny sposób jak każdy z jego pinów. Jednak należy pamiętać o tym, żeby do tych linii nie było podłączone żadne wyjście od innego zewnętrznego układu, gdyż wtedy podczas próby zaprogramowania mikrokontroler nie będzie mógł wysterować tych linii.
    Miernik temperatur do PC pod zatokę 3.5 cala
    Rozwiązaniem była zmiana pinu sterującego linią CD na inny (stąd widoczny na wykonanej płytce czerwony kabelek)

    * Nie mogłem skomunikować się z termometrami (mimo wcześniej posiadanej własnoręcznie napisanej i przetestowanej biblioteki). Okazało się, że zapomniałem o zewnętrznych rezystorach podciągających te linię do zasilania (4.7k), a wbudowane w atmegę rezystory (30-50k) były jednak zbyt duże.
    Uratowałem płytkę, dodając na górze maleńkie rezystory SMD

    * Termometr w środkowym gnieździe nie chciał działać - przyczyna było mini zwarcie do masy na tej linii, popełnione podczas lutowania.

    * Inne urządzenie podłączone do gniazda USB powodowało wyłączenie wyświetlaczy i komunikat o nieprawidłowym urządzeniu. Tu winowajcą było nietypowe gniazdo USB A do druku, które akurat posiadałem z wylutu. O ile w "sklepowych" gniazdach (#2) część wklęsła znajduje się na dole, a wypukła (ze stykami) na górze, w moim gnieździe (#1) było... odwrotnie. W efekcie takie gniazdo po wlutowaniu miało wszystkie piny w odwrotnej kolejności. Udało mi się szczęśliwie wygrzebać gdzieś w szpargałach inne, normalne.
    Miernik temperatur do PC pod zatokę 3.5 cala

    * Miganie wiświetlacza:
    Obsługa protokołu 1-Wire wymaga przestrzegania zależności czasowych podczas transmisji, co oznacza, że w tym czasie należy wyłączyć przerwania, które mogłyby wydłużyć wykonanie krytycznego kodu, psując transmisje. Jednak wyłączanie przerwań, w których z kolei wykonuje się kod obsługi wyświetlaczy 7 segmentowuch powoduje ich zauważalne miganie. Tutaj rozwiązaniem okazało się wyłączanie przerwań nie na cały czas obsługi odczytu temperatury, lecz tylko w krytycznych sytuacjach (na czas transmisji/odczytu każdego pojedynczego bitu w protokole 1-Wire).

    * Zamocowanie całości do obudowy
    Tutaj wykorzystałem odpowiednio docięte kawałki laminatu, które dolutowałem do przedniej płytki, tworząc kształt umożliwiający idealne wpasowanie w zatoczkę. Nawiercone otwory pod śruby M3 z przylutowanymi nakrętkami pozwolą na dokręcenie całości do obudowy. Przedni panel zamawiający chciał zrobić sam - ma to być po prostu plastikowa zaślepka z wyciętymi miejscami pod wyświetlacze i gniazdo USB.

    Miernik temperatur do PC pod zatokę 3.5 cala Miernik temperatur do PC pod zatokę 3.5 cala Miernik temperatur do PC pod zatokę 3.5 cala Miernik temperatur do PC pod zatokę 3.5 cala

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    phanick
    Level 28  
    Offline 
    Has specialization in: energetyk najwyższych napięć
    phanick wrote 2464 posts with rating 2553, helped 57 times. Live in city Warszawa. Been with us since 2007 year.
  • #2
    MICHAŁ6201
    Level 16  
    Trzeba było to prysnąć bezbarwnym lakierem akrylowym, bo tak to miedź zaraz zaśniedzieje i będzie brzydko wyglądać.
  • #3
    VIGOR_PICTURES
    Level 20  
    A ja mam pytanie z innej beczki. Uprzedzam że mogę pytanie nie jest powodowane złośliwością tylko czystą ciekawością.
    Po co używać oddzielnych termometrów skoro można dostać się do danych z w zasadzie każdego czujnika w komputerze czysto programowo? Czysta chęć zabawy z I2C? A może ciekawy kawałek sprzętu komputerowego przy którym niestety nie da się łatwo dostać do danych z sensorów?

    Pozdrawiam!
  • #4
    phanick
    Level 28  
    VIGOR_PICTURES wrote:
    A ja mam pytanie z innej beczki. Uprzedzam że mogę pytanie nie jest powodowane złośliwością tylko czystą ciekawością.
    Po co używać oddzielnych termometrów skoro można dostać się do danych z w zasadzie każdego czujnika w komputerze czysto programowo? Czysta chęć zabawy z I2C? A może ciekawy kawałek sprzętu komputerowego przy którym niestety nie da się łatwo dostać do danych z sensorów?

    Pozdrawiam!

    Podejrzewam, że to ma być wykorzystywane w jakimś archaicznym gracie pokroju 486 lub wczesne Pentium, tam płyty główne nie mają takich czujników.
  • #5
    tmf
    Moderator of Microcontroller designs
    phanick wrote:
    Obsługa protokołu 1-Wire wymaga przestrzegania zależności czasowych podczas transmisji, co oznacza, że w tym czasie należy wyłączyć przerwania, które mogłyby wydłużyć wykonanie krytycznego kodu, psując transmisje. Jednak wyłączanie przerwań, w których z kolei wykonuje się kod obsługi wyświetlaczy 7 segmentowuch powoduje ich zauważalne miganie. Tutaj rozwiązaniem okazało się wyłączanie przerwań nie na cały czas obsługi odczytu temperatury, lecz tylko w krytycznych sytuacjach (na czas transmisji/odczytu każdego pojedynczego bitu w protokole 1-Wire).

    Rozwiązanie takie sobie, bo ciągle możesz blokować przerwania na kilkadziesiąt us. Rozwiązanie lepsze - dlaczego do 1-wire nie użyłeś UART? Nie tylko kod prostszy, lepsza obsługa, ale przede wszystkim nic nie jest blokowane.
    Też chciałem zapytać dlaczego nie wykorzystałeś magistrali SMB, ale już wiem :)
  • #6
    weryfany
    Level 26  
    Doceniam wkład pracy, efektu finalnego nie widać (panel czołowy)
    Ja poczyniłem akurat pomiar temperatury w inny sposób do tego po przekroczeniu zadanej temperatury sterowanie wentylatorem (a nawet wentylatorami) efekt wizualny nie powala na kolana,
    wykorzystałem do tego gotowy moduł https://youtu.be/4oY04vOZerQ
    Co do gniazd USB są gotowe gniazda USB z oprawką na przewodzie nie jeden raz już stosowałem w autach do obudowy też by się nadały.
    A nawet można zastosować nie koniecznie na panelu 5.25 ale jak jest wolny to warto go do tego wykorzystać.

    Pozdrawiam
  • #7
    mt777
    Level 4  
    weryfany wrote:
    Doceniam wkład pracy, efektu finalnego nie widać (panel czołowy)


    Miernik temperatur do PC pod zatokę 3.5 cala