Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Przetwornik temperatury z MAX6675 i MAX485

Simon79 25 Mar 2017 21:33 5793 19
  • Przetwornik temperatury z MAX6675 i MAX485

    Opisany poniżej przetwornik temperatury powstał z potrzeby chwili, z elementów ogólnie dostępnych. Nie jest to "odkrywcza konstrukcja", ale może się komuś przydać. Do jego budowy wykorzystałem przetwornik termopary typu K o oznaczeniu MAX6675. Zakres mierzonej temperatury wynosi od 0°C do +1024°C, oczywiście w zależności od użytej termopary, i co ważne, ma kompensację zimnego końca termopary. Rozdzielczość to 0,25°C więc do budowy termometru pokojowego raczej się nie nadaje, ale do pomiaru temperatury rzędu kilkuset stopni, gdzie scalone czujniki już nie dają rady, jak najbardziej. Nie jest to nowy układ, ale nie potrzebowałem lepszego, tym bardziej, że jest on dobrze znany i łatwo go obsłużyć np. w BASCOM. W jednym z chińskich sklepów internetowych, moduł z tym czujnikiem wraz z termoparą (do +400°C) można kupić poniżej $3.
    Ze względu na konieczność przesłania informacji o temperaturze powyżej kilkudziesięciu metrów, zastosowałem układ MAX485 (w zasadzie jego zamiennik ST485).
    Przetwornik temperatury z MAX6675 i MAX485
    Jak widać na schemacie jest to dość prosty układ. Zasilany napięciem od 8 do 37VDC. Być może układ nadzorczy DS1813 jest tutaj zastosowany nad wyrost, ale mam ich trochę, więc czemu nie użyć. Przetwornik temperatury MAX6675 jest połączony z procesorem poprzez interfejs szeregowy (SPI). Użyto bascomowej komendy shiftin. Odczytywane jest 16 bitów, z których D14-D3 to bity temperatury, natomiast bit D2 informuje o obwodzie termopary. W układzie wejście "T-" podłączono do minusa zasilania więc przerwa lub odłączenie termopary skutkuje wysłaniem komunikatu "brak termopary". W modelu zrezygnowano z odczytywaniu części dziesiętnej temperatury tzn. wyświetlana jest wartość np 23°C zamiast 23,25°C.
    Przetwornik temperatury z MAX6675 i MAX485
    Układ MAX6675 jest poddatny na zakłócenia, gdy napięcie zasilania nie jest dobrze filtrowane i odsprzęgane. Co ciekawe, w trakcie testów zdarzało się, że odczytany bit D2 miał wartość 1 – brak termopary, a odczytana temperatura była prawidłowa.
    Z założenia temperatura miała być odczytana na komputerze poprzez przejściówkę RS485/USB tylko z jednego układu, stąd przetwornik ciągle przesyła wartość temperatury, nie jest odpytywany przez mastera, jak to bywa w komunikacji standardu 485. Nie wykorzystałem wszystkich "dobrodziejstw" interfejsu 485, zależało mi tylko na odległości. Wejścia RE\ i DE podłączone są co prawda do PORTD.2 procesora, ale jest na stałe ustawiony stan wysoki, czyli nadawanie. Dioda LED1 zapala się na czas przesyłania danych.
    Przetwornik wysyła dane co 1s. Można to zmienić, poprzez zwarcie pinów PORTB.0÷PORTB.5 do masy. Gdy żaden z pinów z tego portu nie jest podłączony lub podłączony jest tylko PORTB.0, wówczas wartość ustawiona jest na 1s. Maksymalna wartość to 111111(BIN) co daje 63s. Gdyby ten czas był jeszcze za mały, można zmienić czas (mnożnik) z 1s na 1minutę, zwierając PORTD.4 do masy. Ustawienia dokonywane są kroplą cyny na płytce i odczytywane tylko raz, tuż po załączeniu zasilania.
    Opcjonalnie zamiast temperatury możliwe jest przesłanie ramki w postaci :
    Synch ; Low_t ; High_t ; Check ; High_t ; Low_t ; Crc
    gdzie: Low_t ; High_t to odpowiednio młodszy i starszy bajt temperatury,
    Synch to stała 170, 10101010(BIN)
    Check to stała 85, 01010101(BIN)
    crc to suma kontrolna Low_t , High_t, Synch
    Przetwornik temperatury z MAX6675 i MAX485
    Taki sposób kodowania, zaczerpnięty od kolegi wojlej na elektrodzie, sprawdził się przy przesyłaniu danych drogą radiową poprzez najtańsze moduły radiowe i postanowiłem go użyć również w tym układzie, tak "przyszłościowo".
    Aby wysłać "ramkę" zamiast wartości temperatury należy zewrzeć PORTD.5 do masy.
    Do PORTB.6-7 podłączono zewnętrzny kwarc 8MHz przez co jest większa stabilność transmisji niż na wewnętrznym. W Fusebitach, w stosunku do ustawień fabrycznych, zmieniono tylko zewnętrzny kwarc; low: 0xFD, high: 0xD9. Parametry transmisji 9600, 8 n 1.
    Płytka została zaprojektowana pod obudowę Z-103.
    W założeniu ten prosty i tani układzik nie miał być zamiennikiem stosowanych w przemyśle profesjonalnych przetworników :) .
    Przetwornik temperatury z MAX6675 i MAX485 Przetwornik temperatury z MAX6675 i MAX485 Przetwornik temperatury z MAX6675 i MAX485 Przetwornik temperatury z MAX6675 i MAX485
    W załączniku:
    schemat i płytka w Eagle oraz program - plik hex.

    Załączniki:

    Fajne!
  • #2 26 Mar 2017 09:45
    rs6000
    Poziom 18  

    Mała uwaga, MAX6675 to przetwornik dedykowany do termopary typu K a nie T ;)

    Pozdr

  • #4 26 Mar 2017 11:59
    Imekxus
    Poziom 17  

    Używałem w pracy dyplomowej tego MAX6675, pomimo zasilania i z USB i z trafo + 7805 i 7815 całego układu + wszystkich możliwych filtrów włącznie z cewką dla mikro kontrolera odczyt latał tak, że nie było kompletnie sensu odczytywania wartości dziesiętnych (ba, pokusiłbym się o stwierdzenie jego dokładności na poziomie +-2 st. Celsjusza).

  • #6 26 Mar 2017 12:04
    Freddy
    Poziom 43  

    Imekxus napisał:
    pokusiłbym się o stwierdzenie jego dokładności na poziomie +-2 st. Celsjusza).
    Nieprawda, prawidłowo zmontowany i wykonany układ zapewnia 0,25°C.

  • #7 26 Mar 2017 13:51
    Imekxus
    Poziom 17  

    Freddy napisał:
    Imekxus napisał:
    pokusiłbym się o stwierdzenie jego dokładności na poziomie +-2 st. Celsjusza).
    Nieprawda, prawidłowo zmontowany i wykonany układ zapewnia 0,25°C.

    W takim razie nie wiem co to znaczy "prawidłowo" - ja kupiłem gotową małą płytkę z układem + złączem ARC na termoparę i goldpinami bodajże + sama termopara.

  • #9 27 Mar 2017 06:32
    rs6000
    Poziom 18  

    Ten układ działa bardzo stabilnie, mam go w stacji lutowniczej ;)

  • #10 27 Mar 2017 10:57
    siewcu
    Poziom 31  

    Dlaczego przy rozdzielczości 0,25 oC układ nadaje się do pomiaru temperatur rzędu kilkuset stopni, a nie niskich?

  • #11 27 Mar 2017 13:09
    Simon79
    Poziom 15  

    Miałem na myśli pomiar temperatury pokojowej. Raczej stosuje się czujniki o rozdzielczości 0,1 stopni. Dla mnie rozdzielczość 0,25 do takich celów jest za mała. Co innego w przypadku wysokich temperatur, spokojnie wystarczy 1 stopień.

  • #13 28 Mar 2017 10:51
    odalladoalla
    Poziom 10  

    Freddy napisał:
    Imekxus napisał:
    pokusiłbym się o stwierdzenie jego dokładności na poziomie +-2 st. Celsjusza).
    Nieprawda, prawidłowo zmontowany i wykonany układ zapewnia 0,25°C.

    Nigdy nie zapewniał i nie będzie zapewniał takiej dokładności pomiaru, deklarowana jest jedynie rozdzielczość pomiaru na tym poziomie. Skoro w DS jak byk podawana jest dokładność kompensacji "zimnego końca" na poziomie +-3 stopnie jakim cudem oczekujesz pomiaru temperatury z dokładnością 0,25 stopnia. W tym samym DS masz podaną dokładność 8-9 LSB dla temp. mierzonych z zakresu 0÷700 st. C.
    W prosty sposób przekłada się to na temp 10,25µv/LSB*4=1 st.C.
    średnio 41µV na st. C dla termopary typ K (NiCr-NiAl).
    To ile według ciebie stopni ?
    QED.

  • #14 28 Mar 2017 12:19
    Freddy
    Poziom 43  

    Cytat:
    This converter resolves temperatures to 0.25°C, allows
    readings as high as +1024°C, and exhibits thermocouple
    accuracy of 8LSBs for temperatures ranging from
    0°C to +700°C.

    Cytat:
    Resolution 0.25 °C

    Cytat:
    The accuracy of the MAX6675 is susceptible to powersupply
    coupled noise. The effects of power-supply
    noise can be minimized by placing a 0.1μF ceramic
    bypass capacitor close to the supply pin of the device.
    Rozdzielczość 0,25°C a w zakresie 0°C do 700°C dokładnośc 1°C, a nie rzędu kilku.

  • #15 28 Mar 2017 13:01
    siewcu
    Poziom 31  

    Czyli do moich zastosowań się nie przyda, gdyby to 0,25 oC było w okolicach 80-100 stopni, to by się sprawdziło... Niemniej jednak fajna sprawa jako czujnik EGT w samochodzie, gdyby ktoś chciał to zrobić w miarę budżetowo, nie płacąc kilkuset zł za zegar :)

  • #16 28 Mar 2017 13:14
    odalladoalla
    Poziom 10  

    Freddy napisał:
    Cytat:
    This converter resolves temperatures to 0.25°C, allows
    readings as high as +1024°C, and exhibits thermocouple
    accuracy of 8LSBs for temperatures ranging from
    0°C to +700°C.

    Cytat:
    Resolution 0.25 °C

    Cytat:
    The accuracy of the MAX6675 is susceptible to powersupply
    coupled noise. The effects of power-supply
    noise can be minimized by placing a 0.1μF ceramic
    bypass capacitor close to the supply pin of the device.
    Rozdzielczość 0,25°C a w zakresie 0°C do 700°C dokładnośc 1°C, a nie rzędu kilku.



    (±8)*0,25=±2
    +(±3)=±5
    Problemy z dodawaniem i mnożeniem w zakresie 10-ciu?

    Moderowany przez dondu:

    Proszę kolegę o nieprowokowanie - każdy ma prawo się pomylić.

  • #17 28 Mar 2017 13:44
    Freddy
    Poziom 43  

    odalladoalla napisał:
    Problemy z dodawaniem i mnożeniem w zakresie 10-ciu?
    Nie z Twoją kulturą ;).
    Każdy może się pomylić i nie jest to powodem do kpin z Twojej strony - waż swoje słowa kolego.
    Po Twoich postach widać, że jesteś wybitnym specjalistą głównie MAX6675 ;).
    Zajmij się Twoją ulubiona specjalizacja, jaka podajesz w profilu.


    Moderowany przez dondu:

    To samo dot. kolegi - proszę kolegę o nieprowokowanie.

  • #18 30 Mar 2017 13:43
    R-MIK
    Poziom 35  

    Simon79 napisał:
    Miałem na myśli pomiar temperatury pokojowej. Raczej stosuje się czujniki o rozdzielczości 0,1 stopni. Dla mnie rozdzielczość 0,25 do takich celów jest za mała.

    Jesteś w stanie odczuć zmianę temperatury otoczenia o 0,25 stopnia?

    Po co zewnętrzny układ resetu?

  • #19 30 Mar 2017 15:39
    Simon79
    Poziom 15  

    Co do układu resetu, tak jak pisałem mam ich trochę i chciałem użyć. Wiem, że przetwornik to nie jest urządzenie, od którego wymagane jest wysokie bezpieczeństwo działania. Być może podczas szczególnych dużych zakłóceniach na zasilaniu, zewnętrzny układ resetu poradzi sobie lepiej (szybciej) niż wewnętrzny układ resetu atmegi, ale nie mam doświadczenia w tym temacie.
    Co do rozdzielczości temperatury, nie wiem jaką minimalna różnicę w odczuwaniu temperatury ma człowiek, ale mnie osobiście "razi w oczy" rozdzielczość gorsza niż 0,1 stopnia w przypadku termometru pokojowego. Czasy DS1820 (rozdzielczość 0,5 stopnia) też dawno minęły :)

  • #20 30 Mar 2017 19:39
    rs6000
    Poziom 18  

    Termopara do pomiaru temperatury pokojowej ? Świat sie kończy ;)

    Pozdr

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME