UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

Impulse zählen?

Diskussion über unsere Sensoren & Akoren sowie Tipps & Tricks zum Einsatz, Einbau, Erfahrungen usw.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten
Benutzeravatar

Ersteller
Zugschlus
Reactions:
Beiträge: 345
Registriert: Di Okt 02, 2018 4:28 pm
Wohnort: St. Ilgen, Baden-Württemberg
Hat sich bedankt: 112 Mal
Danksagung erhalten: 82 Mal
Kontaktdaten:

Impulse zählen?

#1

Beitrag von Zugschlus »

Hallo,

jetzt sitze ich hier mit meinem chinesischen Regenmesser mit Wippe und Reedkontakt, der bei jedem Kippen der Wippe einmal kurz durchschaltet, und meinem Wiregate Multi I/O Interface. Der Wolf hat es ordentlich erkannt, und wenn ich mir jetzt das 1Wire-Interface vom Wolf anschaue:

Bild

dann dämmert's mir, dass das Multi I/O Interface womöglich gar keine Impulse zählen kann sondern nur Pegel in Meldungen umwandelt und der Timberwolf, der z.B. den Port alle 30 Sekunden abfragt, einen zwischendrin vorbeigekommenen Impuls gar nicht mitbekommt, weil der Reedkontakt einfach nur einmal kurz durchschaltet und dann wieder in den Grundzustand zurückfällt.

Wie ist die kanonische Lösung für "Impulseingang in Timberwolf"?

Grüße
Marc
--
Marc Haber, St. Ilgen. Freier IT-Berater, Debian Developer.
TWS 950Q #326, VPN auf Anfrage - KNX, 1Wire (13/55/54 Slaves), MQTT, Cometvisu, viel Grafana, ganz ein bisschen Logik.
Benutzeravatar

jensgulow
Reactions:
Beiträge: 321
Registriert: Fr Apr 19, 2019 4:37 pm
Hat sich bedankt: 66 Mal
Danksagung erhalten: 134 Mal

#2

Beitrag von jensgulow »

KNX-Tasterschnittstelle z.B. Gira 111800 .... die zählt Impulse und sendet nach x sec. den Wert und stellt dann den Zähler zurück
Viele Grüße

Jens

_____________________________________________________________________
TWS 2600#394 , TWS 3500L#1051, VPN offen, Reboot erlaubt
Was wird genutzt? -> TWS, KNX, 1-wire, MODBUS, Http-REST-API, IFTTT, Enocean, Amazon Alexa
Benutzeravatar

Ersteller
Zugschlus
Reactions:
Beiträge: 345
Registriert: Di Okt 02, 2018 4:28 pm
Wohnort: St. Ilgen, Baden-Württemberg
Hat sich bedankt: 112 Mal
Danksagung erhalten: 82 Mal
Kontaktdaten:

#3

Beitrag von Zugschlus »

jensgulow hat geschrieben: Do Jul 18, 2019 4:40 pm KNX-Tasterschnittstelle z.B. Gira 111800 .... die zählt Impulse und sendet nach x sec. den Wert und stellt dann den Zähler zurück
Da draußen hab ich kein KNX, und will auch keins haben (jedenfalls nicht ohne Linienkoppler), und für den Spielkram hab ich auch kein dreistelliges Budget.

Eher wird das dann mein erstes Arduino-Projekt. Wie bekomme ich denn Daten aus einem Arduino in den Wolf?

Grüße
Marc
--
Marc Haber, St. Ilgen. Freier IT-Berater, Debian Developer.
TWS 950Q #326, VPN auf Anfrage - KNX, 1Wire (13/55/54 Slaves), MQTT, Cometvisu, viel Grafana, ganz ein bisschen Logik.

dreanaught
Reactions:
Beiträge: 40
Registriert: Fr Mai 24, 2019 3:22 pm
Hat sich bedankt: 21 Mal
Danksagung erhalten: 42 Mal

#4

Beitrag von dreanaught »

Hallo Marc,

der 1-Wire Sensor von Multi I/O unterstützt (zumindes theoretisch, ich hab das noch nicht validiert) latching.
Das heißt, er könnte sich merken, dass der IO einmal gewechselt hat, jetzt aber wieder in der Ausgangsstellung ist.

