Digitales Temperaturmesssystem basierend auf ARM und DS18B20
2026-02-21 10:54:03··#1
Zusammenfassung: Dieser Artikel stellt ein neuartiges eingebettetes digitales Temperaturmesssystem vor. Das System verwendet einen 32-Bit-ARM-Mikrocontroller S3C44BOX von SAMSUNG und einen digitalen Single-Bus-Temperatursensor DS18B20 als verteiltes Temperaturmesselement. Das System zeichnet sich durch einfache Schaltungstechnik, hohe Zuverlässigkeit sowie einfache Installation und Wartung aus und eignet sich daher ideal als neuartiges Temperaturmesssystem für CNC-Werkzeugmaschinen. Schlüsselwörter: ARM, S3C44BOX, digitaler Temperatursensor, DS18B20. Einleitung: Thermische Fehler sind die größte Fehlerquelle bei CNC-Werkzeugmaschinen, und Temperaturmessungen bilden die Grundlage für deren Kompensation. Herkömmliche Temperaturmessverfahren beinhalten die Übertragung analoger Signale über lange Kabelstrecken zu einer Datenerfassungskarte zur A/D-Wandlung und -Verarbeitung. In der Praxis müssen die lange Übertragungsstrecke und die Verkabelung des analogen Sensors berücksichtigt werden. Dieser Artikel stellt ein neuartiges Designkonzept vor, bei dem der Controller einen 32-Bit-ARM-Mikrocontroller S3C44BOX von SAMSUNG und der Temperatursensor ein digitaler Single-Bus-Temperatursensor vom Typ DS18B20 ist. Der Einsatz eines digitalen Temperatursensors digitalisiert das Signal am Messpunkt, verbessert die Übertragungssicherheit, vereinfacht die Peripherieschaltung und erleichtert die Platzierung und Installation des Sensors an Werkzeugmaschinen. Ein ARM-Prozessor steuert die Erfassung des digitalen Temperatursignals und kommuniziert mit einem Host-PC, während andere Hardware-Ressourcen weitere Funktionen des thermischen Kompensationssystems bereitstellen. Dieser Artikel stellt den digitalen Temperatursensor DS18B20 vor und präsentiert das Hardware- und Software-Design des Systems mit detaillierten Erläuterungen zu wichtigen Punkten der Software-Implementierung. 1 Einführung in den digitalen Temperatursensor DS18B20 1.1 Struktur des DS18B20 Der DS18B20 ist ein netzwerkfähiger digitaler Temperatursensor von Dallas Semiconductor. Er verfügt über einen einzigen Daten-Ein-/Ausgang und ist ein Single-Bus-Chip. Im Betrieb wird der gemessene Temperaturwert direkt digital über einen Single-Bus übertragen. Der DS18B20 ist kompakt, verfügt über einen weiten Spannungsbereich (3–5 V) und kann für 9- bis 12-Bit-Temperaturmessungen programmiert werden, d. h. für eine einstellbare Temperaturauflösung. Der Messbereich liegt zwischen -55 °C und +125 °C, die Genauigkeit beträgt ±0,5 °C im Bereich von -10 °C bis +85 °C. Optionale Gehäuseoptionen sind TO-92, SOIC und CSP. Jeder DS18B20 wird mit einer eindeutigen 64-Bit-Seriennummer ausgeliefert, sodass mehrere DS18B20 problemlos gleichzeitig an einem Bus angeschlossen werden können. Der DS18B20 verfügt über einen temporären RAM und einen E2-RAM. Der temporäre RAM speichert Betriebsparameter und Messwerte und gewährleistet so die Datenintegrität bei der Ein-Draht-Kommunikation; er umfasst 8 Byte. Der E2-RAM dient zur Einstellung der nichtflüchtigen oberen und unteren Grenzwerte für den Temperaturalarm (TH und TL), die nach dem Einschalten erhalten bleiben. Die interne Struktur ist in Abbildung 1 dargestellt. Die ersten beiden Bytes repräsentieren den gemessenen Temperaturwert. Das Datenformat ist in Abbildung 2 dargestellt: S=1 steht für eine negative Temperatur, S=0 für eine positive Temperatur. Die restlichen Bits werden im Zweierkomplement dargestellt, wobei das niedrigstwertige Bit 1 ist und 0,0625 °C entspricht. Das fünfte Byte des internen Speichers ist ein Strukturregister, das primär für die digitale Umwandlung und Auflösung des Temperaturwertes verwendet wird. 1.2 Betriebstakt des DS18B20: Der DS18B20 hält sich strikt an das Single-Bus-Protokoll. Im Betrieb sendet der Host zunächst einen Reset-Impuls, um alle DS18B20 am Bus zurückzusetzen. Anschließend sendet er einen ROM-Operationsbefehl, um den DS18B20 mit der passenden Seriennummer zu aktivieren und ihn für den Empfang nachfolgender RAM-Zugriffsbefehle vorzubereiten. Der RAM-Zugriffsbefehl steuert den Betriebszustand des ausgewählten DS18B20 und schließt den gesamten Temperaturumwandlungs- und Lesevorgang ab. Der RAM-Befehl hat erst nach dem Senden des ROM-Befehls eine Auswirkung. Tabelle 1 listet alle Betriebsbefehle auf. Der gesamte Vorgang umfasst im Wesentlichen drei Hauptprozesse: Der Host sucht die Seriennummer des DS18B20, startet den Online-DS18B20 zur Temperaturmessung und liest den Temperaturwert aus. Der Ablauf ist in Abbildung 3 dargestellt. Der DS18B20 stellt hohe Anforderungen an Timing und elektrische Eigenschaften und muss daher strikt gemäß den Timing-Vorgaben betrieben werden. Das Lesen und Schreiben von Daten erfolgt hauptsächlich durch den Host in spezifischen Zeitabschnitten, darunter Reset (Initialisierung), Lese- und Schreibzeitabschnitt. (1) Reset-Timing: Vor der Ausführung anderer Befehle muss der DS18B20 zurückgesetzt werden. Während des Resets zieht der Host die Datenleitung auf Low-Pegel und hält sie für 480 µs bis 960 µs, gibt sie dann frei und zieht sie anschließend über den Pull-up-Widerstand für 15 µs bis 60 µs auf High-Pegel, um auf den Präsenzimpuls des DS18B20 zu warten. Der Anwesenheitsimpuls ist 60 bis 240 µs lang gültig und schließt damit den Reset-Vorgang ab. Der Reset-Zeitpunkt ist in Abbildung 4 dargestellt. (2) Schreibzeitpunkt: Beim Schreiben von Daten auf den DS18B20 setzt der Host die Datenleitung zunächst auf High-Pegel und anschließend auf Low-Pegel. Dieser Low-Pegel sollte länger als 1 µs bestehen bleiben. Innerhalb von 15 µs nach dem Wechsel auf Low-Pegel wird die Datenleitung entweder auf High-Pegel gesetzt oder bleibt auf Low-Pegel, je nachdem, ob eine „1“ oder eine „0“ geschrieben wird. Der DS18B20 tastet die Datenleitung innerhalb von 15 bis 60 µs nach dem Wechsel auf Low-Pegel ab. Die Dauer der auf den DS18B20 geschriebenen Daten sollte zwischen 60 µs und 120 µs liegen, und das Zeitintervall zwischen zwei Schreibvorgängen sollte größer als 1 µs sein. Die zeitliche Abfolge des Schreibvorgangs ist in Abbildung 5 dargestellt. Der Timing-Mechanismus für den Lesevorgang ist ähnlich und wird hier nicht wiederholt. 2 System-Hardware- und Software-Design 2.1 Hardware-Design Der verwendete Controller ist der SAMSUNG 32-Bit-ARM-Mikrocontroller S3C44BOX. Dieser kostengünstige und leistungsstarke Mikrocontroller von Samsung eignet sich für allgemeine Anwendungen. Er zeichnet sich durch geringen Stromverbrauch und hohe Zuverlässigkeit aus. Er verwendet den ARM7TDMI-Kern und arbeitet mit 66 MHz. Der ARM-Controller steuert das gesamte System zur Kompensation thermischer Fehler und übernimmt vielfältige Aufgaben wie Datenverarbeitung, Kommunikation und Steuerung. Das System zur Temperaturmessung der Werkzeugmaschine benötigt nur einen geringen Teil der On-Chip-Ressourcen. Die Kommunikation erfolgt hauptsächlich über einen einzigen Bus durch Lesen und Schreiben der I/O-Pin-Pegel. Der interne Timer des ARM-Prozessors generiert Interrupts, um die zeitfenstergerechten Aufgaben zu erfüllen. Da der durch unsere Vorteilung erzeugte Zeitwert 1 µs beträgt, werden die Timing-Anforderungen vollständig erfüllt. Die Schnittstelle zwischen dem DS18B20 und dem Controller ist sehr einfach. Verbinden Sie einfach die Signalleitung des DS18B20 mit einem bidirektionalen Port des Controllers. Der Systemanschluss ist in Abbildung 8 dargestellt. 2.2 Die Software folgt dem Single-Bus-Kommunikationsprotokoll des DS18B20. Der Softwareablauf für die Temperaturumrechnung und -auslesung ist in Abbildung 9 dargestellt (dieser Ablauf erfolgt nach der Aktivierung eines ausgewählten DS18B20; der Aktivierungsprozess ist ähnlich und wird hier nicht weiter beschrieben). Die Kommunikation mit dem DS18B20 umfasst im Wesentlichen die folgenden drei grundlegenden Subroutinen: Initialisierungsprogramm (Reset-Programm), Lese-Subroutine und Schreib-Subroutine. Das System wurde in C implementiert. Die Initialisierungs-Subroutine (Reset-Subroutine) ist wie folgt aufgebaut: U8 resetpulse(void) // Definition der Reset-Funktion { U8 RX=1; // Rückgabewert der Funktion festlegen rPCONF=0x01; // PF0-Ausgangsport rPDATF=0x0; //PF0 Ausgang 0, rTCNTB1=0x1f4 auf Low ziehen; //Timerpuffer einstellen, Verzögerung 500µs rTCON=0x0200; //Timersteuerung einstellen, Timer1 manuell aktualisieren rTCON=0x0100; //Timer starten, manuell aktualisieren und stoppen while(TIME); //Schritt warten, bevor der Timer-Interrupt auftritt (wir ändern diesen Flag-Wert im Interrupt) rPDATF=0x01; //500µs Low-Impulszeit verstrichen, PF0 High TIME=1; //TIME-Wert wiederherstellen rTCON=0x0; //Timer ausschalten rTCNTB1=60; //Verzögerung 60µs rTCON=0x0200; rTCON=0x0100; while(TIME); TIME=1; rTCON=0x0; rPCONF=0x0; // Wechsel zum Eingangsport zum Lesen, falls((rPDATF & 0x01)==0) // Das Lesen von PF0 auf LOW signalisiert einen empfangenen Impuls {RX=0;} rTCNTB1=0x0190; // Verzögerung 400µs rTCON=0x0200; rTCON=0x0100; while(TIME); TIME=1; rTCON=0x0; return(RX); // Funktion gibt den RX-Wert zurück; RX ist Null, wenn ein Impuls empfangen wird} Durch Aufruf dieses Initialisierungsprogramms kann die Reset-Anforderung erfüllt werden. Der Implementierungsmechanismus der Unterprogramme „Lesen“ und „Schreiben“ ist ähnlich, und der Code wird nicht wiederholt. Unter dem Single-Bus-Protokoll kann durch Aufruf dieser Unterprogramme zur Durchführung der entsprechenden Steuerung die Kommunikation zwischen Host und DS18B20 abgeschlossen und die Temperaturerfassung realisiert werden. 3. Fazit Die Schnittstellenschaltung dieses Systems ist einfach, die Kommunikation ist zuverlässig, das integrierte System funktioniert gut, die Testgenauigkeit ist hoch, und der Test beweist, dass es die vorgegebenen Testaufgaben erfüllen kann.