Alle Beiträge von Thomas Dillinger

Fußboden Heizungssteuerung

Timekeeper Manual
Timekeeper Manual
Timekeeper-Manual.pdf
Version: 1.01
2.5 MiB
536 Downloads
Details

Allgemeines

Diese Heizungssteuerung wurde speziell für den Einbau bz.w für die Nachrüstung im Bereich derFussboden und Wandheizungen entwickelt.

Bei vielen älteren Anlagen gibt es zwar schon Zonenventile für die einzelnen Heizkreise, diese werden jedoch meist, wenn überhaupt durch eine Zweipunktschrittregelung mit einem Bimetall basierenden Raumthermostat angesteuert.

Hierbei wird erste nach dem Über- bzw. Unterschreiten der eingestellten Solltemperatur, das Zonenventil komplett Auf- oder Zu gefahren, man spricht hier auch von einer sogenannten Zweipunkt Regelung. Durch die Trägheit einer Flächenheizung, steigt dabei die Temperatur im Raum nach dem Abschalten der Zone sogar erst einmal noch weiter an, bis der Kipppunkt erreicht wird. Erst dann beginnt die Temperatur im Raum langsam wieder zu fallen. Wird die fest vorgegebene Hysterese des Raumfühlers wieder unterschritten, fährt das entsprechende Zonenventil wieder komplett auf.

Bei dieser Art der Regelung kommt zu starken Temperaturschwankungen in der Boden und Raumtemperatur, die sich zuweilen über einen Zeitraum von mehreren Stunden bewegen können. Das Konzept das bei der Entwicklung dieser Heizungssteuerung verfolgt wurde, beruht auf einer stetigen Regelung und Überwachung der Temperaturverläufe in den verschiedenen Heizzonen.

Um die Reaktionszeiten möglichst kurz zu halten, kommt hier keine Zweipunkt Regelung zum Einsatz, die die Raumtemperatur misst, sondern es werden die einzelnen Rücklauftemperaturen der einzelnen Heizzonen gemessen. Anhand dieser Messwerte wird dann ein Rückschluss auf den Wärmebedarfs und die benötigte Wärmemenge des Raums getroffen und kontinuierlich angepasst.

Da die einzelnen Zonenventile ebenfalls stetig, in einem Bereich von 20 – 100 % von der Steuerung geregelt werde können, ist es so möglich die genaue Bedarfsmenge in die einzelnen Heizungsleitungen einzuspeisen.

Key Features

Im maximalen Ausbau können mit dieser Steuerung bis zu fünf Heizzonen unabhängig voneinander überwacht und geregelt werden. Zusätzlich besteht noch die Möglichkeit, eine Heizungspumpe anzusteuern und einen Heizungsmischer (auf/aus/zu) anzusteuern, um damit die Vorlauftemperatur der Heizkreise zu regeln.

Die Temperaturmessung erfolgt über 1-WIRE Sensoren, die direkt an die Steuerung angeschlossen und versorgt werden. Die Zuordnung der Sensoren zu den entsprechenden Temperaturwerten erfolgt bei der Erstinbetriebnahme oder nach einem Sensortausch direkt über die „BLYNK“ App.

Die Bedienung und Parametrierung der Heizungssteuerung erfolgt über die Mobile App „BLYNK“. Diese APP ist sowohl für Android als auch für IOS erhältlich. Sie überzeugte durch ihr offenes und flexibles Konzept und ist zudem eine sehr kostengünstige Lösung für den Endkunden, Third Party Produkt nicht im Lieferumfang enthalten. Sie bietet eine übersichtliche grafische Bedieneroberfläche für die Bedienung und die Parametrierung der einzelnen Heizkreise.

Für die Integration der Heizungssteuerung in das heimische WLAN Netzwerk, wird bei der Erstinbetriebnahme oder einem „RESET“ der WIFI Parameter ein Access Point geöffnet.

Nach dem Verbinden des Smartphones oder Tabletts mit diesem Access Point, öffnet sich im Webbrowser anschließend automatisch das Konfigurationsportal der Heizungssteuerung. Um die Heizungssteuerung in das eigen Smart Home zu integrieren, verfügt die Steuerung über  die Möglichkeit eine Verbindung mit einem MQTT-Server herzustellen.

Diese Konfiguration wird ebenfalls im Konfigurationsportal vorgenommen.

Neben einer integrierten WLAN Antenne besteht auch die Möglichkeit zum Anschluss eine externe Antenne, dies sorgt für eine optimale Reichweite und gute WIFI Anbindung der Steuerung.

Über die Anbindung und Freigabe der Heizungssteuerung zum Internet, kann z.B. über die „BLYNK“ App oder ein einfaches integriertes WEB-Interface die Heizungssteuerung von überall Bedient und überwacht werden. Zusätzlich besteht dann auch die Möglichkeit einer Firmware Aktualisierung, die dann direkt vom Webserver des Herstellers in das Modul geladen und automatisch installiert wird.

Ein integrierter NTP-Zeitservice stellt der Steuerung immer die aktuelle Uhrzeit und das Datum zur Verfügung, um zeitgesteuerte Dienste, wie z.B. eine Nachtabsenkung zu aktivieren.

Optional kann eine Erweiterungsmodul auf die Grundplatine aufgesteckt werden, um eine Anzeige und Bedienung der Betriebszustände auch ohne APP direkt am Gerät durchführen zu können. (Modul befindet sich noch in der Entwicklung !!!)

Das Zurücksetzen der WIFI, MQTT und Blynk Parameter ist über das Webinterface, die „BLYNK“ APP oder den kleinen roten Taster unterhalb der Status LED auf der Grundplatine direkt auf der Steuerung möglich.

Das Herz der Steuerung bildet eine Mikrokontroller der Firma Espressif (ESP8266) mit WALN Funktionalität. Dieser Baustein bietet alle Voraussetzungen, die für die Realisierung des Projektes und eine Anbindung über ein WIFI Netzwerk notwendig sind.

Automatische Fehlererkennung

Eine Allarmierung erfolgt durch eine Notifikation Meldung direkt in der APP und durch eine optische und akustische Störausgabe direkt auf der Heizungssteuerung. In der APP können die Grenzwerte sowie die Alarmierung für eine Über- bzw. Untertemperatur definiert und aktiviert werden.

Wurde die Alarmausgabe in der APP deaktiviert, werden dennoch kritische Fehler wie z.B.  eine erkannter Sensorfehler oder das Überschreiten der angegebenen Maximaltemperatur direkt am Modul signalisiert und ausgegeben. Ist dies der Fall, wird automatisch ein Not-Abfahrprogramm ausgeführt und die Steuerung bringt die Heizungsanlage damit in einen sicheren Zustand.

Hardware

Die Hardware der Heizungssteuerung besteht aus einer Platine, die sowohl die Steuerungselektronik (Sensorik) wie auch die Leistungselektronik für die Ansteuerung der Heizungspumpe und der Stellantriebe (Aktorik) beinhaltet.

Hardwareaufbau und Anschlussbelegung

XXX Bild

Der linken Teil beinhalltet die Steuerungselektronik, der rechte Teil beherbergt die Leistungselektronik.

Lebensgefahr durch elektrischen Schlag!
Diese Platine und auch die daran angeschlossenen Komponenten und Aggregate werden direkt mit einer 230V Wechselspannung betrieben, deshalb  besteht bei einer Berührung Lebensgefahr durch einen elektrischen Schlag!

Die Errichtung, Installation und Inbetriebnahme dieser Heizungssteuerung darf nur durch ein Elektrofachkraft erfolgen, es gelten die einschlägig bekannten VDE Vorschriften!

Versionsverlauf:

Intended:

Released:

  • 02.12.2020: Version 1.00
    Timekeeper BLYNK Token V1.01
    Timekeeper BLYNK Token V1.01
    Timekeeper-BLYNK-Token-V1.01.png
    Version: 1.01
    10.6 KiB
    523 Downloads
    Details

Kapazitiver Regensensor mit einem ESP8266 / Arduino

Allgemeines:

Im Internet wird eine Vielzahl von verschiedenen Regensensoren angeboten. Die meisten davon kommen aus Fernost und arbeiten nach dem Resistance Prinzip.

Resistance Regensensor

Trifft ein Regentropfen auf die nicht isolierten Kontakte des Sensors, werden die nebeneinanderliegenden kammförmigen Kontakte durch den Regen verbunden, was letztendlich zu einer Reduzierung des Sensorwiderstandesführt.

Diese Widerstandsänderung ist abhängig vom Verschmutzungsgrad des Regenwassers, sowie der bereits eingetretenen Oxidation des Regensensors.

Über eine Komparator Schaltung kann hierbei meist der Schaltpegel eingestellt werden, bei dem Regen detektiert wird und der dann das digitale Ausgangssignal setzt.

Manche Sensoren stellen zusätzlich zu diesem Digitalausgang noch ein Analogsignal zur Verfügung, was eine Lösung für eine zeitweilige Kalibrierung des Sensors durch die Software erlauben würde.

Das große Problem bei dieser Messmethode ist es, dass selbst bei Sensoren mit vergoldeten Kontaktoberflächen immer parasitäre Ströme fließen.

Da praktisch immer ein kleiner Gleichstrom an beiden Polen des Sensors anliegt, führt dies unabhängig von der Qualität des Sensors zu einem Elektrochemischen Prozess und damit über kurz oder lang zu einer schrittweisen Zerstörung des Sensors.

Eine bessere Lösung stellt dieser Sensor dar, da er nach einem anderen Prinzip, dem Kapazitiven Prinzip beruht.

Das Funktionsprinzip bei einem Kapazitiven Sensor ist dem oben vorgestellten Messverfahren durchaus ähnlich. Es unterscheitet sich jedoch in einem wesentlichen Punkt, bei Regen wird hier keine leitende Verbindung hergestellt. Durch die Wassertropfen auf der Oberfläche wird lediglich die Kapazität des Sensors verändert, das Wasser wirkt als Dielektrikum.

Der Vorteil bei diesem Lösungsansatz liegt darin, dass keine blanken Leiterbahnoberflächen der Witterung ausgesetzt sind und dadurch auch kein Elektrochemischer Prozess ausgelöst wird, der den Sensor beschädigt. Alle leitenden Teile sind durch eine Lackschutzschicht vor Witterungseinflüssen geschützt.

Die Kapazität des Sensors beträgt im trockenen Zustand ca. 170pF. Tritt eine Betauung ein oder trifft regen auf den Sensor auf, steigt die Kapazität an.
Durch das ermittelte Delta C, lässt sich sogar eine Aussage über die Art des Regens und dessen Intensität treffen.

Ist es z.B. Neblig oder es handelt sich um einen feinen Nieselregen, der die Sensoroberfläche benetzt, bilden sich viele kleine Wasser Tröpfchen auf dem Sensor, was wiederrum zu einem großen Delta C führt.
Bei einem Durchschnittlichen Regen Ereignis sind es vorwiegend größere Tropfen, die zu einem großen Teil sofort wieder abrutschen, so ergibt sich ein kleineres Delta C.

Um schnell festzustellen, wenn der Regen zu Ende ist, besitzt der Sensor eine Heizung an der Platinen Unterseite. Diese besteht aus zwanzig 15 Ohm Heizwiderstände, die es bei einer Versorgungsspannung von 5V immerhin auf eine Heizleistung von knapp 1,8 W bringen.
Sie sorgen für eine zügiges verdunsten der Flüssigkeit oder der Eisbildung auf der Sensoroberfläche.

Durch die sehr kleine Bauform des Sensors, kann selbst mit dieser relativ geringen  Leistung ein schnelles  (ca. 5 Minuten) Abtrocknen sichergestellt werden.
Energetisch gesehen ist es sinnvoll, die Sensorheizung nur für die Dauer einer Regenerkennung zu betreiben. Das bedeutet, wird keine Feuchtigkeit oder Regen mehr detektiert, soll die Sensorheizung abgeschaltet werden!
Hierfür ist bereits ein Transistor auf der Platine vorgesehen.
Wird hier ein Mosfet bestückt und ist der Pin für dessen Ansteuerung nicht angeschlossen, muss dieser auf Masse gelegt werden.
Da der Mosfet bei einem offenem Gate in einem Halbleitenden Zustand gehen könnte, was zur einer Zerstörung des Bauteils führen würde.

Bestückung der Platinen Unterseite

Diese Bild zeigt die Bestückung der Unterseite des Sensors. Es ist gut zu erkennen, das im Layout zwar Pats für eine Befestigung der Sensorplatine vorgesehen sind, diese jedoch keine Bohrung besitzen.
Weshalb hier auch kurz auf die Befestigung des Sensors eingegangen werden soll.

Wie zu sehen ist befinden sich die Anschlüsse annähernd mittig auf der Sensorplatine.

Verwandt man z.B. eine feste Wasserdichte Hensel Anschlussdose um die Elektronik darin zu verstauen, genügt es in den Deckel ein passendes rundes Loch zu bohren, damit die Anschlüsse nach innen ragen. Der Regensensor selbst wird am besten mit Silikon wasserdicht mit dem Deckel verklebt. Sollten dennoch Befestigungslöcher benötigt werden, so können diese nachträglich ausgebohrt werden.

Es bietet sich an die Platine für die Auswertung mit dem entsprechenden Gegenstück auszustatten, so dass diese von der Innenseite aufgesteckt werden kann.

Die Befestigung dieser Platine kann mit Distanzbolzen, die am Deckel eingeschraubt werden, erfolgen. Werden die Schrauben nicht vom Sensor (mit Silikon) überdeckt werden, sollte hier auf Edelstahlschrauben zurückgegriffen werden.

Im Unteren Bild ist der Schaltplan der Sensorplatine zu sehen. Bei der Steckverbindung wurde beim Entwurf wert daraufgelegt, dass die Signale für alle möglichen Anschlussvarianten an den Pins herausgeführt wurden.

Somit stehen dem Endanwender alle möglichen Verfahren, die zur Kapazitätsmessung angewandt werden können zur Verfügung.

Schaltplan Kapazitiver Regensensor V1.00

Pin Belegung:

  1.  VDD +5V / 3,3V
  2. NC
  3. Sensorheizung
  4. Ladewiderstand
  5. Analog wert (Ladezustand)
  6. Entladewiderstand
  7. GND
  8. GND

Kapazitätsmessung durch Laden- und Samplen der Kondensatorspannung

Source  Code als Anwendungsbeispiel von Matthias Busse
Quellenverweis :
Kapazitäten von 10nF bis 2000uF einfach messen mit dem Arduino

// Kapazität Messgerät 10nF bis 2000uF
//
// Matthias Busse 22.2.2015 Version 1.1

#define messPin 0            // Analog Messeingang
#define ladePin 13           // Kondensator lade Pin über einen 10kOhm Widerstand
#define entladePin 11        // Kondensator entlade Pin über einen 220 Ohm Widerstand 
#define widerstand  9953.0F  // 10 kOhm > gemessen 9,953 kOhm

unsigned long startZeit;
unsigned long vergangeneZeit;
float microFarad;
float nanoFarad;

void setup() {
  pinMode(ladePin, OUTPUT);     // ladePin als Ausgang
  digitalWrite(ladePin, LOW);  
  Serial.begin(9600);           // Serielle Ausgabe
  Serial.println("Kapazitaetsmesser Version 1.1");
}

void loop() {
  // Kondensator laden
  digitalWrite(ladePin, HIGH);            // ladePin auf 5V, das Laden beginnt
  startZeit = micros();                   // Startzeit merken
  while(analogRead(messPin) < 648){}      // 647 ist 63.2% von 1023 (5V) 
  vergangeneZeit= micros() - startZeit - 114; // 0-Messung abziehen (112-116 us)
  if(vergangeneZeit > 4294960000) vergangeneZeit = 0; // Minuswerte auf 0 setzen (ist long deshalb der hohe Wert)
 // Umrechnung: us zu Sekunden ( 10^-6 ) und Farad zu mikroFarad ( 10^6 ),  netto 1  
  microFarad = ((float)vergangeneZeit / widerstand);   
  Serial.print(vergangeneZeit);           // Zeit ausgeben
  Serial.print(" nS    ");         

  if (microFarad > 1){
    if(microFarad < 100) {
      Serial.print(microFarad,2);         // uF.x ausgeben
      Serial.println(" uF     ");
    }
    else {
      Serial.print((long)microFarad);     // uF ausgeben
      Serial.println(" uF     ");
    }
  }
  else {
    nanoFarad = microFarad * 1000.0;     // in nF umrechnen
    if(nanoFarad > 10) {
      Serial.print((long)nanoFarad);     // nF ausgeben
      Serial.println(" nF     ");
      }
    else
      Serial.println("kleiner 10 nF");  
  }

  /* Kondensator entladen */
  digitalWrite(ladePin, LOW);             // ladePin auf 0V 
  pinMode(entladePin, OUTPUT);            // entladePin wird Ausgang 
  digitalWrite(entladePin, LOW);          // entladePin auf 0V 
  while(analogRead(messPin) > 0){}        // bis der Kondensator entladen ist (0V)
  pinMode(entladePin, INPUT);             // entladePin wird Eingang
  
  while((micros() - startZeit) < 500000){}   // bis 500ms warten, d.h. max 2 Ausgaben pro Sekunde
}

Kapazitätsmessung sehr kleiner Kapazitäten

Da bei sehr Kleien Kapazitäten die Ladezeit des Kondensators ebenfalls sehr klein wird, müsste beim oben vorgestellten Messverfahren der Ladewiederstand im Verhältnis hierzu entsprechend vergrößert werden. So das mit der Samplingrate des AD-Wandlers im Mikrokontrolers immer noch ein akzeptables Messergebnis erzielt werden könnte.

Das Problem bei einem sehr großen Ladekondensator liegt darin, dass natürlich auch der Analoge Eingang des Mikrokontrollers den Kondensator belastet und entläd. Der Messfehler wird also umso größer, je größer der Ladewiderstand wird, bis das System kippt und der Ladewiderstand die benötigte Ladung nicht mehr liefern kann.

Da sich der Regensensor in einem Kapazitätsbereich von 170pF – max. 400 pF bewegt, musste hierfür auf eine anders Messprinzip zurückgegriffen werden.

Das Frequenzmessverfahren

Bei diesem Messverfahren wird keine ADC benötigt, es kommt mit einem Digitaleingang des Mikrokontrollers aus.
Hierfür kommt der hochgenaue Langzeittimer NE555 zum Einsatz.
Dieser Timer seht sowohl in der 5V Variante als NE555 , als auch für Mikrokontroller die nicht 5V tolerant in der 3V Variante als ICM7555 zur Verfügung.

Arbeitet der Mikrokontroller mit 3,3,V und stehen nur ein NE555 zur Verfügung, kann auch ein Spannungsteiler am Ausgang den Levelshift übernehmen.

Der NE555 wird in dieser Schaltung als Multivibrator eingesetzt, der abhängig von angeschlossenen Kondensator seine Ausgangsfrequenz verändert.

Wenn am Ausgang gleiche Ein- und Ausschaltzeiten erzeugt werden sollen, muss die Standardschaltung (siehe oben) mit einer Diode parallel zum Widerstand R2 aufgebaut werden. Andernfalls kann diese Diode einfach entfallen. Im Programm des Regensensors werden sind beide Varianten berücksichtigt. Da sowohl die Zeitdauer der negativen als auch der positive Halbwelle gemessen und anschließend addiert werden und damit die ganze Periodendauer berechnet ist.

Für die Messung werden vom Regensensor nur der Pin 5. Analogwert und Pin 7. GND benötigt.
Soll die Heizung genutzt werden kommen noch die Pin 1. VDD und Pin 3. Sensorheizung aktivieren hinzu.

Die Ein- Zeit berechnet sich wie folgt:
T1= 0,694 * (R1 + R2) * C

Die Aus- Zeit berechnet sich wie folgt:
T2= 0,694 * R2 * C

Die gesamte Periodendauer ist die Summe aus T1 +T2
T = 0,694 * C * (R1 +(2 * R2))
f = 1 / T

Die Frequenz ist 1 / T1 + T2, damit ergibt sich die Ausgangsfrequenz nach folgender Formel:
f = 1 / (0,694 * C * (R1 +2 * R2))

Da bei dieser Anwendung für uns nicht wichtig ist, welche Kapazität der Sensor hat, kann bereits die gemessene Frequenz für eine Regenauswertung verwendet werden.

Der Vollständigkeit halber hier trotzdem noch die kurz die nach C umgestellte Formel:
C =1 / ( f * 0,694 * (R1 + 2 * R2))

Programaufbau für die Kapazitätsmessung des Regensensors

/* Capacitivemeasurement (c) by Dillinger-Engineering 10/2020

   Funktionsweise:
   Um die kleinen Kapazitätsveränderungen des Regensensors (pF-Bereich)
   mit einer hohen Genauigkeit zu messen, wird hier ein NE555/3V verwendet.
   Dieser arbeitet als Multivibrator mit einer Frequenz im KHz Bereich.
   Ändert sich die Messkapazität, ändert (sinkt) auch die
   Frequenz. Je nach Auslegeung der Schaltung kann über die
   Frequenzänderung dann die entsprechende Kapazität errechent werden. 
   Je gröer der Parameter "MeasuringCycleleTime" gewählt wird,
   um so genauer wird auch die Messung. Zu beachten ist dabei jedoch,
   dass sich, sollte ein Sensor Fehler (kein Signal vom Eingang) vorliegt, damit
   auch die Timeoutzeit entsprechnde verlängert !
*/

const byte InputPin = 5;                       // Wemos D1 mini (Pin D1)
const unsigned int MeasuringCycleleTime = 1e6; // 1000000 us
const long R1 = 10000;   //  10 KOhm
const long R2 = 100000;   // 100 KOhm


float GetFrequeny(){  // Ergebnis in Hz
  float fsum = 0.0;
  unsigned int counts = 0;
  double f, T;
  unsigned long SartTtime = micros();
  bool Fail = false;
  do {
    T = pulseIn(InputPin, HIGH, MeasuringCycleleTime) + pulseIn(InputPin, LOW, MeasuringCycleleTime);
    if(T==0){
      Fail = true;
    }
    f=1/T;      
    counts++;    
    fsum += f * 1e6;
  } while(micros() < (SartTtime + MeasuringCycleleTime) && !Fail); // 1 Sekunde mitteln
  if(Fail){
    return(0);
  }else{
    f = fsum / counts * 0.9925;    //Korrekturwert ermitteln und einrechnen
    return(f);
  }
}

float GetCapacity(){  // Ergebnis in pF
  return(1/(GetFrequeny() * 0.694 * (R1 + 2 * R2))* 1e12);
}

void setup() {
  pinMode(InputPin, INPUT);
  Serial.begin(115200);
}

void loop() {
  char CharStr[30];
  
  // Show Data on Serial if available
  sprintf(CharStr,"Capacity: %.3f pf", GetCapacity()); 
  Serial.println(String(CharStr));
  sprintf(CharStr,"Frequenz: %.3f Hz", GetFrequeny()); 
  Serial.println(String(CharStr));
}

 

ESP8266 EEProm richtig verwenden

Grundlagen

Der ESP8266 verfügt je nach Bestückung des verwendeten ESP-Moduls über ein Flash Speicher, der von 1KBit bis zu 16 KBit haben kann.

Beim ESP wird hiervon fester Bereich von 4096 Byte für eine „qasi“ EEProm reserviert, welches vom Programm gelesen und auch beschrieben werden kann. Diese Daten bleiben wie das Programm nach einem neustart erhalten.

Die Größe dies für den EEProm reservierten Bereichs ist in der spi_flash.h unter SPI_FLASH_SEC_SIZE (4096) definiert.

Quelle: www.ullisroboterseite.de
Quelle: www.ullisroboterseite.de

EEproms eignet sich perfekt zum speichern non Daten bzw. von Daten Strukturen, die nach einem Neustart des ESP wieder zur Verfügung stehen sollen.
Da es sich hierbei aber immer noch um eine Flash Ram handelt und diese vom Hersteller mit einer maximalen beschreibbarkeit von ca. 10.000 mal angegeben werden, sollten hier nur Daten gespeichert werden, die keiner häufigen oder gar zyklischen Änderung unterliegen. 

Deshaln eignet sich dieser Speicher auch nicht für Messdaten, für  Konfigurationsdaten, die sich aber nur selten ändern, ist er perfekt.

Verwendung

Die definition erfolgt als Arduino-typischer Klassenkonstruktor mit der Klasse EEPROMClass, diese stellt eine Reihe vordefinierter Funktionen bereit, die für das Handling mit dem EEProm notwendig sind.

Mit „void EEPROMClass::begin(size_t size)“ wird das Objekt zunächst initialisiert.

Dabei wird ein interner Puffer mit Namen _datain der angegeben Größe angelegt.
In diesen Bereich, der nun als EEPROM deklarierte ist, wird nun der Puffer eingelesen.
Alle nachfolgende Lese- bzw. Schreib Operationen in disem Zwischenpuffer.
Dieser Zwischenpuffer wird erst dann in den Flash Speicher übertragen, wenn man dies mit der Methode EEPROM.commit(); anfordert oder das Programm die Operation mit einem EEPROM.end(); abschließt.

Die internen Variablen _dirty vermerkt, ob eine Änderung des Dateninhalts stattgefunden hat. Ein Zurückschreiben des Pufferinhalts erfolg deshalb nur dann, wenn auch eine Änderung stattgefunden hat.

Die Methode getDataPtr() liefert den Zeiger auf den internen Pufferspeicher. Bei einem Aufruf dieser Methode wird _dirty gesetzt, da der Pufferinhalt über diesen Zeiger abgeändert werden könnte.

Der Kalssenaufruf EEPROMClass benötigt beim Konstruktor die Angabe der Speicheradresse (Sektornummer) in EEPROM.cpp, _SPIFFS_end ergibt sich aus der in der IDE festgelegten SPIFFS-Konfiguration.

Die vordefinierte Instanz der Klasse EEPROM wir folgt angelegt:

EEEPROMClass EEPROM((((uint32_t)&_SPIFFS_end - 0x40200000) / SPI_FLASH_SEC_SIZE));

Um z.B. Konfigurationsdaten in Verbindung mit dem EEPROM zu lesen und zu speichern, bietet es sich an die Daten in einer Structur zu verwalten.

 

typedef struct {
  int PHysteresisH1 = 10;          // Fall Back Hysteresis für Relais 
  int PThresholdH1 = 100;          // Schwellwert für Relais 
  int PHysteresisL1 = 10;          // Fall Back Hysteresis für Relais 
  int PThresholdL1 = 50;           // Schwellwert für Relais 
  int PRelaisStateL1 = 0;          // 0- NO / 1- NC
  int PRelaisStateH1 = 0;          // 0- NO / 1- NC
  int PRelaisStateErr = 1;         // 0- NO / 1- NC
  int PSerialOutState = 0;         // 0- OFF / 1- ON
  int PWifiState = 0;              // 0- OFF / 1- ON
  int PMode = 0;                   // 0= relative / 1= Absolut Druck
  int PACMode = 0;                 // 0= keine Autocalibration / 1= Autokalibration
  int PDeltaAC = 10;               // Maximale Abeichung Druckdifferenz 
  int PCalibrationTime = 5000;     // Calibration Counter Time in ms
  unsigned long PHoldTime = 500;   // Für Abfallverzögerung in ms
} PSettings;
PSettings psettings;

Um Speicherplatz zu sparen, sollte der Pufferspeicher nicht größer als notwendig initialisiert werden. Die Maximale Größe beträgt 4096.

Lesen von Daten aus dem Pufferspeicher

EEPROM.begin(1024); // Puffergröße die verwendet werden soll
EEPROM.get(512, psettings); // Anfangsadresse bei der die definierte Structur abgelegt ist
EEPROM.end(); // schließen der EEPROM Operation

Schreiben von Daten in den Pufferspeicher und anschließende Übernahme in den Flash mit commit()

EEPROM.begin(1024);
EEPROM.put(0, settings); //Schreiben einer zweiten Structur ab Adresse 0
EEPROM.commit();
EEPROM.end();

Quellen Verweise:
www.ullisroboterseite.de
www.kriwanek.de

ESP Interrupt Routiene Linkerattribute

Beim der Einbinden von ISR Routienen in den Quellcode des ESP kann es zu einer Fehlermeldung des Compilers kommen.

need to add the ICACHE_RAM_ATTR macro to interrup service routines (ISRs)

Das ICACHE_RAM_ATTR und ICACHE_FLASH_ATTR sind Linkerattribute. Bevor Sie Ihren Programmcode kompilieren, können Sie festlegen, ob die Funktion im RAM oder FLASH gespeichert werden soll (normalerweise legen Sie nichts fest: kein Cache).

Der ESP8266 ist Multitasking und der ESP32 verfügt über 2 Kerne. So können Sie Ihren Code als Multithreading ausführen, da er das RTOS verwendet.

Und jetzt das Problem: Der gesamte Flash wird für das Programm und die Speicherung verwendet. Das Lesen und Schreiben in den Flash kann aber nur über einen Thread erfolgen. Wenn Sie versuchen über 2 verschiedene Threads gleichzeitig auf den Flash zuzugreifen, kann es bei einem Konflikt zu abstürzen Ihres ESP kommen.

Sie können Ihre Funktion anstelle des Flashs, aber auch im RAM ablegen. Selbst wenn Sie etwas in das EEPROM oder den Flash schreiben, kann diese Funktion aufgerufen werden, ohne auf den Flash zuzugreifen.

Mit ICACHE_RAM_ATTR stellen Sie die Funktion in den RAM.
und
mit ICACHE_FLASH_ATTR stellen Sie die Funktion in den FLASH, z.B. um RAM zu sparen.

Interrupt-Funktionen sollten deshalb immer mit dem ICACHE_RAM_ATTR Linkerattribute versehen werden.
Funktionen, die häufig aufgerufen werden, sollten kein Cache-Attribut verwenden.

Wichtig:
Greifen Sie NIEMALS innerhalb eines Interrupts auf Ihren Flash Speicher zu!
Da der Interrupt jeder Zeit während eines Flash-Zugriffs auftreten kann.
Wenn Sie also gleichzeitig versuchen, auf den Flash zuzugreifen, kommt es zu einem Absturz und das kann manchmal auch erst nach einer lägerer Betriebszeit geschehen.

