Mehrere analoge Werte mit der Siemens LOGO!
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:
In der LOGO habe ich das Programm dann so realisiert:
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
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.
Software (ATmega)
Onewire_Dallas_(Maxim)_Temperatur_Library