FHEM Forum

FHEM - Hausautomations-Systeme => 1Wire => Thema gestartet von: locutus am 01 Januar 2016, 14:00:18

Titel: 1-Wire Slave Devices auf AVR und PIC Microcontrollerbasis
Beitrag von: locutus am 01 Januar 2016, 14:00:18
Hallo,

im Welt-Weiten-Web findet der Bastler einige Beispielschaltungen für 1-Wire Slave Devices. Ich habe mal aus reiner Neugier die PIC16 Schaltung von fabiszewski.net (http://www.fabiszewski.net/1-wire-slave/) neu gestaltet und auf eine kompakte Platine untergebracht.
Der Temperatur-/Luftfeuchtesensor (SHT11 oder SHT21) ist via Busmaster an meinem Raspberry Pi 2 angeschlossen.

Besteht hier im Forum Interesse an diesem Sensor? Ich habe noch einen kleinen Bestand an bestückten Platinen und werde einige davon entbehren können. Allerdings muss ich dazu anmerken, dass der Sensor nur in Verbindung mit dem Patch für owfs-2.8p13 (http://www.fabiszewski.net/1-wire-slave/owfs-2.8p13-owslave.patch.gz) funktioniert. Derzeit ist der Betrieb mit fhem nicht möglich.

Schaltplan und Gerberdaten im Anhang.
Die Verwendung der Daten für kommerzielle Zwecke, Herstellung oder gewerblichen Vertrieb ist untersagt.
Titel: Antw:1-Wire Slave Devices auf AVR und PIC Microcontrollerbasis
Beitrag von: Prof. Dr. Peter Henning am 02 Januar 2016, 16:51:03
Äh - warum ist denn der Betrieb mit FHEM nicht möglich ? Was ist denn die Spezialität des 1-Wire Slave in diesem Fall ?

LG

pah
Titel: Antw:1-Wire Slave Devices auf AVR und PIC Microcontrollerbasis
Beitrag von: ritchie am 02 Januar 2016, 20:26:37
Hallo Zusammen,

so wie ich das sehe, wurde hier nur ein weiteres (eigenes) 1- wire Device angelegt, welches der Standard OWFS nicht erkennen kann und daher einen Patch benötigt. Die ID "BF" ist laut : http://owfs.sourceforge.net/family.html nicht vergeben und daher auch nicht unterstützt.

Vermutlich auch der Grund, warum Fhem hier streikt.

Die hier abgelegt Patches ist meiner Meinung nach keiner vom offiziellen Pfad, sondern eine persönliche Erweiterung des 1-wire Bus mit allen seinen Vor und Nachteilen.
http://www.fabiszewski.net/1-wire-slave/

Heisse Sache bei Problemen, würde ich mal sagen.

Gruss R.




Titel: Antw:1-Wire Slave Devices auf AVR und PIC Microcontrollerbasis
Beitrag von: locutus am 02 Januar 2016, 21:00:25
Dafür ist das Modul OWID gedacht aber im Logfile tauchen keine brauchbaren Daten auf.

2016.01.02 17:47:36 1: OWX: 1-Wire bus OWio1: interface master DS2480 detected for the first time
2016.01.02 17:47:45 3: OWID:    Device OWX_BF_54594D454B00 defined.
2016.01.02 17:47:45 1: OWX: 1-Wire devices found on bus OWio1 (OWX_BF_54594D454B00)
2016.01.02 17:52:55 1: OWX: Search CRC failed
2016.01.02 17:57:55 1: OWX: Search CRC failed
2016.01.02 18:02:55 1: OWX: Search CRC failed
Titel: Antw:1-Wire Slave Devices auf AVR und PIC Microcontrollerbasis
Beitrag von: Prof. Dr. Peter Henning am 02 Januar 2016, 22:15:46
Klar, OWID kennt nur die ID.

Ist aber kein Problem, beliebige Register per eigenem Modul auszulesen.

LG

pah
Titel: Antw:1-Wire Slave Devices auf AVR und PIC Microcontrollerbasis
Beitrag von: locutus am 10 Dezember 2017, 12:15:09
Hallo zusammen,

hier ein weiterer 1-Wire Sensor zur Feuchte- und Temperaturmessung. Die Schaltung besteht im Wesentlichen aus einem AVR ATtiny, einem Spannungsregler, einem Pegelumsetzer und dem SHT21 Feuchtesensor (https://www.sensirion.com/de/umweltsensoren/feuchtesensoren/feuchte-temperatursensor-sht2x-digital-i2c-genauigkeit/). Auf dem ATtiny84A wird der 1-Wire DS2438 Smart Battery Monitor emuliert.

Einbindung in FHEM mit OWMULTI:
define OWX_26_A2D984000005 OWMULTI DS2438 A2D984000005
attr OWX_26_A2D984000005 VName relHumidity|rH
attr OWX_26_A2D984000005 VUnit percent|%


Formel zur Berechnung der Feuchte:
attr OWX_26_A2D984000005 VFunction ((V / VDD - 0.16) / 0.0062) / (1.0546 - 0.00216 * T / 256.0)


Einbindung in FHEM mit OWFS und OWDevice:
define DS2438_A2D984000005 OWDevice 26.A2D984000005 60

Berechnung der Feuchte:
attr DS2438_A2D984000005 userReadings humidity {sprintf("%.1f", ((ReadingsVal("$name", "VAD",0) / ReadingsVal("$name", "VDD",0) - 0.16) / 0.0062) / (1.0546 - 0.00216 * ReadingsVal("$name", "temperature",0) / 256.0))}

Fertiggeräte sind im Marktplatz verfügbar.
Titel: Antw:1-Wire Slave Devices auf AVR und PIC Microcontrollerbasis
Beitrag von: locutus am 31 Dezember 2017, 17:00:00
Hallo zusammen,

hier die Weiterentwicklung des 1-Wire Sensors zur Feuchte- und Temperaturmessung. Die Schaltung wurde zusätzlich mit einem BMP280 Luftdrucksensor (https://www.bosch-sensortec.com/bst/products/all_products/bmp280) bestückt. Auf dem ATtiny84A wird der 1-Wire DS2450 Quad A/D Converter emuliert.

Einbindung in FHEM mit OWAD:
define OWX_20_A2D984001602 OWAD DS2450 A2D984001602

Formel zur Berechnung der Temperatur, Feuchte und Luftdrucks:
attr OWX_20_A2D984001602 userReadings Temperatur {sprintf("%0.1f",(ReadingsVal("$name","A",0)-2.56)*128)},Feuchte {sprintf("%0.2f",ReadingsVal("$name","B",0)*128)},Luftdruck {sprintf("%0.1f",ReadingsVal("$name","D",0)*400)}

Schaltplan, HEX-Datei für ATtiny84 und Gerberdaten für OSH Park (https://oshpark.com/) im Anhang.
Die Verwendung der Daten für kommerzielle Zwecke, Herstellung oder gewerblichen Vertrieb ist untersagt.


Fertiggeräte sind demnächst im Marktplatz (https://forum.fhem.de/index.php/topic,80830.0.html) verfügbar.
Titel: Antw:1-Wire Slave Devices auf AVR und PIC Microcontrollerbasis
Beitrag von: tpm88 am 21 Februar 2018, 19:05:56
Hallo Locutus,

hast du für den Triplesensor auch eine Gehäuseempfehlung?

Gruß
Tobias
Titel: Antw:1-Wire Slave Devices auf AVR und PIC Microcontrollerbasis
Beitrag von: Deckoffizier am 21 Februar 2018, 22:01:07
Hallo  locutus,

bei mir sieht das userReading so aus

Temperatur:A.* {(ReadingsVal("Wettersensor","A",0)-2.5674)*128 }, Feuchte:B.* { ReadingsVal("Wettersensor","B",0)*128.55}, Luftdruck:D.* { (ReadingsVal("Wettersensor","D",0)*400)*1.007000581}

beim Luftdruck ist noch die Höhe über Meeresspiegel mit eingeflossen ca. 65m.

Gruß
Hans-Jürgen
Titel: Antw:1-Wire Slave Devices auf AVR und PIC Microcontrollerbasis
Beitrag von: Bartimaus am 17 Mai 2018, 12:28:00
Hallo,

bei OWAD gibt es verschiedene Attribute. Mit "AName" kann man dem TempBaustein (=A) einen Namen geben, mit "AFunction" z.B. "(VA-2.56)*128" die Berechnung des Temperaturwertes.

Dies gilt für die "Ports" A,B,C,D" des Moduls. Somit kann man sich das "Userreading" sparen.

JustMy2Cents