In wieweit das über den TW bzw. Busmaster konfigurierbar bzw. abfragbar ist weis ich leider noch nicht.
Ich hoffe mal das die Wippe nicht im sekunden-Takt kippt. Sonst wird es mit der Abfrage-Kadenz also der Frequenz in der der Sensor ausgelesen wird schwierig. Siehe
dreanaught hat geschrieben: Fr Jul 12, 2019 7:10 am Je nachdem wie "schnell" die Impulse kommen, könnte man möglicherweise die im Chip verbaute latch-Funktion verwenden. Dann muss aber die Anzahl der Abfragen des Zustands am IO in einer höheren Frequenz erfolgen als die Impulse von dem Sensor ausgelöst werden.
Steigt die Impulsfrequenz, über die Abfrage-Frequenz "verlierst" du Impulse...
Hier das Datasheet vom DS2413
Grüße,
Markus
TWS 2600 ID:396 (jetzt ist er da :dance: ), VPN offen, Reboot erlaubt, aktuell noch nicht im Haus, sondern in der Wohnung(d.h. zeitweise nicht im Netz)
Benutzeravatar

Ersteller
Zugschlus
Reactions:
Beiträge: 345
Registriert: Di Okt 02, 2018 4:28 pm
Wohnort: St. Ilgen, Baden-Württemberg
Hat sich bedankt: 112 Mal
Danksagung erhalten: 82 Mal
Kontaktdaten:

#5

Beitrag von Zugschlus »

Die Wippe kippt einmal pro ~ 2 ml. Meine Idee wäre, die Fläche so weit zu vergrößern, dass ich einen Klick pro 30 ml pro m² bekomme. Bei einem Wolkenbruch mit 60 l pro m² in zehn Minuten wären das schon drei Klicks pro Sekunde, aber wann hat man schon so einen Wolkenbruch?

Ich glaube, ich mach daraus mal mein erstes Arduino-Projekt und kippe die Daten erstmal in den Volkszähler, so lange der Timberwolf noch keine Möglichkeit hat, Daten über Ethernet anzunehmen.

Grüße
Marc
--
Marc Haber, St. Ilgen. Freier IT-Berater, Debian Developer.
TWS 950Q #326, VPN auf Anfrage - KNX, 1Wire (13/55/54 Slaves), MQTT, Cometvisu, viel Grafana, ganz ein bisschen Logik.

Advenoni
Reactions:
Beiträge: 292
Registriert: So Aug 12, 2018 11:55 am
Wohnort: Krumbach
Hat sich bedankt: 17 Mal
Danksagung erhalten: 114 Mal

#6

Beitrag von Advenoni »

Hallo Marc,

ich habe bei mir ein ähnliches Projekt. Wandle ein PWM-Signal eines CO2-Sensors, kein VOC in einem Arduino in einen Temperaturwert um.
Den Temperaturwert schicke ich dann über eine 1-Wire-Simulation an den TWS.
Ähnliches sollte mit dem Regensensor (der kommt bei mir hoffentlich noch diese Woche) auch möglich sein.

Gruß,
Martin
wiregate ID:1619 / timberwolf 2400 ID:108 / 950 ID:240 ID:464, VPN offen, Reboot bitte nach Rücksprache
Benutzeravatar

Ersteller
Zugschlus
Reactions:
Beiträge: 345
Registriert: Di Okt 02, 2018 4:28 pm
Wohnort: St. Ilgen, Baden-Württemberg
Hat sich bedankt: 112 Mal
Danksagung erhalten: 82 Mal
Kontaktdaten:

#7

Beitrag von Zugschlus »

1-Wire-Simulation? Das klingt interessant, erklär mal.
--
Marc Haber, St. Ilgen. Freier IT-Berater, Debian Developer.
TWS 950Q #326, VPN auf Anfrage - KNX, 1Wire (13/55/54 Slaves), MQTT, Cometvisu, viel Grafana, ganz ein bisschen Logik.

Advenoni
Reactions:
Beiträge: 292
Registriert: So Aug 12, 2018 11:55 am
Wohnort: Krumbach
Hat sich bedankt: 17 Mal
Danksagung erhalten: 114 Mal

#8

Beitrag von Advenoni »

Geht im großen und ganzen über ne fertige Bibliothek. Einschränkung hier ist allerdings, dass wegen dem Timing während der 1-Wire-Kommunikation alle Interrupt deaktiviert sein müssen. Ich denke aber fast, dass zur Erfassung der Impulse kein Interrupt nötig sein dürfte.
Da bei mir der Sensor seinen Wert jede Sekunde aktualisiert, mich der Wert aber eigentlich nur alle 5 Minuten interessiert war es mir egal.
Habe aber zur Sicherheit noch das deutlich schwankendere Analogsignal des Sensor mit ausgewertet.
Das Arduino-Programm ist dann recht übersichtlich:

Code: Alles auswählen

#include <DS18B20.h>
#include <OneWireHub.h>

volatile unsigned long aktueller_Impuls;
volatile unsigned long letzter_positiver_Impuls;
volatile unsigned long letzter_negativer_Impuls;
unsigned long letzter_negativer_Impuls_sp;
volatile unsigned long Impuls_high;
volatile unsigned long Impuls_low;

const unsigned long Aufloesung=5000;
const unsigned long Min_high=2;
const unsigned long Min_low=2;
const int PWM_Eingang=2;
const unsigned long Timeout=1500;
const int Analog_Eingang=0;
const unsigned long Analog_min=82; //~0,4V
const unsigned long Analog_max=409; //~2V
const int LED=13;
bool LED_Ausgang;

volatile unsigned long CO2_PWM;
unsigned long CO2_PWM_sp;
unsigned long CO2_Analog;
unsigned long CO2_Analog_sp;
unsigned long CO2_Analog_Diff=300;
float CO2_real;

const uint8_t pin_onewire   { 3 };

auto hub    = OneWireHub(pin_onewire);

auto ds18b20_pwm = DS18B20(0x28, 0x8F, 0xBD, 0x2A, 0x07, 0x00, 0x02); // DS18B20: Auswertung PWM
auto ds18b20_analog = DS18B20(0x28, 0x8F, 0xBD, 0x2A, 0x07, 0x00, 0x01); // DS18B20: Auswertung Analog

void setup() {
  Serial.begin(9600);
  pinMode(PWM_Eingang, INPUT);
  pinMode(LED, OUTPUT);
  // Interrupt definieren
  attachInterrupt(digitalPinToInterrupt(PWM_Eingang), Zaehlen, CHANGE);
  hub.attach(ds18b20_pwm);
  hub.attach(ds18b20_analog);
  Serial.println("Setup beendet");
}

void Zaehlen() { 
  aktueller_Impuls = millis();
  if (digitalRead(PWM_Eingang)) {
    Impuls_low = aktueller_Impuls - letzter_negativer_Impuls;
    letzter_positiver_Impuls = aktueller_Impuls;
  }
  else {
    Impuls_high = aktueller_Impuls - letzter_positiver_Impuls;
    letzter_negativer_Impuls = aktueller_Impuls;
  }  
}

void loop() {
  hub.poll();
  if ((letzter_negativer_Impuls_sp != letzter_negativer_Impuls) && (Impuls_high > 0 ) && (Impuls_low > 0) && (Impuls_high < 1000 ) && (Impuls_low < 1000) && (Impuls_high + Impuls_low > 1000) && (Impuls_high + Impuls_low < 1010)) {
    CO2_PWM = Aufloesung * (Impuls_high - Min_high) / (Impuls_high + Impuls_low - Min_high - Min_low);
    letzter_negativer_Impuls_sp=letzter_negativer_Impuls;
  }
  CO2_Analog = (analogRead(Analog_Eingang) - Analog_min) * Aufloesung / (Analog_max - Analog_min);

  if (CO2_PWM_sp!=CO2_PWM) {
    LED_Ausgang = !LED_Ausgang;
    digitalWrite(LED, LED_Ausgang);
    CO2_PWM_sp = CO2_PWM;
    // (CO2_real+55)*36
    // CO2_real*40
    CO2_real = (float)CO2_PWM / 40.0;
    ds18b20_pwm.setTemperature(CO2_real);
  }
  else if (abs(CO2_Analog-CO2_Analog_sp)>CO2_Analog_Diff) { 
    CO2_Analog_sp = CO2_Analog;
    // (CO2_real+55)*36
    CO2_real = (float)CO2_Analog / 40.0;
    ds18b20_analog.setTemperature(CO2_real);
  }
}
Gruß,
Martin
wiregate ID:1619 / timberwolf 2400 ID:108 / 950 ID:240 ID:464, VPN offen, Reboot bitte nach Rücksprache
Benutzeravatar

Ersteller
Zugschlus
Reactions:
Beiträge: 345
Registriert: Di Okt 02, 2018 4:28 pm
Wohnort: St. Ilgen, Baden-Württemberg
Hat sich bedankt: 112 Mal
Danksagung erhalten: 82 Mal
Kontaktdaten:

#9

Beitrag von Zugschlus »

Und der 1-Wire-Bus hängt dann direkt auf einem GPIO-Pin oder is da noch elektrische Beschaltung notwendig?
--
Marc Haber, St. Ilgen. Freier IT-Berater, Debian Developer.
TWS 950Q #326, VPN auf Anfrage - KNX, 1Wire (13/55/54 Slaves), MQTT, Cometvisu, viel Grafana, ganz ein bisschen Logik.

Advenoni
Reactions:
Beiträge: 292
Registriert: So Aug 12, 2018 11:55 am
Wohnort: Krumbach
Hat sich bedankt: 17 Mal
Danksagung erhalten: 114 Mal

#10

Beitrag von Advenoni »

Hängt direkt drauf
wiregate ID:1619 / timberwolf 2400 ID:108 / 950 ID:240 ID:464, VPN offen, Reboot bitte nach Rücksprache
Antworten

Zurück zu „Sensoren & Aktoren - mit Tipps & Tricks“