はっくはっくキッチン
Hack Hack Kitchen

MAX31855 Controller mit AVR

 2022/01/29

max31855-banner.jpg

Wenn Sie eine Temperatur messen möchten (insbesondere die Oberflächentemperatur eines Objekts), können Sie beispielsweise ein in ein Digitalmultimeter (DMM) integriertes Thermoelement verwenden, aber der größte Nachteil ist, dass Sie das DMM nicht zur Messung von Spannung bzw. Strom verwenden können.

Um das DMM für andere Zwecke zu nutzen, aber dennoch die Oberflächentemperatur zu messen, habe ich ein Thermometer mit dem MAX31855 Board gebaut.

MAX31855 Controller board
MAX31855 Controller board
MAX31855 Controller board
MAX31855 Controller board

In der obigen Abbildung ist das Thermoelement über Krokodilklemmen angeschlossen, aber das Thermoelement sollte direkt an die Klemmleiste angeschlossen werden. Die kleine weiße Platine ist ein DC-DC-Boost-Modul (5 V). Der AVR befindet sich unter der 7-Segment-LED-Platine. Für die Herstellung dieser Thermometer werden SMD-Bauteile für Transistoren, Widerstände usw. verwendet. (Sie sind auf diesem Bild nicht zu sehen, weil sie sich auf der Rückseite der Platine befinden.)

Schaltplan

./max31855ctrl-sch-thumb.png
Schematic of AD9833 Controller (click to enlarge)

Kompilieren

Die Verwendung von Siebensegment-Anzeigen, der USART-Ausgang und die Temperaturkompensation können jeweils aktiviert bzw. deaktiviert werden. In der Voreinstellung sind sie alle aktiviert, aber wenn Sie sie nicht brauchen, kommentieren Sie die entsprechenden Zeilen in Makefile.settings aus.

Weitere Informationen zur Temperaturkompensation finden Sie unter Korrektur der Temperaturdaten von MAX31855.

Die an das MAX31855 Board angeschlossenen Pins von AVR können in max31855-config.h geändert werden.

Die Pins von AVR für den Anschluss an die 7-Segment-Platine sind fest vorgegeben. Es ist möglich, andere Pins zu verwenden, indem der Quellcode geändert wird, aber die derzeitige Implementierung geht von den folgenden Annahmen aus, so dass die Verwendung anderer Pins eine größere Änderung des Quellcodes erfordern würde.

  • 8 Pins eines Porttyps (z. B. PB0 bis PB7 oder PC0 bis PC7 ) werden zum Ein- und Ausschalten der Segmente verwendet, und

  • 0- bis 3-Pins eines Porttyps (z. B. PC0 bis PC3) für die Ziffernauswahl.

Dieses Programm verwendet meine pAVRlib und die Bibliothek für Thermoelemente basierend auf der NIST ITS-90 Datenbank. Da es sich um Git-Submodule handelt, können Sie sie entweder mit --recursive klonen, wie unten gezeigt, oder ein normales git clone und dann git submodule update -i durchführen.

Hier sind die genauen Schritte:

  • git clone --recursive https://github.com/TPKato/max31855ctrl

  • editieren Sie max31855-config.h

  • editieren Sie Makefile.settings (insbesondere den Gerätenamen und die Einstellungen des Brenners)

  • make

  • make flash

Wenn Sie die Temperaturkompensation nicht verwenden, können Sie sie auch mit avra bauen. In diesem Fall führen Sie anstelle des obigen make das folgende aus.

make -f Makefile.avra
make flash

(Sie können in make flash mit oder ohne -f Makefile.avra verwenden.)

Verwendung

Wenn Sie dieses Programm mit USE_USART kompilieren (Default), erhalten Sie detaillierte Informationen über die serielle Schnittstelle.

Wenn ein Fehler auftritt, wird der folgende Fehlercode angezeigt:

0

Für die Temperaturkompensation wurde ein Wert außerhalb des Bereichs angegeben, was zu einer NAN (not a number) führte.

1–7

Entspricht den 3 LSB-Bits des MAX31855:

D2

SCV Fault (Thermoelement ist mit V$_\text{CC}$ kurzgeschlossen)

D1

SCG Fault (Thermoelement ist mit GND kurzgeschlossen)

D0

OC Fault (Thermoelement ist offen (keine Verbindung))

License

  • MIT License