Hallo zusammen, ich habe eine Heizungssteuerung mit einem MSP1611 in C programmiert. Zum Temperaturen messen verwende ich mehrere LM75 an I2C Bus. Funktioniert soweit alle prima. Ich bekomme einige Siganle von meiner Heizung als 24V Signal. Um das Signal mit dem µC Verarbeiten zu können, schalte ich mit den 24V ein kleines Printrelais welches mit dem Schließkontakt ein Signal auf einen Eingangsport gibt. Ich habe in meinem Progamm (habe ich im Moment leider nicht greifbar) eine kleine Sicherheit eingebaut, damit es nicht stehen bleibt, wenn mal ein Fühler oder auch ein Kabel defekt ist. Sollte dies geschehen, da geht eine LED an, und die Anzeige für den Fühler steht auf 00. Im Programm werden alle Fühler nacheinander mit der gleichen Funktion ausgelesen. Es ist jetzt schon ein paar mal passiert, dass plötzlich alle Fühler den gleichen Wert anzeigen, dieser Wert ändert sich auch bei wechselnden Temperaturen nicht mehr und die Störungs LED leuchtet. Ich kann diesen Zustand nur ändern in dem ich die Spannung von der Steuerung einmal kurz unterbreche. Danach läuft alles wieder normal. Die Störung kann eigentlich nur von dem 24V Signal kommen. Ich kann mir zwar nicht vorstellen warum das so ist, aber sonst ist nichts weiter angeschlossen. Aber wenn das so ist, kann man per Programm die I2C Leitung resetten oder muß ich sie per Relais kurz unterbrechen o.ä. Hat einer Erfahrung damit und kann mir einen Tip geben. Danke Markus
Warum Relais? Nimm dafür mal einen Optokoppler, der hat keine Induktivität wie das Relais und erzeugt deswegen auch keine Störimpulse, die die Funktion der Schaltung stören könnte.
Daß I2C kann durch Störimpulse in einen Zustand kommen, wo der Master kein Stop mehr senden kann. Dann ist der Bus für alle Zeiten tot. Um dann ein Stop zu senden, muß vorher ein SCL-Puls erzeugt werden, damit der blockierende Slave das SDA freigibt. Da der Slave gerade beim Senden des Byte 0x00 sein kann, muß man das bis zu 9-mal probieren. Das muß man allerdings per Bit-Banging und Delays machen, das HW-I2C kann das nicht und muß solange abgeschaltet werden. Peter
Peter Dannegger schrieb: > ... Da der Slave gerade beim > Senden des Byte 0x00 sein kann, muß man das bis zu 9-mal probieren. Danke für den Hinweis. Das könnte mir auch weiterhelfen. Ciao, Yagan
me schrieb: >Warum Relais? Nimm dafür mal einen Optokoppler, der hat keine >Induktivität wie das Relais und erzeugt deswegen auch keine Störimpulse, >die die Funktion der Schaltung stören könnte. ok, werde ich mal versuchen, obwohl ich nicht gedacht hätte, dass es eine Störung verursachen kann, denn die Wicklung liegt ja auf der Seite, die von der Heizung angesteuert wird und hat gar nichts mit der Spannungsversorgung vom µC zu tun. Peter schrieb: >Um dann ein Stop zu senden, muß vorher ein SCL-Puls erzeugt werden, >damit der blockierende Slave das SDA freigibt. Da der Slave gerade beim >Senden des Byte 0x00 sein kann, muß man das bis zu 9-mal probieren. Wie muß den so ein SCL-Puls aussehen (Dauer, Fequenz usw.)? >Das muß man allerdings per Bit-Banging und Delays machen, das HW-I2C >kann das nicht und muß solange abgeschaltet werden. Sorry dass ich Frage. Was ist ein "Bit-Banging"? Und was heißt "per Delay machen"? Und was heißt "HW-I2C"? Heißt das, dass ich die I2C Funktion am Port3, die ich mit "U0CTL |= I2C + SYNC;" aktiviert habe, ausschalten muß? Vielen Dank Markus
@ Markus S. (Gast) >Signal mit dem µC Verarbeiten zu können, schalte ich mit den 24V ein >kleines Printrelais welches mit dem Schließkontakt ein Signal auf einen >Eingangsport gibt. Ein Spannungsteiler wäre deutlich einfacher. Oder für ängstliche Naturen ein Optokoppler. >Zustand nur ändern in dem ich die Spannung von der Steuerung einmal kurz >unterbreche. Danach läuft alles wieder normal. >Die Störung kann eigentlich nur von dem 24V Signal kommen. Ich kann mir >zwar nicht vorstellen warum das so ist, aber sonst ist nichts weiter >angeschlossen. Freilaufdiode am Relais? Siehe Relais mit Logik ansteuern. >Aber wenn das so ist, kann man per Programm die I2C Leitung resetten >oder muß ich sie per Relais kurz unterbrechen o.ä. Hast du eine Relais-Manie? >Wie muß den so ein SCL-Puls aussehen (Dauer, Fequenz usw.)? Wie ein normaler I2C Impuls im Normalbetrieb. Sagen wir 10us Pulsbreite. >Sorry dass ich Frage. Was ist ein "Bit-Banging"? Bitklimpern per CPU. >Und was heißt "per Delay machen"? Einfache Verzögerungsschleifen, nix aufwändiges. >Und was heißt "HW-I2C"? Manche Mikrocontroller haben ein I2C Modul in Hardware drin, das erledigt fast alles allein. >Heißt das, dass ich die I2C Funktion am Port3, die ich mit "U0CTL |= I2C >+ SYNC;" aktiviert habe, ausschalten muß? Ja. MFG Falk
"Was ist ein 'Bit-Banging'" - guckst du hier: http://de.wikipedia.org/wiki/Bit-Banging Falk Brunner schrieb: >>Heißt das, dass ich die I2C Funktion am Port3, die ich mit "U0CTL |= I2C >>+ SYNC;" aktiviert habe, ausschalten muß? > > Ja. Tut das auch nicht weh?
Falk schrieb:
>Hast du eine Relais-Manie?
Nein, aber ich bin gelernter Elektroinstallateur und ich denke in vielen
Dingen noch zu viel als Elektriker und nicht als Elektroniker :o)
@all
Sorry wenn ich hier ein paar dummer Fragen stelle muß, aber ich arbeite
mich noch ein in die Materie und bin mit vielen Begriffen noch nicht
vertraut.
Deshalb, danke an alle. Ihr habt mir sehr weitergelholfen.
Gruß
Markus
Eine Frage habe ich doch noch. ich habe gestern herausgefunden, dass sie Störung an den I2C Bus immer dann auftritt, wenn bei meiner Gasheizung der Brenner anspringt. Und der Zündet mit einem Hochspannungszündfunke. Ein Fühler sitzt direkt unter der Heizung an der Vorlaufleitung (kann auch nicht verlegt werden). Kann die Störung daher kommen? Ich habe auch schon versucht die Versorgungsspannung mit einer Verlängerungsschnur von einer anderen Steckdose abzunehmen. Aber das hat nichts gebracht. Hat jemand einen Tip? Danke Markus
@ Markus S. (Gast) >Kann die Störung daher kommen? Ja. >Hat jemand einen Tip? Leitung geschirmt führen. Direkt am Fühler (LM75?) 100nF zwischen GND und VCC. GGf. Ferritperlen auf die Leitung fädeln. MFG Falk
die 100nF habe ich schon drann und das mit der Abschirmung und den Ferritringen werde ich probieren. Danke Markus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.