Ustatnia modyfikacja 14 lipca 2025 przez Olek
Nie jest to moje najnowsze dzieło, ale warte odnotowania.
Założenie
W miarę precyzyjny pomiar temperatury w wielu miejscach jednocześnie. Szeroki zakres temperatur. Od -75 do + 150 ‘C. Na tyle małe sondy by można je było przytwierdzać do badanych niewielkich elementów (n.p. obudowy tranzystorów). Wielkość i budowa ma też wpływ na bezwładność cieplną czujki. Łatwość pobierania danych i ich pierząca wizualizacja (wykresy). Wygoda.
Wybór
Do poważnych celów wybrałem mikrokontroler z rodziny STM32H7 a dokładnie płytkę prototypową rozwojową z tym układem NUCLEO-H743ZI2. Na jej pokładzie mamy programator i potrzebne peryferia.

Jeśli chodzi o sam pomiar temperatury to wybrałem czujnik typu PT-100. Dają one najlepsze efekty co do dokładności pomiaru, zakresu mierzonych temperatur i wygody obsługi. Testowałem termopary typu K i termistor NTC 10k.
Za czujnikiem PT-100 przemawia również fakt że mogą być w wersjach 3 i 4 przewodowych. Przy takim podłączeniu i użyciu odpowiedniego przetwornika niwelujemy problem oporności przewodów – automatyczna kompensacja.
Układ MAX31865 jest właśnie takim przetwornikiem, który realizuje pomiar temperatury PT-100 z kompensacją przewodów. Jest również gotowa płytka z tym układem Adafruit MAX31865 umożliwiająca proste podłączenie tego układu do naszej płyty głównej. MAX posiada 15bitowy przetwornik co daje nam dokładność pomiaru 0,03°C i szybkość próbkowania 21ms


System obsługuje 8 takich czujników.
Do kontrolowania całego urządzenie służy mały kolorowy wyświetlacz LCD 240×240 z przyciskami do sterowania.

Funkcjonalność
- Odczyt temperatury z 8 czujników jednocześnie (8 uśrednionych próbek co 1 s).
- Wyświetlanie pomiarów na własnym wyświetlaczu
- Możliwość ręcznej kalibracji każdej czujki
- Przedstawienie bezwzględnego czasu (od uruchomienia)
- Zapamiętanie maksymalnej i minimalnej temperatury z czasem jej rejestracji
- Podłączenie miernika do komputera (USB) i bieżący odczyt danych.
Budowa
Projekt jest modułowy i rozbieralny, tak aby poszczególne części mogły później służyć do innych projektów.
Oprogramowanie do mikrokontrolera napisane jest w języku C przy użyciu zintegrowanego środowiska programistycznego STM32CubeIDE.
Urządzenie łączy się i jest zasilane poprzez złącza USB. Od strony komputera urządzenie jest widoczne w postaci wirtualnego portu szeregowego (COM/RS232).


Projektowanie PCB
Płytka rozwojowa NUCLEO ma ponad 200 wyjść i wejść. Przy tej ilość podłączeń nie trudno o pomyłkę. Podczas wstępnego uruchamiania mogłem skorzystać z przewodowych połączeń pniowych. Jednak w docelowym projekcie musiałem zastosować inne rozwiązanie na podłączenie w całość wszystkich podzespołów. Mając do dyspozycji frezarkę CNC do płytek PCB, skorzystałem z tej technologii. Dla prostoty ograniczyłem się do budowy płytki jednostronnej z ewentualnymi dodatkowymi mostkami przewodowymi. Do pracy projektowej użyłem coraz bardziej popularnego programu KiCad (https://www.kicad.org/).



Płytka oprócz zapewnienia podłączeń elektrycznych spełnia również funkcję konstrukcyjną mocującą poszczególne moduły w zwartą całość.

Obudowa z tworzywa zaprojektowana w programie Autodesk Inventor wydrukowana na drukarce 3D.
Oprogramowanie do mikrokontrolera
Wspomniałem, że projekt jest pisany w jeżyku C w środowisku STM32CubeIDE. Pisząc program korzystam z biblioteki FreeRTOS która pozwala tworzyć profesjonalne i złożone aplikacje wielowątkowe w standardzie Real-time Operating System. Stworzone zostały trzy podstawowe wątki:
- Do obsługi przetworników i odczytu temperatur
- Do komunikacji z komputerem i wymiany z nim danymi
- Do obsługi ekranu i przycisków – interfejs z użytkownikiem
Praktycznie do obsługi tych zadań użycie takiego narzędzia (FreeRTOS) nie było konieczne. Projekt jest jednak rozwojowy. Sprzętowo pozwala na podłączenie do Eternetu. Można wtedy zbudować serwer http, który by umożliwiał sterowanie i podglądanie urządzeniem w sieci poprzez zwykłą przeglądarkę. Można również pokusić się o przesyłanie wyników pomiarów on-line. Do tego celu służy protokół MQTT popularny w dziedzinie IoT (Internetu rzeczy) i bardzo prosto go zaimplementować po stronie odbiorcy. Przy tak rozbudowanym systemie podejście wielowątkowe jest uzasadnione.
Oprogramowanie na PC
Skorzystałem z bardzo mocnego i popularnego języka Python. Korzystając z jego popularnych bibliotek sam program jest bardzo zwięzły i przejrzysty i co ważne można go samodzielnie rozszerzyć. Można w nim na przykład zaimplementować wczytywanie danych z innych urządzeń pomiarowych. Udało mi się w ten sposób podłączyć multimetr RIGOL DM3xxx. Korzystam z bibliotek NI VISA (https://pyvisa.readthedocs.io/en/latest/) co pozwala teoretycznie w ten sam sposób połączyć się z dowolnie innym urządzeniem pomiarowy.
Oprócz samego odczytu program umożliwia na bieżąco wizualizację danych w postaci wykresów. Mając do dyspozycje bibliotekę matplotlib (https://matplotlib.org/) mamy praktycznie nieograniczone możliwości prezentacji (n.p. interaktywne wykresy 3D). Istnieje również możliwość bieżącej obróbki danych n.p. korzystając z NumPy (https://numpy.org/). Na koniec dane można zapisać w dowolnym formacie – Pandas (https://pandas.pydata.org/). Można również pobrać same wykresy graficzne.
Instrukcja obsługi


Ekran
Na górze jeden wiersz : na czerwono – aktualny czas pracy, biało tryb wyświetlania
Poniżej aktualne odczyty temperatur: na zielono indeks czujki i na biało jej wartość. Na różowo wyróżniony czujnik.
Poniżej małymi czcionkami na niebiesko informacje serwisowe: błędy, komunikaty i.t.p
Po lewej stronie mamy joystick do wybierania wyróżnionego czujnika: góra, dół. Ruchy lewo prawo służą do zmiany kalibracji +- 0,01C. Aktualny odczyt temperatury jest na bieżąco korygowany kalibracją. Naciśniecie joystick zapamiętuje ustawione kalibracje w pamięci nieulotnej flash mikrokontrolera. Zapamiętane nastawy odczytywane są po każdym uruchomieniu urządzenia.
Cztery przyciski po lewej stronie służą do wybory trybu wyświetlania,
- Górny A (TEMP.) – pokazuje bieżące odczyty.
- Drugi od góry B (KALI.) – pokazuje nastawy kalibracji.
- Drugi o dołu X (MAX) – maksymalne temperatury i czas ich uzyskania
- Dolny Y (MIN) – minimalne temperatury i czas ich uzyskania
Naciśniecie jednocześnie przycisków X i Y resetuje urządzenie. Oprócz wyzerowania czasu, resetują się zapamiętane minima i maksyma temperatur.
Pomiary i testy
Kalibracja



Kalibracja poszczególnych czujek. Czujka T9 referencyjna pomiar przez multimetr RIGOL DM3068. Ze względu na czułość (0,03) trudno jest uzyskać stabilny odczyt. Czujki umieszczone razem blisko siebie w zamkniętym kartonowym pudełku, aby zminimalizować zewnętrzne warunki.
Test w ujemnych temperaturach
W komorze do -30C, czujki razem


Widać błędne odczyty przy przejściu przez zero jak i zakłócenia. Wszystko poprawiono poprzez odczyt ciągły próbek i uśrednianie wyniku. Obecnie 8 próbek uśrednione i odczyt co 1s. Widać też rozrzut odczytów poszczególnych czujek które powinny pokazywać taki sam odczyt. Skłoniło mnie to do oprogramowania softwarowej kalibracji poszczególnych czuje.
W komorze do -90, czujki rozstawione w rogach komory
T1 – górna tylna prawa, T2 – górna tylne lewa, T3 – górna przednia lewa, T4 – górna przednia prawa
T5 – dolna tylna prawa, T6 – dolna tylna lewa, T7 – dolna przednia lewa, T8 – dolna przednia prawa
T9 – pośrodku komory na 2/3 wysokości, odczyt RIGOL DM3068



Urządzenie jeszcze bez kalibracji i uśredniania próbek, ale widać różnice rozłożenia temperatury w komorze. Różnice sięgają nawet 15C. Widać też wahania temperatury podczas próby utrzymania zadanej temperatury (-90) w komorze.
Wszystkie wykresy są poglądowe i można je sformatować w bardziej profesjonalny sposób jeśli będzie potrzeba.
Powtórzone testy – nowy soft
W komorze ujemnych temperatur

W komorze dodatnich temperatur
8 Czujników rozłożonych w rogach komory, 9 sonda w środku pomiar RIGOL. Do momentu błędów wywołanych stopieniem izolacji przewodów.

Jedna sonda wysoko temperaturowa do maksymalnego zakresu pieca 250°C