Da Sie nur 32 KB IRAM (Instruction RAM) haben, sollten Sie versuchen, nur Interrupt-Funktionen in den RAM zu stellen.
Nicht alle Ihre Funktionen, auch wenn dies mit Linkerattributen möglich ist.

const uint8_t interruptPin = 14;
volatile byte interruptCounter = 0;
int numberOfInterrupts = 0;
void ICACHE_RAM_ATTR handleInterrupt();

void setup() {

  Serial.begin(9600);
  pinMode(interruptPin, INPUT);
  attachInterrupt(digitalPinToInterrupt(interruptPin), handleInterrupt, CHANGE);

}

void handleInterrupt() {
  interruptCounter++;
}

void loop() {

  if(interruptCounter>0){

      interruptCounter--;
      numberOfInterrupts++;

      Serial.print("An interrupt has occurred. Total: ");
      Serial.println(numberOfInterrupts);
  }

}
// Quelltext by Alfredo Ramirez

 

 

Temperatur geführte WLAN Gewächshausantriebssteuerung

Um in einem Gewächshaus eine ideale Umgebungstemperatur für das gedeihen der Pflanzen zu schaffen, besitzen vielen Gewächshäuser ein Klappfenster, das manuell oder Motorisch betrieben je nach Temperatur geöffnet oder geschlossen werden kann.

Dieses Projekt schafft eine Möglichkeit zur kontinuierlichen Überwachung der Temperatur und der Luftfeuchtigkeit im Gewächshaus.
Diese Daten können über eine WLAN-Verbindung und die APP Blynk ausgewertet werden.
Um auf Temperaturschwankungen reagieren zu können besitzt das Modul zwei potentialfreie Relaisschaltausgänge je für AUF und ZU, über die z.B. ein motorischer Stellantrieb angesteuert werden kann, der die Fensterstellung steuert.

Über die Blynk App ist es möglich, nicht nur die Messdaten zu erfassen und zu speichern, das Modul besitzt einen integrierten Dreipunktregler, der mit entsprechender Parametrierung ein automatisches Verstellen des Antriebs ermöglicht.

Zusätzlich können die Sensordaten des Moduls auch über einen Webserver abgerufen werden, den das Modul ebenfalls zur Verfügung stellt.
Somit ist es möglich, über die Eingabe der IP-Adresse des Moduls im Webbrowser ebenso die aktuellen Sensordaten jederzeit abzurufen.

Das Steuermodul besteht im Wesentlichen aus der Grundplatine mit einem ESP8266 (Wemos D1 mini Pro) / 16MBit Mikrokontroller, der Beschaltung für die Spannungsversorgung und der Kommunikationsschnittstelle. Auf die Interne Antenne wurde verzichtet und stattdessen eine Externe Antenne angebracht, da mit dieser eine bessere WLAN-Empfang und damit eine größere Reichweite möglich ist.

Die Erstellung der Software für den Mikrokontroller erfolgt in der Programmiersprache C, das erstmalige Programmieren bzw. Flashen des Mikrokontrollers wurde über die Arduino IDE realisiert.
Für jede weitere Firmware Aktualisierung steht eine Updatefunktion in der APP bzw. im Web Frontend zur Verfügung, die nach der neusten Firmware auf dem Server der Herstellers sucht und diese ggf. installiert.

Die aktuelle im Modul verwendete Firmware Version wird sowohl in der APP als auch im Web Frontend angezeigt.

Hierbei ist zu beachten, dass auch immer die passende Blynk Applet Version auf dem Smartphone oder Tablett installiert werden muss, da dies ansonsten zu Fehlfunktionen führen kann!

Die Erfassung der Messdaten übernimmt ein Sensor vom Typ DHT 22 der die relative Luftfeuchtigkeit und die Temperatur misst.

Blynk APP „Applet“

Für die Firmware Version V1.00

Technische Beschreibung

WLAN Gewächshausantriebssteuerung Mit Blynk
WLAN Gewächshausantriebssteuerung Mit Blynk
WLAN-Gewu00e4chshausantriebssteuerung-mit-Blynk.pdf
1.1 MiB
181 Downloads
Details

Schaltplan

Schaltplan GewaechshausantriebBlynk
Schaltplan GewaechshausantriebBlynk
GewaechshausantriebBlynk_V100-_SCH.pdf
42.2 KiB
195 Downloads
Details

DC-Einschaltstrombegrenzer für 8-40V/max. 5A

Vorwort

Auf der Suche nach einem DC-Einschaltstrombegrenzer für 24V sind wir bei unseren Recherchen auf ein älteren Beitrag der von ELV gestoßen. Da die Firma diese DC-Einschaltstrombegrenzer aber leider nicht mehr herstellt und liefert, machten wir uns an die Arbeit und entwickelten auf Basis des gefundenen Artikels unseren eigenen DC-Einschaltstrombegrenzer. Da dieser in einer Schaltanlage gebraucht wurde, entstand ein kleines Gerät für die Hutschienenmontage.

Beschreibung Einschaltstrombegrenzer 24V 5A
Beschreibung Einschaltstrombegrenzer 24V 5A
Beschreibung Einschaltstrombegrenzer 24V 5A.pdf
300.7 KiB
460 Downloads
Details

Allgemeines

Einschaltstrombegrenzer für Gleichspannung finden ihre Verwendung, um im Einschaltmoment vor hohen Pulsströmen zu schützen. Denn schon beim Laden von Kondensatoren im Bereich um die 1000 uF können im Einschaltmoment kurzzeitig Ströme vom 10–20 Fachen des eigentlichen Nennstroms fließen. Um ein Auslösen vorgeschalteter Sicherungen zu verhindern und um hohe Pulsbelastungen für die eingebauten Kondensatoren fern zu halten, kommt diese DC-Einschaltstrombegrenzung zum Einsatz.

Einschaltstrombegrenzer bzw. Einschaltoptimierer, finden in der Wechselstromtechnik bereits häufig Verwendung. Bei Elektronischen Schaltkreisen kommt es ebenso wie bei der 230V – Geräten oft zu hohen Einschaltströmen. Das liegt meißt daran, dass Elektronische Geräte intern mit Gleichspannung arbeiten und hierfür Kondensatoren im Netzteil für Spannungsversorgung verbaut werden, diese wirken beim  Einschalten wie ein Kurzschluss und sind somit für die hohen Einschaltströme verantwortlich.

Dessen Kurzschlussstrom hängt von der Güte (ESR = äquivalenter Reihenwiderstand), sowie von der Leistungsfähigkeit der speisenden Quellen und der Impedanz der Verbindungsleitungen ab.

So können bereits bei kleinen Kapazitäten um die 1000uF Einschaltströme um die 100A fließen. Dieser Strom fließt zwar nur für den Bruchteil einer Sekunde, aber teilweise schon lang genug, um u. U. vorgeschaltete Sichergegangen zum Auslösen zu bringen.

Dieses Verhalten findet sich häufig bei Geräte mit längsgeregelte Netzgeräten wie Audio- Endstufen mit hoher Leistung usw. – im Prinzip jedes Gerät mit großen internen Kapazitäten.

Ein hoher Einschaltstrom hat prinzipiell erst mal keinen negativen Einfluss auf den Betrieb dieser Geräte. Der Geräteentwickler muss sich aber dem Problem annehmen und es bei der Entwicklung im Auge behalten. Zum einen muss verhindert werden, dass eine vorgeschaltete Sicherung im Einschaltmoment auslöst und zum anderen wirken sich hohe Pulsströme negativ auf die Lebensdauer der verbauten Kondensatoren aus. Das Auslösen der Sicherung ließe sich natürlich dadurch verhindern, dass einfach der Sicherungswert erhöht wird, dann ist aber die Schutzfunktion der Sicherung für den laufenden Betrieb oft nicht mehr ausreichend gegeben. Deshalb wird in vielen Schaltungen eine Einschaltstrombegrenzung für den DC-Zweig entwickelt und eingebaut.

Es gibt mehrere Möglichkeiten den Einschaltstrom zu begrenzen, die häufigste ist der Einsatz eines NTC’s, der nach einer Zeit mit einem Relais oder eine FET überbrückt wird.

Die hier beschriebene Schaltung möchte eine rein elektronische Lösung vorstellen, in der auf Mechanische Komponenten verzichtet werden kann, indem ein FET (Feld-Effekt-Transistor) die Aufgabe eines geregelten Wiederstandes übernimmt, der nur im Einschaltmoment wirkt.

Die Aufgabe besteht darin, den FET so anzusteuern, dass damit sein Drain-Source-Widerstand dem geforderten Verlauf folgt.

Der Transistor kann je nach der benötigten Verlustleistung in zwei Varianten bestückt werden. Die erste Variante ist ein TO-220 Gehäuse stehend oder liegend ggf. mit oder ohne Kühlkörper. Oder in der DPAK Variante, als SMD direkt auf der Platine, deshalb sind im Schaltplan zwei Transistoren zu sehen (T1/T2).

Schaltungsbeschreibung

Diese Schaltung kommt mit nur sehr wenigen Bauteilen aus. Ein FET übernimmt das langsame Einschalten der Gleichspannung.

T1 ist ein P-Kanal MOS-FET (Metalloxid-FET) der eingesetzte Typ verhält sich so, dass bei einer Gate-Source-Spannung von 0 V der Transistor sperrt, also hochohmig ist.

Wird die Spannung negativ, wird also die Gate-Spannung kleiner als die Source-Spannung, beginnt der FET ab der Pinchoff Voltage (Schwellenspannung) zu leiten.

Beim verwendeten P-Kanal MOS-FET liegt dieser Wert laut Datenblatt zwischen 2,0 V und 4,0 V.

Um ein langsames Einschalten des MOS-FETs zu erreichen, darf die Gate-Source-Spannung nur sehr langsam negativer werden.

Dies wird durch eine RC-Schaltung aus C 1 und R 1 erreicht, die für das langsame Absinken der Gate-Spannung verantwortlich ist.

Der Verlauf der Gate-Spannung lässt sich wie folgt beschreiben:

Im Einschaltmoment ist der Kondensator C 1 ungeladen und die Spannung zwischen den Anschlüssen ist 0 V, der Kondensator wirkt wie ein Kurzschluss. In diesem Moment ist die Gate-Spannung gleich der Source-Spannung (UGS = 0 V), der FET sperrt. Über die RC-Kombination aus C 1 und R 1 fließt ein Strom vom Source-Anschluss (DC-Eingang) zur Masse, der den Kondensator langsam auflädt.

Das langsame Aufladen des Kondensators bewirkt ein langsames ansteigen der Kondensatorspannung, was wiederum zu einem langsamen Absinken der Gate-Spannung führt.

Wenn die Kondensatorspannung den Pinch-off-Wert des FETs erreicht, beginnt der FET zu leiten, er verringert seinen Drain-Source-Widerstand von einigen Megaohm in den Ohm- Bereich und die Ausgangsspannung steigt dabei entsprechend an.

Durch die sinkende Gate-Source-Spannung verkleinert sich der Drain-Source-Widerstand, die Ausgangsspannung steigt wiederrum langsam an. Ab etwa -10 V UGS geht der FET in die Sättigung, der Drain-Source-Widerstand liegt nun bei seinem Minimalwert von ca. 10 mOhm. Der Ladevorgang des Kondensators wird dadurch nicht beeinflusst, so dass die Gate-Source- Spannung noch weiter ansteigt.

Lt. Datenblatt liegt die Maximale Gate-Source-Spannungen bei -20 V, weshalb diese Spannung begrenzt werden muss um den FET nicht zu zerstören. Deshalb liegt parallel zum Kondensator eine 15V Z-Diode, die die Spannung auf 15 V begrenzt.

Der Einfluss der zweiten RC-Kombination aus R 2 und C 2 besteht darin, dass sich im Einschaltmoment C 2 im Vergleich zu C 1 sofort auf den Betriebsspannungswert auf läd. Während C 1 langsam Ladung aufnimmt und die Kondensatorspannung steigt, entlädt sich der Kondensator C 2, er arbeitet deshalb dem Absinken des Gate-Potenzials entgegen, dieser Einfluss wirkt sich anfangs aber nur gering aus. Beginnt nun der FET zu leiten, steigt die Ausgangsspannung und damit auch das Potenzial an einem Kondensatoranschluss von C 2. Dieses bewirkt ein schnelleres entladen von C2, der fließenden erhöhte Entladestrom versucht das Potenzial am Gate zu „stützen“. Damit verlangsamt sich der Abfall der Gate-Spannung und verzögert somit den Vorgang des Durchsteuerns des FETs nochmals.

Modul Anschlüsse

Technische Daten

Eingangsspannung:   8 – 40 VDC
Max. Laststrom:          5 A
Anstiegszeit:                 10 ms bis 50 ms, typ. 13 ms @ 24 V
On-Widerstand:         max. 50 mOhm, typ. 20 mOhm @ 24 V
Verlustleistung:          max. 1,25 W @ 5 A, typ. 500 mW @ 24 V, 5 A
Gehäusebauform:     HUT 1-C Gehäuse, 71 x 35 x 90 mm, 1 TE

(Quellenvereis ELV-Leer)

eBay Automatisches Wiedereinstellen von Artikel beenden

So brechen Sie das automatische Wiedereinstellen ab:

  • Gehen Sie zu Mein eBay > Aktivität > Verkaufen > Aktiv und machen Sie das entsprechende Angebot ausfindig.

  • Wählen Sie im Drop-down-Menü Weitere Aktionen die Option Bearbeiten aus.

  • Klicken Sie oben auf der Artikelseite auf den Link Zum Schnell-Einstelltool wechseln.

  • Deaktivieren Sie das Kontrollkästchen Artikel automatisch wiedereinstellen, wenn er nicht verkauft wurde und senden Sie Ihre Änderungen.

    http://pages.ebay.de/help/sell/relist.html#automatic

Start- Stop Zeitmessung mit DOT Matrix Display und WLAN Anbindung

Timekeeper Manual
Timekeeper Manual
Timekeeper-Manual.pdf
Version: 1.01
2.5 MiB
536 Downloads
Details

Allgemeines

Die hier beschriebene Zeitmessung „Timekeeper“ entstand auf Anfrage für eine Zeitmessung zu Trainingszwecke für eine Gleichmäßigkeitsprüfung, wie sie bei Oldtimer Rennen zur Wertung durchgeführt wird.

Aufgabenstellung:

Beim Durch- bzw. Überfahren eines Startinitiators sollte eine neue Zeitmessung begonnen werden, diese sollte mit dem Durch- bzw. Überfahren des Zielinitiators enden.
Die Zeitnahme sollte in drei verschiedenen Modi erfolgen können, eine reine Zielzeiterfassung, eine Ziel- und Zwischenzeiterfassung (was einen weiteren Zeitmesseingange für die Zwischenzeit notwendig machte) und die Erfassung von zwei Rundenzeiten (LAP1 und LAP 2).

Die gemessenen Zeiten sollten durch eine große Anzeige, die gut aus dem Fahrzeug, nach Beendigung der Zeitnahme abzulesen wäre. Des Weiteren sollte die Möglichkeit bestehen, die gemessenen Zeiten zusätzlich in einer APP auf dem Smartphon angezeigt zu bekommen.

