[PRZYKŁAD] Termopara typu K i KAmduino UNO
Niniejszy przykład obrazuje użycie termopary typu K oraz wzmacniacza termopary SPI z układem MAX31856. Mikrokontroler odczytuje zmierzoną wartość temperatury, a następnie wyświetla ją na ekranie LCD będącym częścią nakładki LCD Keypad Shield firmy DFRobot.
W przykładzie użyto następujących komponentów:
- Termopara typu-K w metalowej obudowie
- Wzmacniacz termopary SPI z układem MAX31856
- KAmduino UNO – płytka rozwojowa z mikrokontrolerem ATmega328P
- LCD Keypad Shield firmy DFRobot
- Przewody żeńsko-męskie
- Niewielka płytka stykowa
Zdjęcie 1. Termopara typu K w metalowej obudowie
Termopara to połączenie dwóch drutów zrobionych z różnych metali lub ich stopów. Jeden koniec połączenia utrzymywany jest w stałej temperaturze, zaś drugi jest końcem „pomiarowym”. Pod wpływem różnicy temperatur między końcami występuje różnica potencjałów. Jest to zjawisko Seebecka. W termoparze typu K występują stopy Nikiel-Chrom oraz Miedź-Nikiel. Ten typ można stosować w zakresie temperatur -200…1200 °C. Zależność napięcia od temperatury jest w przybliżeniu liniowa i wynosi ok. 41 µV/°C. Końcówka termopary znajduje się w osłonce ze stali nierdzewnej.
Zdjęcie 2. Wzmacniacz termopary SPI z układem MAX31856
Adafruit Universal Thermocouple Amplifier MAX31856 to moduł wzmacniacza dla termopary. Oparty został na układzie MAX31856. Do modułu pasują termopary typu K, J, N, R, S, T, E oraz B. Do komunikacji wykorzystuje interfejs SPI. Moduł współpracuje z Arduino.
Wyprowadzenia termopary należy dołączyć do pinów „+” i „-„. W zestawie znajduje się złącze śrubowe ARK, które po przylutowaniu pozwala na łatwe dołączenie sensora do modułu wzmacniacza. Sam moduł wzmacniacza należy dołączyć do płytki KAmduino UNO z nałożoną nakładką w sposób opisany w tabeli poniżej:
td>
Pin KAmduino UNO | Pin wzmacniacza termopary |
+5V | VIN |
GND | GND |
D3 | SCK |
D2 | SDO |
D1 | SDI |
D0 | CS |
Połączony układ jest też widoczny na poniższym zdjęciu:
Zdjęcie 3. Połączony układ
Po połączeniu układu można przejść do omówienia kodu na platformę Arduino. Producent przygotował bibliotekę do obsługi układu MAX31856 dostępną pod tym linkiem w serwisie github. Biblioteka dostępna jest także poniżej, w sekcji „do pobrania”.
Kod zaprezentowany poniżej ma za zadanie odczytać wartość temperatury oraz wyświetlić go na alfanumerycznym ekranie LCD. Na początku dodano biblioteki odpowiedzialne za obsługę ekranu i modułu wzmacniacza. Następnie inicjalizowane są klasy do obsługi urządzeń oraz zmienna, w której będzie przechowywana aktualna wartość temperatury.
#include <Adafruit_MAX31856.h> #include <LiquidCrystal.h> Adafruit_MAX31856 max = Adafruit_MAX31856(0, 1, 2, 3); LiquidCrystal lcd(8, 9, 4, 5, 6, 7); float temperatura;
W funkcji setup inicjalizowane są urządzenia zewnętrzne: ekran LCD oraz wzmacniacz termopary. Ustawiany jest typ termopary – typ K. Biblioteka LiquidCrystal otrzymuje informację o wymiarach ekranu.
void setup() { max.begin(); max.setThermocoupleType(MAX31856_TCTYPE_K); lcd.begin(16,2); lcd.clear(); }
W pętli głównej programu odczytywana jest temperatura za pomocą funkcji readThermocoupleTemperature. Następnie odczytana wartość wyświetlana jest na ekranie LCD. Obrót pętli odbywa się co 0,5 sekundy.
void loop() { temperatura = max.readThermocoupleTemperature(); lcd.clear(); lcd.setCursor(0,0); lcd.print("Temperatura:"); lcd.setCursor(0,1); lcd.print(temperatura); lcd.print(" st.C"); delay(500); }
Działanie przykładu zaprezentowano na poniższym materiale wideo: