ESP8266 mit digitalem Potentiometer (X9C104S): Sketch und Fhem-Device

Begonnen von Gisbert, 03 Juli 2019, 20:47:55

Vorheriges Thema - Nächstes Thema

Gisbert

Liebe Fhem-Gemeinde,

ich möchte gerne einen digitalen Potentiometer (ich hab das Modell X9C104S) mit einem ESP8266 steuern.

Der Hintergrund besteht darin, dass ich gerne bei meiner Heizung statt des NTC-Widerstandswertes einen Wert von einem digitalem Potentiometer benutzen möchte, den ich aus Fhem steuern und über einem ESP8266 bereitstellen möchte.

Hat jemand solch eine Aufgabe, d.h. die Steuerung eines digitalen Potentiometers (X9C104S) auf einem ESP8266 und der Steuerung aus Fhem heraus bereits realisiert?

Ich wäre sehr an einer Lösung interessiert, auch Ideen oder Vorschläge sind hoch willkommen.

Viele Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Papa Romeo

Hallo Gisbert,

ich hatte vor langer Zeit schon mal so ein "elektronisches Potentiometer" mit dem 9C103 gebaut. Allerdings mit Impuls-Drehgeber.
Auch mit dem ESP sollte das aber auch kein Problem darstellen.
Du brauchst mindestens zwei GPIO´s.
Einen für Up/Down und einen für den Zählimpuls.
Mit einem dritten GPIO können, über den CS-Eingang und bestimmten Zuständen an den anderen beiden Pin´s, sogar Werte im Chip gespeichert werden,
falls erforderlich.
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Gisbert

Hallo Papa Romeo,

vielen Dank für deine Hinweise.

Die Verbindung ESP8266 zum X9C104 ist mir, oder viel besser meinem Mitstreiter hier Vorort schon einigermaßen klar.

Was mir noch nicht klar ist, wie ich den gewünschten Widerstandswert aus Fhem in den ESP8266 hineinbringe. Meine heimlich Hoffnung ist, dass jemand einen Sketch zur Verfügung stellen kann, den ich direkt oder als Basis für einen eigenen Sketch nutzen kann.

Es muss nicht unbedingt ein eigener Sketch sein, es kann auch ESPEasy oder Tasmota sein, wobei ich kaum glaube, dass so eine Funktionalität, wie sie mir vorschwebt, schon enthalten ist.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Papa Romeo

