Alle Beiträge von Thomas Dillinger

Conntrollino Erweiterung für 1-Wire Sensoren / Analoge Eigänge

Allgemeines

Die SPS Module mit der Bezeichnung „CONTROLLINO“ sind frei programmierbare Arduino™ Standard und Arduino™ Software kompatible SPS Steuerung für den privaten und industriellen Gebrauch nach Norm EN 61010-2-201.
Der CONTROLLINO dient als elektronische Steuereinheit und ist auf ein Maximum an Kompatibilität ausgelegt.

Das Gerät verfügt nicht nur über alle gängigen Anschlüsse, sondern kann auch komplett von Grund auf programmiert werden.

Das CONTROLLINO kann auf Basis der Arduino™ IDE in der Programmiersprache C programmiert werden. Hierbei handelt es sich um eine Open Source Entwicklungsumgebung.

Zudem gibt es sehr viele Bibliotheken die das Programmieren vereinfachen.

Viele der angebotenen CONTROLLINO Module besitzen zu den bereits vorhandenen Klemmanschlüssen zusätzliche Pinheader Anschlüsse, die als 36-pol. Wannensteckerleisten ausgeführt sind und somit alle relevanten Anschlüsse des Microkontrollers als TTL-Kompatible Anschlüsse zur Verfügung stellen.

Die auf diesen Steckerleisten herausgeführten I/O’s besitzen einen ESD-Schutz und befinden sich hinter dem aktivem Spannungsteiler des CONTROLLINO und sind deshalb 5V TTL kompatibel, was eine Grundvoraussetzung für die Anbindung von Erweiterungen ist.

Genau hier setzt das „CONTROLLINO Sensorslot Modul 1-Wire“ an.

Controlino Sensorslot Modul 1-Wire V1.0
Controlino Sensorslot Modul 1-Wire V1.0
Controlino-Sensorslot-Modul-1-Wire-V1.0.pdf
Version: 1.00
924.2 KiB
13 Downloads
Details
Controllino Sensorslot Exaple
Controllino Sensorslot Exaple
Controllino_Sensorslot_Exaple.zip
1.1 KiB
4 Downloads
Details

Key Features

  • Die Spannungsversorgung erfolgt direkt über den Systembus des CONTROLLINO
  • Selbstrückstellende 100 mA Sicherung zum Schutz des angeschlossenen CONTROLLINO
  • Anschluss von bis zu acht 1-Wire Sensoren
  • Flexibel durch diverse Bestückungs- und Anschlussvarianten (Wannenstecker oder Schraubklemmen)
  • Power LED für eine erleichterte Fehlersuche
  • Konfiguration der Sensoranschlüsse und des Pull-Up Widerstands über DIP-Schalter
  • Überspannungsschutz für jeden Sensorslot
  • Kurzschlussfeste 5V Sensorversorgung für jeden Sensorslot
  • Einfacher Anschluss an das CONTROLLINO Modul durch eine Flachbandkabelsteckverbindung
  • Mehrfachnutzung des Pinheaders möglich durch Anschluss eines Flachbandkabels mit mehreren Buchsenstecker.
  • Einfache Hutschienen Montage durch Hutschienen Railgehäuse
  • Sehr kompakte Bauform
  • Vielseitig verwendbar auch für andere Anwendungen

Pressure Sensor

Beschreibung Pressure Sensor
Beschreibung Pressure Sensor
Pressure-Sensor.pdf
1.3 MiB
34 Downloads
Details

Allgemeines

Die hier beschriebene Druckmessung entstand aus dem Projekt Timekeeper, dass auf Anfrage für eine Zeitmessung zu Trainingszwecke für eine Gleichmäßigkeitsprüfung durchgeführt wurde.
Als der Timekeeper beim Auftraggeber im Einsatz war, stellte sich heraus, dass das justieren der Lichtschranken gerade bei Sonnenschein eine mühselige Unterfangen darstellt.

Außerdem hängt die Genauigkeit der Erfassung hierbei auch immer von der Justierung der Lichtschranken ab. Da je nach Höhe und Winkel der Start- und Ziellichtschranke, diese bei verschieden Fahrzeugen unterschiedlich ausgelöst werden können. Diese Fehler bewegen sich zwar meist nur in Millisekunden Bereichen, können aber durchaus die Wertungsergebnisse beeinflussen.

So wurde die Idee geboren, einen alternative Messmethode zu testen. Es sollte eine Druckschlauchmessung aufgebaut werden, die quer über die Fahrbahn gelegt werden kann, umso eine Messmethode zu erhalten, die direkt an den Rädern des Fahrzeugs misst. Also Unabhängig von der Form und Bauart der Karosserie.

Es wurde ein PVC-Schlauch, der an einem Ende geschlossen war, an eine Handelsübliche Druckmessung angeschlossen und der Potentialfreie Ausgangskontakt mit dem entsprechenden Initiator Eingang des Timekeeper Moduls verbunden.

Die ersten Tests lieferten bereits sehr viel versprechend Ergebnisse und bewiesen, dass der grundsätzliche Testaufbau funktionierte.

Nach dem die ersten Erfahrungen mit verschiedene Schlauchmaterialien, Druckaufnehmer und den in der Praxis auftretenden Störeinflüssen gesammelt wurden. War schnell klar, dass eine handelsübliche Druckmessung die Anforderungen an diese Aufgabe nur bedingt erfüllen kann.

Der Nachteil eines solchen Messverfahrens ist eine vergleichsweise ungenaue Messung, da die Kunststoffschläuche ein gewisses Eigenleben haben, das zum Beispiel zu temperaturabhängigen Kriecheffekten und Offsetproblemen führt.

Es musste also eine speziell auf diese Art der Anwendung zuggeschnittene Lösung entwickelt werden.

Spezielle Funktion für die Schlauchdruckmessung

Das Hauptproblem stellt nicht die Messung an sich dar, sondern die Umgebungsbedingungen. Den der Druck im inneren des Schlauches ist natürlich in erster Linie abhängig von der Umgebungstemperatur.

Stellen wir uns folgendes vor, der Messaufbau wird am frühen Morgen installiert und getestet. Die Auslöseschwelle beim Überfahren des Schlauchs wird auf ein optimales Auslöseverhalten für die Art und Länge des Schlauchs programmiert.

Der Tag beginnt mit einem relativ kühlen Vormittag, entwickelt sich aber gegen die Mittagszeit zu einem sehr sonnigen Tag.
Am Nachmittag entstehen am Himmel größere vorbeiziehende Wolkenfelder.

So könnte ein normaler Sommer Tag aussehen … was passiert aber nun mit dem Druck im Sensorschlauch?

In der Früh wurde die Messung kalibriert und optimal eingestellt.
Am Vormittag steigt der Druck im Schlauchsensor jedoch stetig an. Im Extremfall sogar bis über die programmierte Auslöseschwelle.

Am Nachmittag wechselt der Druck im Schlauch im Verhältnis der vorbeiziehenden Wolkenfelder hin und her.
All dies hat Einfluss auf das Auslöseverhalten und die Genauigkeit der Messung und kann sogar zu Fehlauslösungen führen.

Genau für diesen Anwendungsfall wurde eine spezielle Zusatzfunktion in diese Druckmessung integriert.

Diese überwacht ständig den Druck im Sensorschlauch, steigt bzw. fällt der Druck (Delta P) über- oder unter einen programmierbaren Schwellwert und bleibt für eine definierbare Zeit (t) außerhalb der definierten Grenze, wird eine (AC) automatische Nullpunkt Kalibration des Relativdruckwertes durchgeführt.

Aufgabenstellung:

Es sollte eine Druckmessung mit einem weiten Eingangsspannungsbereich von 8 – 27V entwickelt werden.
Damit ein Betrieb mit einem Bleiakku (12V KFZ-Batterie), einem externen Netzteil oder eine direkte Versorgung aus dem Timekeeper Modul möglich ist. Dieser wird üblicherweise mit 24V gespeist.