Eine Webserver Ansicht, die alternativ zur APP Ansicht benutzt werden könnte, wurde ebenfalls angestrebt.

Die Anforderungen wurden in diesem Projekt kurzbeschrieben wie folgt realisiert:


Die gesamte Zeitmessung erhielt ein robustes Aluminium Gehäuse mit einer verspiegelten Plexiglasscheibe, hinter der eine gut lesbare LED DOT Matrix Anzeige angebracht wurde.
Die Auflösung des Displays beträgt 1024 Led Bildpunkte.

Um die drei Initiatoren direkt per M12 Steckverbinder anzuschließen, wurden auf der Rückseite des Gehäuses drei Buchsen angebracht, die einen direkten Anschluss von Industrie Laserlichtschranken (z.B. der Firma Leutze) ermöglichen.
Aus diesem Grund wird das Modul mit einem =24V/1A Stecker Netzteil versorgt, dass sogleich die Versorgungsspannung für die angeschlossenen Initiatoren wie auch der internen Elektronik bereitstellt.

Die Zeiterfassung erfolgt Mikrocontroller gestützt, mit einem ESP8266. Dieser Baustein bietet alle Voraussetzungen, die für die Realisierung des Projektes und eine Anbindung über ein WIFI Netzwerk notwendig sind.

Eine Externe Antenne sorgt für eine optimale Reichweite des Moduls.

Um die ermittelten Zeiten direkt auf einem Smartphone anzuzeigen, wurde eine Anbindung an die BLYNK APP realisiert.
Da diese APP ist sowohl für Android als auch für IOS erhältlich ist. Sie überzeugte durch ihr offenes und flexibles Konzept und ist zudem eine sehr kostengünstige Lösung für den Endkunden.

Durch den Kauf von zusätzlicher Energie, kann die App leicht und flexibel um weitere Anzeigen und Funktionen erweitert werden.

Ist keine Internetverbindung möglich oder vorhanden, arbeitet das Timekeeper Modul somit nach der Initialisierung im Standalone Modus, die ermittelten Zeiten werden auf dem Display angezeigt.

Zusätzlich können die gemessenen Zeitinformation in diesem Betreibsmodus aber auch über ein integriertes Webinterface abgerufen und angezeigt werden. Hierfür wird ein interner Access Point geöffnet, mit dem man sein Smartphon verbinden kann, um auf die ermittelten Zeiten zuzugreifen.

Ist eine Anbindung an ein lokales WLAN und somit eine Internet Verbindung vorhanden, bietet das Modul weitere Optionen für die Bedienung und die Zeitanzeige.

Es ist dann z.B. möglich die neusten Firmware Updates vom Webserver des Herstellers direkt in das Modul zu laden und zu installieren.

Ein integrierter NTP-Zeitservice stellt dann die aktuelle Uhrzeit und das Datum zur Verfügung. Wird mit dem Modul länger als 90 Sekunden keine neue Zeitmessung mehr durchgeführt wird diese dann automatisch auf dem Display angezeigt.

Die Auswahl verschiedener Funktionen erfolgt über dem MODE-Taster auf der Rückseite des Moduls. Damit kann ein Menü aufgerufen werden, um die Funktionsweis des Moduls zu konfigurieren.

 

Die M12 Buchsenanschlüsse sind kompatible mit der von uns empfohlenen Leuze Laserlichtschranken von Typ PRKL 25 4.1 200-S12 und können somit direkt angeschlossen und betrieben werden.

Steckerbelegung:

Versionsverlauf:

Intended:

  • Version 1.02
    Nicht geplant

Released:

  • 08.05.2019: Version 1.01RC
    „Single Ini“ Zeitnahmefunktion mit nur einem Initiator, Trenddarstellung der Zeitdifferenz und Umgestaltung der Bedienelemente.
    Erweiterung der Blynk App um ein Eingabefeld für die Entfernung zwischen dem Start- und Ziel Initiator sowie die Integration einer Anzeige der daraus berechneten Geschwindigkeit.
    Timekeeper BLYNK Token V1.01
    Timekeeper BLYNK Token V1.01
    Timekeeper-BLYNK-Token-V1.01.png
    Version: 1.01
    10.6 KiB
    523 Downloads
    Details
  • 20.04.2019: Version 1.00
    Timekeeper finale Version 1.00, Firware released.
    Timekeeper BLYNK Token V1.00
    Timekeeper BLYNK Token V1.00
    Timekeeper-BLYNK-Token-V1.00.png
    Version: 1.00
    10.7 KiB
    363 Downloads
    Details

KR1204 12v RF 4-Kanal 433Mhz Funkfernbedienung und Schalter Modul

Technisch Daten:

  1. Arbeitsspannung: DC12V
    2. Ruhestrom: 5mA
    3. Arbeitsfrequenz: 433 MHz / 315 MHz
    4. Empfangsempfindlichkeit: -104 dBm
    5. Funktionsoption: Momentary / Toggle / Latching
    6. Modulationsmodus: ASK
    7. Matching-Modus: Intelligenter Lerncode
    8. Ausgangsmodus: potentialfreier Kontakt / Spannungsausgang
    9. Shell: Ja
    10. Arbeitstemperatur: -30 ~ + 80
    11. Leiterplattenabmessung: 68,2 x 48,2 (mm)

Programmietung der Betriebsmodi und Anlernen von Fernbedienungen:

An das KR2014 Modul können mehrere Fernbedienungen angelernt werden. Wichtig: Die Fernbedienung muss vor dem Anlernen frei von Code sein. Ein Überschreiben mit anderen Modi funktioniert nicht. Leider können meines Wissens nur alle Fernbedienungen gemeinsam gemäß Punkt 8 (s. u.) gelöscht werden.

Das Anlernen einer neuen Fernbedienung geschieht über den Programmiertaster (Learn Key) auf dem Empfängermodul. Eine Rückmeldung des aktuellen Status erfolgt über eine kleine LED im Empfängermodul.
Soll eine neue Fernbedienung angelernt werden, wird über die Anzahl der Tastendrücke auf den Programmiertaster (Learn Key) festgelegt, welcher Betriebsmodus für die Fernbedienung verwendet werden soll.
Drückt man z.B. einmal auf den Programmiertaster, wählt man den Taster-/Puls-Betrieb für diese Fernbedienung aus. (Mehrmaliges Drücken würde die entsprechenden Modi gemäß der unten aufgeführten Nummerierungen 1 bis 7 einleiten.)
Nach Drücken des Programmiertasters leuchtet die LED heller und ist bereit, eine neue Fernbedienung aufzunehmen. Nun kann eine beliebige Taste der Fernbedienung kurz gedrückt werden. Die Übernahme wird anschließend durch dreimaliges Blinken der LED im Empfängermodul angezeigt. Danach leuchtet die LED im Empfängermodul wieder schwächer.

  1. Taster-/Puls-Modus: Drücken Sie die Lerntaste auf der Empfängerplatine einmal (die LED-Anzeige auf der Empfängerplatine blinkt), drücken Sie dann eine beliebige Fernbedienungstaste. Die LED-Anzeige blinkt dreimal. Der Empfänger zeigt an, dass der Pulsmodus erfolgreich gekoppelt wurde.

  2. Umschalt-/Toggle-Modus: Drücken Sie die Lerntaste auf der Empfängerplatine zweimal (die LED-Anzeige auf der Empfängerplatine blinkt), drücken Sie dann eine beliebige Fernbedienungstaste. Die LED-Anzeige blinkt dreimal, und der Receiver zeigt an, dass der Toggle-Modus erfolgreich gekoppelt wurde.

  3. Verriegelungsmodus: Drücken Sie die Lerntaste auf der Empfängerplatine dreimal (die LED-Anzeige auf der Empfängerplatine blinkt), drücken Sie dann die erste Fernbedienungstaste. Die LED-Anzeige blinkt dreimal am Empfänger Verriegelungsmodus erfolgreich gekoppelt (Einschalten mit der ersten Taste, Ausschalten mit der zweiten Taste). Nachteil: Mit dieser Fernbedienung können nicht alle Relais ausgeschaltet werden. Es bleibt immer das letzte eingeschaltet.

  4. 2CH kurzzeitig + 2CH Umschalten: Drücken Sie die Lerntaste auf der Empfängerplatine viermal (die LED-Anzeige auf der Empfängerplatine blinkt), drücken Sie dann eine beliebige Fernbedienungstaste. Die LED-Anzeige blinkt dreimal, und der Empfänger zeigt an, dass das Paar erfolgreich verbunden ist.

  5. 2CH Momentary + 2CH Latching: Drücken Sie die Lerntaste auf der Empfängerplatine fünfmal (die LED-Anzeige auf der Empfängerplatine blinkt), drücken Sie dann eine der Fernbedienungstasten. Die LED-Anzeige blinkt dreimal, und der Empfänger zeigt an, dass das Paar erfolgreich verbunden ist.

  6. 2CH Toggle + 2CH Latching: Drücken Sie die Lerntaste auf der Empfängerplatine sechsmal (die LED-Anzeige auf der Empfängerplatine blinkt), drücken Sie dann eine der Fernbedienungstasten. Die LED-Anzeige blinkt dreimal, und der Empfänger zeigt an, dass das Paar erfolgreich verbunden ist.

  7. 2-Kanal-Verriegelung + 2-Kanal-Verriegelung: Drücken Sie die Lerntaste auf der Empfängerplatine sieben Mal (die LED-Anzeige auf der Empfängerplatine blinkt). Drücken Sie dann eine der Fernbedienungstasten. Die LED-Anzeige blinkt dreimal, und der Empfänger zeigt an, dass das Paar erfolgreich ist.

  8. Löschen vorhandener Daten auf den Fernbedienungen: Drücken Sie die Lerntaste auf der Empfängerplatine achtmal. Die LED-Anzeige auf der Empfängerplatine blinkt achtmal. Die vorhandenen Daten auf den Fernbedienungen werden erfolgreich gelöscht.

 Anschlussbelegung

+ V – Pluspol-Eingang

GND – Negativer Poleingang

1 – KC1 Normal Relais geschlossen
2 – KC1 Relaisrelais
3 – KC1 Normales Öffnen des Relais

4 – KC3 Normal Relais geschlossen
5 – KC3 Relaisrelais
6 – KC3 Normales Öffnen des Relais

7 – KC2 Normal Relais geschlossen
8 – KC2 Relais gemeinsam
9 – KC2 Normales Öffnen des Relais

10 – KC4 Normal Relais geschlossen
11 – KC4 Relais allgemein
12 – KC4 Normales Öffnen des Relais

WARNUNG
Schalten Sie vor der Installation die Stromversorgung ab und überprüfen Sie die Spannungsfreiheit!

ANMERKUNGEN
Wechseln Sie die Batterie unverzüglich, wenn Reichweite stark abnimmt.

 

Sonoff Hack für Alexa von Amazon

Download Arduino Sourcecode von Github

In diesem Projekt wird gezeigt, wie man seinen WIFI Sonoff Switch  der Firma ITEAD direkt und ohne Umwege über eine App oder den ITEAD Server, über seine eigen Amazon Alexa ansteuern kann.

Hierfür sind ein paar kleinere Änderungen an der Hard- und Firmware des Sonoff nötig, die nachfolgend gezeigt werden. Nach dem Umbau bietet der Switch viele neue Möglichkeiten.

  • Konfiguration der WIFI Parameter über ein Captiv Portal.
    Zur Inbetriebnahme des Sonoff startet der Switch im Access Point Modus, hier können anschließend alle Betriebsparameter eingegeben werde, die für den Betrieb im eigenen WLAN und mit Alexa notwendig sind.
  • Wurde der Sonoff an das eigenen WLAN gebracht, kann über ein Web Interface der Schalter bedient und der Timer konfiguriert werden.
  • Zusätzlich kann der Sonoff über das in der Konfiguration definieren Schlüsselwort über Amazon Alexa angesprochen und geschaltet werden.

Allgemeines

Vom Sonoff Switch sind zwei verschiedene Modul Varianten verfügbar. Eine mit und eine ohne RF-Funkmodul.
Wir werden uns hier mit dem Modul ohne RF-Funkmodul beschäftigen, da wir nur das WLAN-Modul fü dieses Projekt benötigen.

Etwas neuer auf dem Markt sind nun auch die Sonoff Schalter Steckdosen mit der Bezeichnung Sonoff S20, hier von habe ich ein paar bestellt. Diese können genau so wie die oben beschreibenen Module mit der geänderten Firmware geflasht werden.

Warum ein Sonoff?

Der Sonoff ist nicht der erste seiner Art, also warum er und nicht ein anderer?
Das angesagte Ziel ist es, selbst die Kontrolle zu behalten. Und nicht auf irgend einen Anbieter angewiesen zu sein.
Im Auslieferungszustand ist bereits eine Firmware auf dem Sonoff vorinstalliert, so kann der Switch direkt von einem Smartphone über die App gesteuert werden.

Den Kern des Sonoff bildet ein WiFi Modul Names ESP8266, der kompatibel mit dem Arduino ist.
Somit kann eine neue Firmware leicht mit der Arduino IDE erstellt und direkt von dort in den Mikrocontroller geladen werden.
ITEAD war sogar so nett und hat alle für die Programmierung benötigten Signale herausgeführt 🙂

Lets hack!

Bevor irgend welche Arbeiten an dem Switch durchgeführt, sei es das öffnen des Gehäuses, ein Hardware Umbau oder das flashen, muss unbedingt die Netzspannung entfernt werden!!!
Es besteht LEBENSGEFAHR!!!

Im ersten Schritt wird der Flash RAM Speicher des Sonoff (1 MBit) gegen einen größeren Speicher 4MBit ausgetauscht. So bleib genügend Platz für weitere neue Innovationen.

Dieses YouTube Video zeigt die Vorgehensweise.

Eine genaue Beschreibung über die Programmierung mit der Arduino IDE und dem Austausch des Speichers finden Sie in diesem Link.

Zugriff für die Programmierung des Sonoff bietet ein Stiftleistenslot auf der Platine, der wie folgt belegt ist.

Wichtig:
Der ESP8266 arbeitet mit einer Betriebsspannung von 3.3V Vergessen deshalb nicht vor dem Anschluß ihres Programmiergerät dies auf 3.3V um zu stellen.

Programmer Sonoff (gezählt vom quadratischen Pin)
3V3 1
TX 2 (RX)
RX 3 (TX)
GND 4
 NC 5

Für die Programmierung halten sie den Taster gedrückt und schalten sie anschließend die Spannungsversorgung 3V3 des Sonoff zu. So startet der ESP8266 im Flash Modus.

Pin Belegung des Sonoff

Funktion GPIO NodeMCU
Button 0 3
Relay 12 6
Green LED 13 7
Spare (pin 5) 14 5

Die LED auf der Platine ist aktuell eine rot/grün bi-color led, bei der aber nur die grüne led verwendet wird. Die rote LED ist für die Variante mit dem RF-Modul geplant und, die in meiner Version aber nicht vorhanden ist

Nach dem flashen der neuen Firmware, was erstmalig über die Serielle Schnittstelle erfolgen muss, ist es dann möglich weitere Firmware Updates OTA in den Sonoff zu übertragen.
In der Arduino IDE sollte nach dem konfigurieren des Switches ein entsprechender Eintrag unter Port zu finden sein.