#3
... der 104`er hat glaube ich 100 kOhm und einen 7-Bit-Zähler, d.h. er hat 127 Stufen.

Also bedeutet eine Stufe: 100 kOhm / 127  --> etwa 790 Ohm.

Wenn also die Anzahl der Zählstufen bekannt ist, kennst du auch den Widerstandswert,
bzw. wenn du weißt welchen Widerstandswert du benötigst, kannst du die Zählstufen berechnen
und die Anzahl dieser Stufen von FHEM über den ESP ausführen lassen.

PS: ...hat der NTC deiner Heizung wirklich einen so hohen Wert ?

Edit: ...zählt nur bis 100, also ein Tap = 1 kOhm
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Gisbert

Hallo Papa Romeo,

der NTC macht laut Datenblatt bei -15°C ca. 73 kOhm, und gemessen habe ich gerade 9.65 kOhm bei aktuellen 25.5°C hier, also passt das für den X9C104 schon mal.
Dann hab ich die Spannung und die Stromstärke (2.45V und 0.25 mA) gemessen - das passt auch zur Spezifikation des X9C104.

Für die "Ausgabe"seite glaubt mein Mikroekektronik-Kollege genügend Informationen zu haben, um einen Wert für den X9C104 bereitzustellen.

Das Problem, bzw. die Aufgabe, ist aus Fhem heraus einen variablen Widerstandswert, der sich aus einer externen Temperaturmessung speist, an den ESP8266 zu senden, so dass er dort wiederum an X9C104 weitergereicht werden kann; letzeres scheint für uns kein Problem darzustellen.

Ich denke, dass es sich um eine lösbare Aufgabe handelt, wobei mir die genaue Lösung noch nicht klar ist Wir werden es einfach mal angehen und uns Stück für Stück vorarbeiten. Für den X9C104 gibt es eine Arduino-Bibliothek.

Ich hab diesen Thread eröffnet, um herauszufinden, ob jemand diesen Aufbau (ESP8266 + X9C104) und einen passende Sketch bereits realisiert hat.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

der-Lolo

ich häng mich hier mal dran weil ich auch verwendung hätte...


Gisbert

Zitat von: der-Lolo am 04 Juli 2019, 21:23:09
ich häng mich hier mal dran weil ich auch verwendung hätte...
Gerne können wir das Projekt zusammen voranbringen; vielleicht finden wir ja noch jemanden, der bereits weiter als wir ist.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

PeMue

RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

Gisbert

Hallo Peter,

vielen Dank für deinen Beitrag. Der Sketch passt noch nicht ganz, ist aber sicherlich hilfreich für unser Projekt(chen).

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Papa Romeo

Zitat von: Gisbert am 04 Juli 2019, 20:57:08
der NTC macht laut Datenblatt bei -15°C ca. 73 kOhm, und gemessen habe ich gerade 9.65 kOhm bei aktuellen 25.5°C hier, also passt das für den X9C104 schon mal.
Dann hab ich die Spannung und die Stromstärke (2.45V und 0.25 mA) gemessen - das passt auch zur Spezifikation des X9C104.

...wie groß ist der Temperaturbereich der abgedeckt werden muss ?
...verläuft die Temperatur-Widerstandskurve annähernd linear mit den ca. 1,5 kOhm/Grad-Celsuis?
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Gisbert

Hallo Papa Romeo,

es gibt ein Diagramm; daraus habe ich den Wert bei -15°C (ca. 73 kOhm) abgeschätzt, sowie den gemessenen Wert von 9.65 kOhm.
Die Kurve ist leicht exponentiell abfallend.

Für das zu lösende Problem ist es aber vglw. unerheblich, da der X9C104 alle Widerstandswerte im Bereich von 1 bis 100 kOhm mit einer Auflösung von 1 kOhm darstellen kann, was für mich völlig ausreichend ist.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Papa Romeo

Hallo Gisbert,

...aber machen die 100 kOhm überhaupt Sinn, wenn ich mich dann z.B nur in einem Bereich von 1 - 20 kOhm bewege und den restlichen Bereich von 20 bis 100 kOhm überhaupt nie benötige.

Geht halt gewaltig auf Kosten der Auflösung.

Ich denke für den Sketch ist es schon wichtig ob ich jetzt mit 100 Taps 20 kOhm abdecken kann oder ob ich für 20 kOhm nur 20 Taps zur Verfügung habe. Deswegen meine Frage bezüglich des abzudeckenden Temperaturbereiches.
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Gisbert

#12
Hallo Papa Romeo,

ich verstehe deinen Punkt, aber mir kommt es gar nicht auf eine hohe Auflösung an,
denn
ich hab folgendes vor. Meine Heizung ist wenig smart, und zu allem Übel taktet sie in Kombination mit der FBH in der Übergangszeit, es sind alle Maßnahmen ausgereizt. Ich messe aber durch angebrachte DS18B20-Sensoren die Vorlauf- und Rücklauftemperatur, deshalb bekomme ich das Takten im 10 Minutentakt mit.
Die Idee ist, dass ich der Heizung im Wechsel eine niedrigere und höhere Außentemperatur über den entsprechenden Widerstandswert vorgaukle und somit das Takten quasi erzwinge, aber dann im Stundentakt.

Viele​ Grüße​ Gisbert​

Edit:
Außerdem könnte ich bei entsprechendem Forcast weniger oder mehr heizen, als nur durch den aktuellen Außentemperaturwert gesteuert.
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Papa Romeo

..ok...jetzt sieht die Sache anders aus und aus dem Ding wird ein Schuh...
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Gisbert

Hallo zusammen,

ich bin weitergekommen und habe jetzt einen funktionalen Sketch auf dem ESP8266 laufen und kann aus Fhem heraus Widerstandswerte, die ich aus einer vorgegebenen und vorhandenen Temperaturmessung errechne, per MQTT zum ESP senden. Die Berechnung des Widerstandswertes gilt natürlich nicht universell sondern nur für den NTC, der in meiner Heizung vorhanden ist. Sicherheitshalber habe ich den Widerstandswert auf ganze Zahlen gerundet, damit der Arduino-Sketch auf jeden Fall funktioniert.
Ich schätze, dass ich aufgrund der ganzen Umrechnungen, Rundungen etc. einen Fehler im Bereich von einem halben bis max. einem Grad habe. Für meine Zwecke ist das absolut in Ordnung.

Die Defintion in Fhem und der Arduino-Sketch im Anhang:
defmod Heizung_Widerstand MQTT_DEVICE
attr Heizung_Widerstand IODev MyBroker
attr Heizung_Widerstand mqttPublish Widerstand:topic=Heizung/Widerstand/Sollwert
attr Heizung_Widerstand publishSet Heizung/Widerstand/Sollwert
attr Heizung_Widerstand stateFormat Aussentemp.: [TH.Kuhlmannweg8:temperature]°C</br>\
Resistance: [$name:Widerstand]kΩ
attr Heizung_Widerstand subscribeReading_Istwert Heizung/Widerstand/Istwert
attr Heizung_Widerstand subscribeReading_Spannung Heizung/Widerstand/Spannung
attr Heizung_Widerstand userReadings Widerstand {round(32.249564*exp(-0.054692*ReadingsVal('TH.Kuhlmannweg8','temperature','')),0)}


Das Publishen des Widerstandswertes geht wie folgt:
set Heizung_Widerstand [Heizung_Widerstand:Widerstand]

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

disaster123

Mega Thema. Genau das was ich gerade suche. Läuft das noch so?

Gisbert

Hallo disaster123,

die Installation lief, bis ich sie durch eine bessere Schaltung ersetzt hatte. Bis dahin lief die Schaltung und die Definitionen in Fhem problemlos.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

buec65

Hallo Gisbert, wäre an Informationen zur neuen Schaltung interessiert. Möchte damit einer Heizung die Temperatur vom Brauchwasserspeicher simulieren.

Viele Grüße buec65

Gisbert

Hallo buec65,

Gegenfrage: warum misst du die Temperatur nicht, bspw. mit einem Dallas DS18B20? Oder nimmst einen Temperatursensor, der für deine Heizung geeignet ist?

Beschreibe doch mal näher, gerne im Detail, was deine Ziele sind. Dann ergeben sich vielleicht gute Möglichkeiten, anstatt nur an einer Stelle anzusetzen.

Wenn du einen digitalen Potentiometer einsetzen willst, dann setz dich mit dem Sketch auseinander, den ich gepostet habe.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY