REKLAMA

sch pcb hex.zip

Przetwornik temperatury z MAX6675 i MAX485

http://obrazki.elektroda.pl/1360627800_1490472392_thumb.jpg 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). http://obrazki.elektroda.pl/3072282000_1490472506_thumb.jpg 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. http://obrazki.elektroda.pl/5557608200_1490472894_thumb.jpg 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 http://obrazki.elektroda.pl/9054441700_1490472956_thumb.jpg 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 :) . http://obrazki.elektroda.pl/7342083600_1490472452_thumb.jpg http://obrazki.elektroda.pl/6641346900_1490472582_thumb.jpg http://obrazki.elektroda.pl/3151164400_1490473044_thumb.jpg http://obrazki.elektroda.pl/3736216300_1490472609_thumb.jpg W załączniku: schemat i płytka w Eagle oraz program - plik hex.


Pobierz plik - link do postu
  • sch pcb hex.zip
    • termopara_rs485_v1.1.hex
    • termopara_rs485_v1.1.sch
    • termopara_rs485_v1.1.brd