Mehrere analoge Werte mit der Siemens LOGO!

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

Ausgangslage

Die LOGO! hat in der Basis nur zwei (z.B. 0BA5) , bzw. vier (z.B. 0BA8) analoge Eingänge und NUR zwei analoge Ausgänge (ZONK). Das schreit nach einem Workaround.

Eingangsseite

Abgesehen von der Tatsache, dass ich über das EIB/KNX-Modul 8 analoge Werte setzten kann, wollte ich doch nicht ohne Not den "Umweg" über den EIB gehen. Also was spricht gegen eine Lösung mit einem ATMEL/Microchip (hier ATmega 328P) und einer Temperatursensoranbindung (DS18B20) an die LOGO!.

Irgendwie habe ich dabei ein Jamais-vu (NB: Ich habe Anfang der 90er meine Diplomarbeit u. a. über smarte Sensoren geschrieben).

Das Ganze würde dann sensorseitig so aussehen:

LOGO Temp Multiplexer.png

In der LOGO habe ich das Programm dann so realisiert:

LOGO Tempmessung.png

An AI1(I7) und AI2(I8) liegen die analogen Werte gemultiplext an. Die Steuerung geschieht für 4 Werte über I6 und I5. I6 ist der Wahlschalter für die 2 "Speicherbänke" und I5 liefert den Impuls zur Übernahme der Werte. Die Schaltung ist theoretisch bis zur maximalen Zahl von 16 Analogemerkern und 4, bzw.5 Steuerleitungen erweiterbar.

Die Schaltung nach den Analogverstärkern mit den Komperatoren, UND-Gliedern und den offnen Klemmen, sind nur dazu da, das Programm kompilierbar zu machen. Sie dienen als Dummy. Für die Logik haben sie keine Bedeutung.

Wenn jemand noch tiefer einsteigen will, bitte die Kommentarfunktion nutzen.

Anschlussbelegung
Eingang Art EIB R/W Beschreibung Wirkung
I1 physikalisch 3/4/1 L manuelle Korrektur Mischer Fuszbodenheizung Werte kleiner Q1 Q2
I2 physikalisch 3/4/2 L manuelle Korrektur Mischer Fuszbodenheizung Werte groeszer Q1 Q2
I3 physikalisch 3/4/3 L Sicherheitsabschaltung Anlegethermostat Q3
I4 physikalisch 3/4/4 L Anlauf Heizungspumpe HK1 10 Minuten laufen damit sich eine Temperaturdifferenz einstellen kann AQ1
I5 physikalisch 3/4/5 L Trigger Temperaturuebernahme von I7 (AI1) unbd I8 (AI2) Speicherbank
I6 physikalisch 3/4/6 L Wechsler Speicherbaenke Speicherbank
I7 (AI1) physikalisch 3/6/1 L Analogwert 1 Temperatur 0-10V Speicherbank
I8 (AI2) physikalisch 3/6/2 L Analogwert 2 Temperatur 0-10V Speicherbank
I9 virtuell 3/4/9 S Schalter Versorgung Ventile Fuszbodenheizung wirkt direkt/nur auf Q4 Q4
I10 virtuell 3/4/13 S Manueller Betrieb Pumpe Fuszbodenheizung, Sicherheit und Temperfuehrung auszer Kraft. Vorrangig zu I13 und I3 Q3
I11 virtuell 3/4/11 S Fernkorrektur Mischer Fuszbodenheizung Werte kleiner Q1 Q2
I12 virtuell 3/4/12 S Fernkorrektur Mischer Fuszbodenheizung Werte groeszer Q1 Q2
I13 virtuell 3/4/12 S Freigabe Pumpe Fuszbodenheizung, damit kann die Sicherheitsabschaltung (Anlegethermostat = 0) manuell übergangen werden. Q3
I14 virtuell 3/4/14 S Anlauf Heizungspumpe fuer 10 Minuten, bis sich eine Temperaturdifferenz zwischen Vor- und Ruecklauf eingestellt hat. Parallel zu I4 AQ1
AI1 (I7) physikalisch 3/6/1 L Analogwert 1 Temperatur 0-10V Speicherbank
AI2 (I8) physikalisch 3/6/2 L Analogwert 2 Temperatur 0-10V Speicherbank
AI3 virtuell 3/6/3 LS Testeingang (EIB) Ansteurungsanzeige Stufen 0 250 500 750 999 Q5 Q6 Q7 Q8
AI4 virtuell 3/6/4 LS Testeingang mit Wirkung direkt/nur AQ2 AQ2
AI5 virtuell 3/6/5 LS Sollwert Temperatur Fuszbodenheizung Q1 Q2
Anschlussbelegung
Ausgang Art EIB R/W Beschreibung Wirkung
Q1 physikalisch 3/5/1 L manuelle Korrektur Mischer Fuszbodenheizung Werte kleiner I1 I2 I11 I12 AI5 (AI1 AI2 I5 I6)
Q2 physikalisch 3/5/2 L manuelle Korrektur Mischer Fuszbodenheizung Werte groeszer I1 I2 I11 I12 AI5 (AI1 AI2 I5 I6)
Q3 physikalisch 3/5/3 L Pumpe Fuszbodenheizung I10 I13 I3 (AI1 AI2 I5 I6)
Q4 physikalisch 3/5/4 L Versorgungsspannung Aktoren Fuszbodenheizung I9
Q5 virtuell 3/5/5 L Stufe 250 AI3
Q6 virtuell 3/5/6 L Stufe 500 AI3
Q7 virtuell 3/5/7 L Stufe 750 AI3
Q8 virtuell 3/5/7 L Stufe 999 AI3
AQ1 physikalisch 3/7/1 L Ansteuerung Wellenpaket I4 I14 (AI1 AI2 I5 I6)
AQ2 physikalisch 3/7/2 L Analogwert von AI4 AI4

Analoge Ansteuerung 0-10V

Um die Ansteuerung des analogen LOGO!-Eingangs zu realisieren benötigt man somit eine elektronische Schaltung, die einen digitalen (Mess-)Wert am Eingang einen entsprechenden analogen Wert, zwischen 0-10V, am Ausgang gleichstellt.

Die erste Überlegung bezieht sich auf die Abbildung des Wertebereiches. Da in meinem Fall, die Heizung wohl nie unter 0°C und nie über 100°C im Heizkreislauf haben wird, bietet sich eine Abbildung, 0°C = 0V bis 100°C = 10V an. Abgesehen von der Stabilität und Genauigkeit der Ausgangsspannung spielt die Auflösung eine bedeutende Rolle.

Die folgende Tabelle soll den Zusammenhang zwischen Auflösung auf digitaler und analoger Seite verdeutlichen.

DA-Zusammenhang
Digitale Auflösung (Bit) Stufen Analoge Auflösung (mV)
8 256 39
10 1024 9,8
12 4096 2,44
16 65536 0,15

Da nach o.g. Abbildung 1°C 100mV entsprechen und 0,1°C 10mV würden bei einer 8-Bit Auflösung der gewählten Digital-Analog-Umsetzung (AD-Converter, DAC) die Temperaturwerte in 0,4°C-Schritten "springen". Für die Heizungsregelung, bzw. Steuerung würde das eigentlich genügen. Bei 10 Bit Auflösung ist die Schrittweite 0,1°C und bei 12 Bit könnte man schon auf zwei Nachkommastellen auswerten. Aber erst bei 16 Bit sind zwei Nachkommastellen der Temperatur wirklich brauchbar. Vorausgesetzt natürlich der Messwert des Sensors ist entsprechend genau.

Da der Preisunterschied des eingesetzten DACs zwischen 8, 10 und 12 Bit marginal ist, setze ich die 12 Bit Variante ein. Für audiophile Ansprüche z.B. ist dies natürlich nicht genügend, da beginnen die Überlegungen erst bei 16 Bit und es geht durchaus bis zu 32 Bit und darueber.

Eine Erzeugung einer Gleichspannung durch ein geglättetes PWM-Signal, um den analogen Eingang zu bedienen, gehe ich bewusst nicht ein. Dies ist immer nur eine Krücke.

Hardwareumsetzung

MCP4822

Da ich beide analogen SiemensLOGO! (I7,I8) bedienen will habe ich den MCP4822-E/SN gewaehlt und damit folgende Schaltung entworfen.

Ich bin kein Freund von Einplatinenloesungen, so nach dem Motto 'all on board'. Im Internet findet man sehr viele brauchbare Loesungen, aber leider sind sie durch das AllonBoard oft nicht komplett zu uebernehmen weil die Anpassung oft zu speziell, oder z.B. der eingesetzte Mikrocontroller nicht dem eigenen Wunsch entspricht. Daher gibt es hier nur ein Modul zu Umsetzung was von einem fast beliebigen Controller angesteuert werden kann.

TODO

Schematic

Board

Fotos Installation

Schalteingaenge

SiemensLOGO Eingangsschwellen.png

Bei einer Schaltschwelle von 1,5 mA und 8 V sollte der Widerstand am Kollektor nicht groeszer als 6,8 kOhm gewaehlt werden. Die Basiswiderstand ist mit 10 kOhm recht grosz. Der Strom im Schaltzustand 'on' betraegt nur 4 uA und belastet den ATmega und die Spannungversorgung somit nur minimal. Die easyEDA-Simulation habe ich nur der Vollstaendigkeit noch hier beigefuegt. Allerdings ist eine Spicesimulation fuer diesen Anwendungsfall mit Kanonen nach Spatzen geschossen. TinkerCAD leistet hier saubere Arbeit.

Bei einer Eingangsspanung von 24,17 V an I1-6 sind 4,19 mA geflossen, was einen Innenwiderstand von 5,764 kOhm bedeutet. Bei der Schaltschwelle von 8 V und 1,5 mA liegt der Innenwiderstand bei 5,333 kOhm. Der Kollektorwiderstand sollte demnach doch um einiges kleiner sein als 10 kOhm, da man zwar den Stromverbrauch der Schaltung verkleinert, aber doch bedenklich dicht an die Schaltschwelle kommt. Die Schaltung funktioniert mit einem Kollektorwiderstand auch deutlich kleiner 5 kOhm. Dann ist allerdings zu bedenken, dass ueber ihn im geschalteten Zustand die gesamten 24 V fallen. Bei einem 1/8 Watt Verlustleistung sind das maximal 5 mA also minimal 4,8 kOhm. Also aus der Normenreihe E12 sind die Widerstandswerte 5,6 kOhm, 6,8 kOhm oder 8,2 kOhm eine gute Wahl.

Levelshifter 5 24 on.pngLevelshifter 5 24 off.png

Levelshifter 5 24 easyeda.png

Software (ATmega)

Onewire_Dallas_(Maxim)_Temperatur_Library

Request for Comments

Loading comments...