Benutzer-Werkzeuge

Webseiten-Werkzeuge


arduino:flaschenkuehler:programmversion_0.6

Dies ist eine alte Version des Dokuments!


Flaschenkühler - Programmversion 0.6

Nach den Problemen mit den Thermistoren im ersten Langzeittest wurden diese durch die digitalen Temperatursensoren DS18B20 ersetzt.

Um dynamischen Speicher zu sparen, werden die Adressen der Temperatursensoren nicht beim Programmstart ausgelesen, sondern manuell zugewiesen. Der einzige Nachteil ist, dass die Sensoren nicht getauscht werden können, ohne die Adresse des getauschten Sensors manuell im Programmcode zu ändern.

Dafür werden die folgenden Programmzeilen gelöscht:

DeviceAddress environmentThermometer, coolerThermometer, cupbaseThermometer, cuptopThermometer;

if (!sensors.getAddress(environmentThermometer, 0)) Serial.println("Unable to find address for Device 0");
if (!sensors.getAddress(coolerThermometer, 1)) Serial.println("Unable to find address for Device 1");
if (!sensors.getAddress(cupbaseThermometer, 2)) Serial.println("Unable to find address for Device 2");
if (!sensors.getAddress(cuptopThermometer, 3)) Serial.println("Unable to find address for Device 3");

Und durch dies ersetzt:

DeviceAddress environmentThermometer = { 0x28, 0x7C, 0x49, 0x3B, 0x0A, 0x00, 0x00, 0x57 };
DeviceAddress coolerThermometer      = { 0x28, 0x2E, 0xE0, 0x39, 0x0A, 0x00, 0x00, 0xD0 };
DeviceAddress cupbaseThermometer     = { 0x28, 0x6B, 0x9F, 0x54, 0x0A, 0x00, 0x00, 0x41 };
DeviceAddress cuptopThermometer      = { 0x28, 0x0F, 0x13, 0x55, 0x0A, 0x00, 0x00, 0x3B };

Dadurch werden 2 % Programmspeicher und 13 % dynamischer Speicher eingespart.

Die digitalen Temperatursensoren dürfen nicht häufiger angefragt werden, als sie benötigen, um die Temperatur zu berechnen. Weil die Dauer der Berechnung von der eingestellten Sensorauflösung abhängig ist, wird die Dauer des Messintervalls auf Basis der Sensorauflösung berechnet:

intervalTempControl = 750/ (1 << (12-TEMPERATURE_PRECISION));

Alle mit den Tastern vorgenommenen Einstellungen werden mit einer Zeitverzögerung von 10 Sekunden im EEPROM gespeichert, damit das EEPROM geschont wird. (Bis Programmversion 0.5 wurde das EEPROM nach jedem Tastendruck aktualisiert.

Die Betriebsstunden und das Serviceintervall werden nur noch stündlich im EEPROM aktualisiert.

To Dos:

  • Die Variable für den Betriebsstundenzähler auf int umstellen. Es weicht, wenn volle Stunden gezählt werden, weil der Flaschenkühler in der Regel mehrere Stunden pro Tag läuft.
  • Im Expertenmodus wird die Temperatur des Becherranssensors nicht aktualisiert.
  • Die Setpoint des PID-Regelers muss schärfer eingestellt werden: 8°C unter der Umgebungstemperatur.
  • Die Betriebsstundenanzeige sollte eine konstante Anzahl von Ziffern haben und dann mittig ausgerichtet werden.
arduino/flaschenkuehler/programmversion_0.6.1527183250.txt.gz · Zuletzt geändert: 18.05.2023 12:16 (Externe Bearbeitung)