Die Konfiguration der Modulparameter sollte direkt am Pressure Sensor Modul möglich sein. Für die Anzeige sollte ein kleines OLED-Display für die Anzeige der Messwerte und der Menüfunktionen vorhanden sein. Die Bedienung erfolgt dabei über einen Drehwahlschalter bzw. alternativ über einen Taster, der die Navigation und Auswahl der Menü Punkte erlaubt.

Das Modul sollte über drei konfigurierbare, potentialfreie Ausgangskontakte verfügen. Welche das Über- und Unterschreiten einer einstellbaren Druckschwelle, sowie einen Sensorfehler ausgeben können. Für jedes dieser drei Relais kann die Ruhelage NO (normally open) oder NC (normally closed) separat festgelegt werden.

Optional zur Werte- und Fehleranzeige am Sensor Modul, sollten diese Informationen auch über die Blynk App und ein Web Interface zugänglich sein.

Über die integrierte Micro USB-Schnittstelle sollen nach Aktivierung dieser Funktion im Menu, die Messwerte sowie die Statusmeldungen im Textformat ausgegeben werden. Damit diese für eine externe Weiterverarbeitung genutzt werden können.

Bei der Entwicklung der Messung sollte Wert daraufgelegt werden, dass diese sehr vielseitig, auch für beliebige andere Druckmessaufgabe eingesetzt werden kann.
Es sollen zwei verschiedene Messarten möglich sein, Messung des Absoluten Drucks sowie die Messung des Relativen Drucks.

Die Messung des Relativen Drucks sollte auch manuell Kalibriert werden können.

Für den Einsatz in Verbindung mit einer Druckschlauchmessung, muss eine spezielle Funktion implementiert werden, die bei Bedarf einen automatischen Differenzdruckabgleich durchführen kann. Dieser soll immer dann durchgeführt werden, wenn der Druck einen definierbaren Schwellwert (P) für eine definierbare Zeit (t) über- bzw. unterschreitet.

Das Pressure Sensor Modul sollte ein Teilbares System werden, das aus einem wechselbaren Drucksensor, dem eigentlichen Auswertemodul und einem schnell wechselbaren Schlauchsystem besteht.

Auf diese Weis ist es leicht möglich das Sensorsystem je nach Anforderung kundenspezifisch anzupassen.

In einem weiterer Entwicklungsschritt, soll die Firmware um eine eigenständige Zeitnahme Funktionalität erweitert werden.
Die Zeitmessung beginnt mit dem ersten Überfahren des Schlauchsensors und endet mit dem zweiten Überfahren.
Damit die Zeitmessung nicht sofort nach dem Überfahren mir den Hinterreifen wieder beendet wird, soll eine Verzögerungszeit zwischen der Start- und Endzeiterfassung eingegeben werden können, um dies zu verhindern.

Der Drucksensor:

Der verwendete Drucksensor ist ein analog arbeitender Sensor vom Typ: NP-TP-0016.
Er besitzt ein robustes Edelstahlgehäuse in dem sich ein präziser Druckkeramiksensor befindet. Die Vorverarbeitung des Messwerts übernimmt ein integrierter Mikrocontroller.
Der Sensor besitzt eine lange Lebensdauer bei einer geringen Langzeitdrift.

Die Verbindung zur Auswerteelektronik wird über eine dreipolige wasserdichte PACK-Steckverbindung hergestellt.
Die Versorgungsspannung des Sensors beträgt 5V ± 0,25V
Der Messbereich beträgt 0 – 15 psi / 0 – 1 bar
Der Analogausgang arbeitet in einem Spannungsbereich von 0,5V – 4,5V linear zum Skalendruck. Der Zerstörungsdruck liegt beim 3-fachen Skalendruck.

Da der Sensorwert über ein Analogsignal im Bereich von 0,5V – 4,5V übertragen wird, ist es leicht möglich, beim einem Über- bzw. Unterschreiten dieser Werte, eine Drahtbruch bzw. Kurzschluss Auswertung vorzunehmen.

Farbcode der Sensoranschlussdrähte:

  • Analogausgang 0,5-4,5V                   Grün
  • +5V (VDD)                                                 Schwarz
  • Masse (GND)                                            Rot
Datenblatt Drucksensor NP-TP-0016
Datenblatt Drucksensor NP-TP-0016
5V-Druck-Sensor-0-15-PSI-Edelstahl.pdf
271.2 KiB
34 Downloads
Details

Anschlussbelegung Hardware

Anschlussbelegung V1.00

REL. MIN      Potentialfreier Kontakt für eine min. Druck
REL. MAX    Potentialfreier Kontakt für eine max. Druck
REL. ERR      Potentialfreier Kontakt für eine Sensorstörung
SENS.             Sensor analog Eingang max. 0-5V
GND               Ground (Minus)
+5V                 Spannungsversorgung 5V Sensor
+3,3V             Spannungsversorgung 3,3V Sensor
+8-27V-       Spannungsversorgung Pressure Sensor Modul

Versionsverlauf:

Intended:

  • Integration Zeitmessmethode durch Druckauslösung
  • Ergebnisliste im Webserver.
  • Ergebnistabelle im Webserver als CSV exportieren.
  • Anzeige der Ergebnisse in der Blynk App.
PressureSensor V101
PressureSensor V101
PressureSensor_V101.png
Version: 1.01
2.9 KiB
27 Downloads
Details

Released:

  • 15.12.2020: Version 1.00
    – Druckmessung relativ / absolut
    – Autocalibration
    – Sensorfehlererkennung Relaisausgang NC/NO
    – Seriale Ausgabe der Werte über USB,
    – Min/Max Wert Relaisausgänge NC/NO
    – Webbrowser Darstellung
    – Blynk Applikation
PressureSensor V1.00
PressureSensor V1.00
PressureSensor_V100.png
Version: 1.00
10.7 KiB
25 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 Sensorwiderstandes fü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 ein digitales 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 auf 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 auf dauer ireversiebel 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, wann der Regen wieder 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 geleitet werden können. 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 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 zur Verfügung, die zur Kapazitätsmessung angewandt werden können.

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, damit 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 einer 3V Variante 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 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 wird.

Für die Messung wird vom Regensensor nur der Pin 5 (Analogwert) und Pin 7 (GND) benötigt.
Soll die Heizung genutzt werden kommen noch der 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
225 Downloads
Details

Schaltplan

Schaltplan GewaechshausantriebBlynk
Schaltplan GewaechshausantriebBlynk
GewaechshausantriebBlynk_V100-_SCH.pdf
42.2 KiB
273 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
578 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)

Start- Stop Zeitmessung mit DOT Matrix Display und WLAN Anbindung

Timekeeper Manual
Timekeeper Manual
Timekeeper-Manual.pdf
Version: 1.02
3.1 MiB
640 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:


Blynk Applikation:

Webansicht:

Versionsverlauf:

Aufgrund einer Server Umstellung auf HTTPS, können OTA-Updates nun  nur noch ab der Version 1.02 durchgeführt werden!

Besitzen Sie noch eine ältere Firmware Version und möchten diese aber weiterhin aktualisieren, kontaktieren sie uns bitte über unser Support Center.

Intended:

  • – Keine weiteren Anfragen offen.

Released:

  • 15.12.2020: Version 1.02
    – Neue „Hold Ini“ Zeitnahmefunktion.
       Misst die Zeitdauer, die der Initiator aktiv war.
    – Eine Änderung der Zeitnahmemethode direkt am Timekeeper
       wird nun auch rückwärts in der Blynk App Blynk App
       aktualisiert.
    – Wenn kein NTP Zeitserver Server erreichbar ist, wird die
       Uhrzeit / Datum Anzeige am Timekeeper Modul abschalten.
    – Erweiterte Webdarstellung, Listenansicht mit bis zu zwanzig
       Einträge und einem CSV Export Funktion.
    Timekeeper-BLYNK-Token-V1.02
    Timekeeper-BLYNK-Token-V1.02
    Timekeeper-BLYNK-Token-V1.02.png
    2.9 KiB
    28 Downloads
    Details
  • 08.05.2019: Version 1.01
    „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
    39.9 KiB
    597 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
    437 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.