PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Probleme bei Modellbahnsteuerung mit Microcontroller



RP6fahrer
22.12.2012, 19:49
Hallo Forum,

Ich habe Anfang November begonnen eine Modellbahnanlage zu bauen. Die Gleise sind bereits verlegt. Ich habe mir vorgenommen die Sensoren (Reedkontakte), Signale und Weichen über zwei Microcontroller zu steuern. Diese arbeiten über den I2C Bus zusammen. Der Master ist ein Atmega 32 und der Slave ein Atmega 16. Ich habe allerdings dabei mehrere Probleme und ich hoffe ihr könnt mir dabei helfen.

1. Ich hab das Problem, dass wenn ich Weichen schalte, diese manchmal eine Störung auf das komplette System geben. Die Weichenantriebe laufen mit 16VAC und werden mittels eines Relais und einem ULN2004 vom Microcontroller aus gesteuert. Das heißt, es gibt eine galvanische Trennung zwischen µC und dem Antrieb und zum anderen laufen diese beiden über verschiedene Trafos, d.h. auch hier ist eine galvanische Trennung vorhanden. Die Frage ist nur, ob man was machen kann, damit nicht das ganze System zusammenbricht/gestört wird?
(Ich würde auch gern eine Zeichnung davon mit hochladen, ich hab nur kein geeignetes Zeichenprogramm. Könnt ihr mir ein kostenloses empfehlen?)

2. Ich verwende den I2C code vom RP6. Der funktioniert einwandfrei. Ich kann vom Master Befehle senden und diese werden vom Slave auch erfolgreich angenommen und verarbeitet. Meine Frage ist nur, ich habe die Reedkontakte am Slave angeschlossen. Jetzt möchte ich aber deren Zustände am Master auslesen. Leider funktioniert das nicht.
Auszug aus dem Slave, je nachdem ob der Sensor 1 oder 0 hat wird ja das entsprechende Bit in diesem Sensoren1.byte auf 1 oder 0 gesetzt.


union {
uint8_t byte;
struct {
uint8_t S1S4:1;
uint8_t S2S3:1;
uint8_t S5S8:1;
uint8_t S6S7:1;
uint8_t S9S0S12:1;
uint8_t S10S11:1;
uint8_t S20:1;
uint8_t S21:1;

};
} Sensoren1;
----
#define I2C_REG_STATUS1 0
#define I2C_REG_STATUS2 1
----
void task_updateRegisters(void)
{
if(!I2CTWI_readBusy)
{
I2CTWI_readRegisters[I2C_REG_STATUS1] = (uint8_t)(Sensoren1.byte);
I2CTWI_readRegisters[I2C_REG_STATUS2] = (uint8_t)(Sensoren2.byte);

}
}
----
void Gleissensor(void)
{

if(adc7 < 10)
{
Sensoren1.S2S3 = 1;
}
else if(adc7 > 300 && adc7 < 700)
{
Sensoren1.S1S4 = 1;
}
----
while(true)
{
Gleissensor();
task_ADC();
//task_Zugbremsung();
task_commandProcessor();
task_updateRegisters();

}

und über diesen will ich es bei Master abrufen und in eine Testausgabe umwandeln


#define Weichencontroller 10 // Adresse des Slave Microcontrollers
----
uint8_t messageBuf[2]; // Buffer for I2C Data
void test(void) //test() wird in der while-Schleife immer wieder abgerufen
{
I2CTWI_transmitByte(Weichencontroller, 0); // Start with register 0...
I2CTWI_readBytes(Weichencontroller,messageBuf, 2); //Sensoren1.byte und Sensoren2.byte auslesen


if(messageBuf[0] == 128) // 128 wäre, wenn Sensoren1.S1S4 betätigt wäre
{
Gleis2links.byte = 255; //steht dafür, dass 8 LEDs der Signale vom Gleis 2 leuchten sollen
}

}

Ich dachte, dass ich damit die Zustände auslesen konnte. Gibt es eine andere / bessere Lösung dafür, oder was mache ich falsch? Ich bin leider ziemlich ratlos. Könnte man die Abfrage auch so machen, dass sie nur durchgeführt wird, wenn es eine Änderung gab?

3. Wäre es sinnvoll, wenn ich den Watchdog aktiviere?

Ich hoffe ihr könnt mir helfen. Ich bin für jede Antwort dankbar. Wenn ihr noch Informationen benötigt, dann sagt es mir bitte. Ein Zeichenprogramm (freeware) wäre auch sehr schön.
Vielen Dank.
Frohe Weihnachten
MfG
Daniel

021aet04
22.12.2012, 20:26
Wie weit ist der Master und der Slave auseinander? Ich habe mir den Code nicht angesehen, könnte mir aber vorstellen das es Einkopplungen in das Sstem gibt (wenn die beiden µC weit auseinander sind).

Watchdog hilft nur wenn das Programm nicht mehr weiter kann, hilft aber nicht bei Störungen. Mit der Ausnahme das der µC wartet z.B. auf eine Antwort vom Slave o.Ä. Das kann man aber auch anders lösen. Bei einer Bahnsteuerung ist es nicht nötig (finde ich) da hier kein Risiko besteht. Anders wäre es z.B. in der Sicherheitstechnik o.Ä.

Welches Programm suchst du? Elektronik CAD, Mechanisches CAD,....? Für einfache Dinge reicht eigentlich Paint.

MfG Hannes

RP6fahrer
22.12.2012, 21:55
Hey Hannes,
Danke für die schnelle Reaktion. Die Controller sind etwa 1m auseinander. Außerdem befindet sich vom Master (ebenfalls 1m entfernt) noch ein PCF8574.
Ich werde mal noch einen Plan von der ungefähren Aufteilung machen.
Ich hatte erst gedacht, weil die AC-Leitung neben den Busleitungen lag, dass es da Fehler hineininduziert. Aber jetzt liegen diese etwa 20cm auseinander, und da sollte dann nichts mehr passieren.

Danke, ich werde mal CAD runterladen und den Stromlaufplan erstellen. Das kann aber leider noch bis nächste Woche dauern.
Vielen Dank und einen Schönen Abend
MfG
Daniel

021aet04
22.12.2012, 22:40
Zeichne einmal die Schaltug auf. Vielleicht sehe ich da etwas. Am Besten die gesamte Schaltung von Master und Slave.

MfG Hannes

Hubert.G
22.12.2012, 23:05
Bei Punkt 1 könnte das Problem bei den Relaiskontakten sein die beim Schalten etwas funken und dadurch die Störungen produzieren.
Also einen Kondensator parallel zu Den Relaiskontakten. Als Faustformel gilt 0,1µ/A Laststrom.

RP6fahrer
23.12.2012, 15:45
Hi,
Danke, ich werde das mit dem Kondensator mal ausprobieren. Auf diese Idee bin ich noch gar nicht gekommen. Wobei, wenn ich mir das richtig überlege, würden dann ja eine spule und ein Kondensator in Reihe liegen, da der C ja parallel über den Relaiskontakt ist? Und Kondensatoren im Wechelstrom verhalten sich wie Kurzschluss. Ich werde es ausprobieren, aber ich könnte mir vorstellen, dass es probleme geben könnte.

So, ich habe mich mal hingesetzt und die Schaltung gemalt. Zusätzlich hab ich eine sehr grobe Skizze der Aufteilung mit dazu gemacht, nur dass man es sich besser vorstellen kann.
Ich hoffe, das hilft euch und ist nicht zu unübersichtlich.

Schönen 4. Advent
MfG
Daniel

PS: Wie kann man größer Anhänge hochladen, z.B. pdf dateien? weil die Qualität der Bilder sehr schlecht ist)

021aet04
23.12.2012, 16:36
Andere Dateien kannst du gleich hochladen wie die Bilder, solange diese das Größenlimit nicht überschreitet.
Ansonsten könntest du noch die Dateien extern hochladen (es gibt kostenlose Filehoster) und diese verlinken.

Auf den Bildern sieht man nicht sehr viel.

Auf den Bildern fällt mir nichts auf. Du könntest noch die Reset Leitung mit einem 100nF entstören.

MfG Hannes

Hubert.G
23.12.2012, 16:42
Ein Kondensator im Wechselstrom verhält sich wie ein Widerstand, abhängig von der Frequenz.
Ein 100n Kondensator hat bei 50Hz etwa 30k.
Was mir an deiner Schaltung aufgefallen ist, AREF nicht mit VCC verbinden und für AVCC einen eigenen Kondesator vorsehen.
Wenn du den ADC nicht benötigst AREF frei lassen, sonst 100n nach GND.

RP6fahrer
23.12.2012, 21:06
Ok, du hast recht mit dem Kondensator. Ich sollte das ja als angehender Elektroniker wissen. Meine Lehrerin hatte nur mal so nen Ausspruch gebracht. Ein Kondensator im Gleichstrom ist wie eine Unterbrechung und im Wechselstrom wie ein Kurzschluss. Dabei ging es aber, glaube ich um Wechselspannungsverstärkung... naja, lassen wir das.
Ok, sobald ich wieder Zuhause bin, werde ich das mit den Kondensatoren ausprobieren.

Den ADC benötige ich bei beiden. Ich möchte für den Schrank, in dem die Trafos und der Master sind, einen Lüfter einbauen, der sich bei einer bestimmten Temperatur einschaltet. Außerdem möchte ich noch weitere Messungen machen. Und bei dem Slave brauche ich es ja, um die Sensoren auszuwerten, und um Platz zu sparen, nehme ich 2 Sensoren pro ADC Kanal.


AREF nicht mit VCC verbinden
Du wirst lachen, dass hatte ich schon, aber damit hat die ADC Messung nicht fehlerfrei funktioniert. Jetzt funktioniert sie. Was mich aber da jetzt gleich interessiert, warum gibt es da verschiedene Anschlussmöglichkeiten. Ich hab mal ein bisschen im Internet gesucht und da gibt es Seiten, wo an AREF ein Kondensator zu GND hängt, und dann noch wo VDD direkt dran ist. Macht das denn einen Unterschied?
Ich hab gelesen, dass wenn ein Kondensator dran ist, dann ist die Referenzspannung etwa 2,56V, oder wenn ich eine andere Spannung (bis VDD des Mikrocontrollers) anlege, dann dient diese als Referenz. Theoretisch, wenn ich richtig lieg, dann macht das ja nur nen Unterschied in der Auswertung.

@Hannes
Kann ich dir die Bilder direkt schicken? Vorausgesetzt du hast dazu lust?

Mir ist grad noch ne Frage in den Sinn gekommen, soll ich eine gemeinsame Resetleitung machen? Also das ich Pin9 des Masters mit Pin9 des Slave verbinde oder ist das sinnlos?

MfG
Daniel

Besserwessi
23.12.2012, 21:51
Bei der Beschaltung des ADC Pins ist der Kondensator nach GND (genauer AGND) die richtige Wahl. Auch hat man die Wahl zwischen ca. 2,5 V von der internen Ref. und AVCC durch eine interne schaltbare Verbindung. Auch wenn man per software AVcc als Ref. wählt wirkt dann der Kondensator als Filter.
Eine Spannung legt man an den Pin eigentlich nur an, wenn es um was anderes als die internen 2,5 V oder AVCC geht.

Kondensatoren an den Relaiskontakten sind schon eine gute Idee, dann aber besser als Snubber, mit einem Widerstand (z.B. 10 Ohm) in Reihe - sonst werden die Relaiskontakte stark belastet, wenn der zufällig gerade geladene Kondensator entladen wird.
Bei den Weichen könnte man ggf. probieren, ob die nicht auch mit Gleichstrom schalten - das könnte die Relais sparen. Wenn es mehr weichen werden kann das einiges einsparen bei der Schaltung.

Für so lange Leitungen beim I2C wären ggf. etwas kleinere Pullup Widerstände sinnvoll.

Der eine sonst nicht benutzte Pin beim ULN200x ist für interne Freilaufdioden. Den Pin könnte man zur Sicherheit auch noch verbinden. Falls es da zu Störungen kommt, ist das oft eine Frage des Layouts, also wir die Leitungen verlaufen, nicht so sehr welche Teile im Plan stehen. Gerade bei den Abblockkondensatoren ist das Wo und der Typ des Kondensators ggf. wichtig.

021aet04
23.12.2012, 21:51
Die Bilder brauchst du nicht senden. Besser wäre diese als PDF o.Ä. hochzuladen, damit diese jeder sieht und man diese in einer angemessenen Auflösnung sieht.

Zum AREF: Wie du den ADC konfigurierst hängt die Beschaltung ab. Wenn du die interne 2,56V oder AVCC (ist meist 5V) Referenz nimmst musst du einen C anschließen. Wenn du den ADC mit einer externen Spannung an AREF konfigurierst musst du hier eine Spannung anlegen. Wenn du die interne 2,56V Referenz auswählst und 5V an AREF anschließt zerstörst du etwas.

Den Reset würde ich nicht verbinden. Ein Grund ist die relativ lange Verbindungsleitung und der 2te Grund ist das es sinnlos ist, da es besser ist die µC einzeln resetten zu können.

MfG Hannes

RP6fahrer
24.12.2012, 09:45
Guten Morgen und fröhliche Weihnachten alle zusammen.

Da ich heute früh ab etwa 5.45 nicht mehr schlafen konnte, habe ich doch gleich mal eure Vorschläge in die Tat umgesetzt. Dabei gibt es eine gute und eine schlechte Nachricht. Zuerst die Gute. Ich habe jetzt beim Slave den Eingang AREF mit einem Kondensator(100n) zu AGND versehen, außerdem hab ich zwischen AGND und ACC noch einen Kondensator (100n) gelötet. Übrigens alle Entstörkondensatoren sind 100nF groß. Funktionstest war erfolgreich. Jetzt funktioniert die Auswertung.

Jetzt die schlechte Nachricht. Ich habe bei einem Relais die Kondensatoren (100n) über den Wechslerkontakt gelötet, also einen für den Schließer und einen für den Öffner. Nach dem Einschalten haben sich beide Controller normal gestartet. Ich muss dazu sagen, dass ich noch ein Display über einen PCF8574 dran habe, welches nur vom Master gesteuert wird. Es gibt mir den Status wieder. Auch das hat sich erfolgreich initialisiert. So ich habe das Relais betätigen lassen.
(Das läuft bei mir über eine IR - Fernbedienung, deren Empfänger am Mikrocontroller hängt und den ich nicht eingezeichnet hab, weil das einwandfrei funktioniert. Das habe ich schon zur Perfektion gebracht, dort ist kein Fehler, also habe ich es auch weggelassen.)
Das Relais hat angezogen --> Weiche ist umgesprungen --> kurz gewartet (5s) --> nächster Befehl --> Relais ist abgefallen --> Weiche zurückgesprungen --> Störung auf Bus --> Seitdem funktiniert der Master nicht mehr. Der Slave ist nach wie vor funktionsfähig. Das merkwürdige ist nur, dass ich auf die Fuses des Masters zugreifen kann und diese auch ändern kann. Neue Programme lassen sich auch einspielen, aber er führt diese nicht mehr aus. Ist er jetzt kaputt, oder kann man einen Totalreset machen und dann geht es wieder?

Ich bin euch dankbar über alle Hilfe, die ihr mir gebt.
Ich wünsche euch, falls wir uns heute nicht mehr schreiben, ein schönes und gesegnetes Weihnachtsfest.
MfG
Daniel

PS: Hier nochmal die Schaltpläne als pdf.

Hubert.G
24.12.2012, 10:10
Spannung am Reset-Pin gemessen?
100n über die Kontakte ist vielleicht etwas viel, oder ziehen die Weichen so viel Strom. Ich kann mit aber nicht vorstellen das dadurch das Problem entsteht.

RP6fahrer
24.12.2012, 10:54
Die Spannung am Reset Pin ist gemessen 5,02V (über pull-up)

Naja, ich sag mal so, der Weichenantrieb zieht 0,7A naja, und die Kontakte halten 3A aus. Ich denke auch nicht, dass dadurch das Problem entstanden ist. Vielleicht ist auch nicht der Bus das Problem... Ich überlege grad, wenn diese Störung eintritt/eingetreten ist, haben alle Signalfarben von allen Signalen geleuchtet. Daraus könnte man ja auch schließen, dass die Spannungsversorgung (5V), an denen auch die PCF8574 hängen zusammengebrochen ist und wieder kam, allerdings ist dann merkwürdig, dass das Display nach wie vor ging (hängt ja auch am Bus und an den 5V). Aber dann konnte ich wieder eine Signalfarbe anschalten und alles ging. Aber manchmal kam es auch vor, dass gar nichts mehr ging, also wie wenn alles eingefroren ist, was heißt, dass sich der Master aufgehangen hat.
Ich blick da einfach nicht durch, was das hauptproblem ist. Aber wie gesagt, jetzt geht der Master ja gar nicht mehr.

021aet04
24.12.2012, 12:19
Verwendest du das Eprom? Könnte es sein das da falsche Daten stehen und somit das Programm abstürzt? Versuche einmal den gesamten µC zu löschen (Flash und Eprom). Wenn der Reset nicht funktionieren würde könntest du auch keine Programme aufspielen/auslesen oder sonst irgendwie auf den µC zugreifen können. Das kannst du versuchen indem du den Reset abklemmst und auf den µC zugreifen probierst.

MfG Hannes

RP6fahrer
25.12.2012, 18:51
Hey,
schöne Weihnachtsfeiertage wünsche ich euch.

@Hannes
Nein, ich verwende nicht das Eprom. Das mit dem löschen (verify) hab ich gemacht und anschließend das Programm neu draufgespielt. Aber nichts geht. Ich weiß nicht, woran das liegt.

Ich habe allerdings jetzt etwas verändert. Ich habe alle Sensoren jetzt an den ADC Kanälen am Master hängen, also genauso, wie sie am Slave waren. Dadurch löst sich jetzt das Problem mit der I2C Kommunikation, was ich anfangs mit erfragt hatte. Leider gibt es aber immernoch das Problem mit der Störung. Das habe ich jetzt aber soweit umgangen, dass ich immer Fahrstraßen schalte. Das heißt, es werden mit einem Befehl erst die entsprechenden Weichen und anschließend die Signale gestellt. Dadurch fällt das Problem nicht mehr so auf. Es ist natürlich nicht weg und wenn jemand noch eine Idee hat, wie man dies beseitigen kann, dann würde ich mich sehr darüber freuen. Was mir dazu noch als Frage einfällt: Soll ich von SCL und SDA einen Kondensator auf GND verschalten? Könnte das helfen?

Schönen Abend und nen schöneren 2. Weihnachtsfeiertag.
Vielen Dank
Daniel

- - - Aktualisiert - - -

Noch nen Zusatz:
Ich hab den Atmega32 (Master) wieder zum laufen gebracht. Ich habe einfach mal ein Programm eingespielt, bei dem alle Ausgänge blinken sollen. Dann bin ich bei den Fuses reingegangen, hab dort mal auf internal RC Oscillator auf 8 MHz gemacht und anschließend die Fuses geschrieben. Schon hat es losgeblinkt. Dann hab ich es wieder zurück auf External Crystal or ceramic resonator (8 - 16 MHz) gestellt, geschrieben und es geht. Er is also nicht kaputt. Aber Frage: was ist das für eine Art von Fehler?

Hubert.G
25.12.2012, 19:47
Hast du in den Fuses CKOPT gesetzt? sollte vielleicht sein, denn vielleicht schwingt dein Quarz nicht optimal.
Du könntest auch noch die PullUp auf SCL und SDA verkleinern, 2k2 sollte kein Problem sein. Deine Leitungen sind doch recht lang.

Schöne Weihnachtsfeiertage auch noch.

Besserwessi
25.12.2012, 21:53
Der I2C Bus ist an sich nur für kurze Verbindungen gedacht. Da sind dann eingekoppelte Störungen ggf. ein Problem - dafür sind die Eingänge des µC einfach nicht gemacht mit größeren Störungen klar zu kommen. Kleinere Pullup Widerstände könnten helfen, das es zu weniger Störungen (falsche Signale) kommt. Gegen heftige Störungen, die ggf. auch den µC zerstören könnten, könnten zusätzliche Schottkydioden von den SCL und SDA Leitungen nach GND und VCC und Serienwiderstände von vielleicht 50-100 Ohm etwas helfen. Eine mögliche, ggf. zerstörerische Folge ein helftigen Störung wäre ein Latchup. Um da die Folgen in Grenzen zu halten wäre eine Begrenzung des Stromes in der Versorgung durch Widerstände (z.B. 20 Ohm) möglich, wenn der µC keine nennenswerten Lasten Treiben muss.

Das andere ist dann eine Frage wie die Leitungen liegen, und auch wie die Versorgung der Teile genau aussieht - ist das ein Netzteil für Master, Slave und die Porterweiterung ?

Eine logische Lösung wäre ein Umstieg auf ein anderes Interface (z.B. Rs485, Rs232) für die längeren Strecken (>30 cm) und ggf. Teile zusammen zu fassen und längere Kabel zu den Weichen in Kauf zu nehmen.

021aet04
25.12.2012, 23:32
Verify ist nicht löschen sondern überprüfen (vergleicht das Programm am µC mit dem Programm am Rechner).

Kondensator am I2C geht in die falsche Richtung. Die Kapazität sollte so klein als möglich sein. Der Bus unterstütz auch nur eine max. Leitungskapazität. Bist du darüber funktioniert der Bus nicht mehr (richtig).

Ansonsten wirklich auf einen anderen Bus umsteigen oder einen I2C Busextender verwenden.


MfG Hannes

RP6fahrer
26.12.2012, 19:39
hey,
Danke für die vielen Infos.
@ Hubert
CKOPT ist gesetzt. Es wäre schon möglich, dass mein Quarz nicht richtig schwingt. Naja, jetzt geht es wieder.
Das mit den 2K2 Widerständen werde ich ausprobieren, leider schaff ich das erst morgen.

@Besserwessi
Was ist ein Latchup?
Ja, es ist ein Netzteil für die 5V(Master, Slave, Portexpander). Außerdem ein Netzteil für 15V(für die Signale) und dann noch 24V für die Relais, um die Weichen zu schalten. Die Weichenantriebe hängen am Fahrregeler der Loks mit dran, weil da gibt es einen AC Anschluss. Es ist eine 3 adrige Leitung für 15V, 24V und 0V, sowie extra Ader für 5V. Dann mit etwa 1-2cm Abstand daneben liegen die Busleitungen.
An ein anderes Interface habe ich auch schon gedacht. Aber davon habe ich absolut keine Ahnung. Naja und I2C fange ich langsam an zu beherrschen. Außerdem habe ich gelesen,dass der I2C Bus locker bis 5m funktioniert.

@Hannes
Dann habe ich wohl das falsche gewählt. Ich kann den Mikrocontroller nur write, read und verify. Da gibt es keine Löschwahl. Ich verwende übrigens Burn o Mat.
okay, ich lasse den Kondensator.

Schönen zweiten Weihnachtsfeiertag
Daniel

Besserwessi
26.12.2012, 20:01
Wenn bei einem CMOS IC an einem Pin der nicht extra dafür ausgelegt ist (RESET Pin beim AVR) die Spannung deutlich größer oder kleiner wird als die Versorgungsspannung fließt ggf. zu viel Strom durch die "Schutzdioden" im IC. Das kann dann einen Latchup auslösen: Im IC ist unabsichtlich ein Thyristor zwischen VCC und GND, der über den Strom durch die Shutzdioden gezündet werden kann. Das gibt dann einen Kräftigen Kurzschluss an der Versorgungspannung und wenn die viel Strom liefern kann, reicht das um das IC zu beschädigen oder ggf. zu zerstören. Das kann so weit gehen das das IC regelrecht explodiert oder den Deckel absprengt. Bei einem schwachen Netzteil kann das IC den Latchup überstehen, nur der µC wird dann abstürzen.

Bei der Versorgung sollten die Leitungen für GND, 5 V und I2C dicht zusammen sein. So können da weniger Störungen reinkommen, und die Induktivität bleibt klein. Die 15 V für die Signale sind wohl eher unkritisch - die sollten kaum Stören und auch nicht so empfindlich sein. Es sollten dann auch auf jeder Platine genügend Kondensatoren bei den 5 V dran sein, so dass die Ströme lokal bereitgestellt werden können. Die 24 V für die Relais sollten getrennt zu der Platine für die Weichen kommen und da erst mit GND verbunden werden.

Die Wechselspannung für die Weichen wären besser etwas weiter (> 5 cm) weg von den anderen Leitungen.

I2C bis 5 m kann noch gehen, aber nur wenn da keine größeren Störungen rein kommen, aber sicher und einfach ist das dann nicht mehr.

021aet04
27.12.2012, 08:36
Habe gerade nach dem Programm Burnomat gesucht und habe auch nichts gefunden das du den µC löschen kannst (nur den Punkt "lösche Flash vor dem beschreiben"). Beim AVR Studio gibt es einen extrigen Button "Erase Device".

MfG Hannes

RP6fahrer
27.12.2012, 10:44
Guten Morgen,
Danke für die Erklärung Latchup. Das Netzteil für die 5V liefert bei 9VAC maximal 400mA.
Die Leitung für die Wechselspannung liegt bereits separat.

Ich habe jetzt noch auf der Platine vom Portexpander einen 100nF Kondensator zwischen VDD und GND gemacht. Da war noch keiner. Seitdem leuchten nicht mehr alle Signalfarben auf, wenn die Störung auf den Bus schlägt. Außerdem habe ich an dem PCF8574, an dem das Display hängt, auch noch einen 100nF Kondensator über der versorgungsspannung gelötet.
Die Pull up Widerstände von 4K7 habe ich auf 2K2 heruntergesetzt.

Die Störung bemerke ich daran, dass das Display nicht mehr ordentlich funktioniert. Statt dem Programmierten Text zeichnet es nur noch wild irgendwelche buchstaben, symbole usw. Das geht solange, bis sich der Master festfährt. Ein Reset am Master funktioniert komischer Weise nicht. Ich muss dann immer die 5V abschalten und dann wieder anschalten. Und schon geht alles wieder.
Was ich herausgefunden hab, ist, dass die Störung erst nach 5-7 mal Weichenschalten auftritt, unabhängig in welcher Zeit ich die Weichen schalte. Könnte es dann sein, dass ich nen Programmfehler habe, welcher diese Störungen hervorruft?

Das einzigste was Fehlerfrei funktioniert, sind nach wie vor die Signalfarben. Da kann ich schalten und walten wie ich will.

Ich bin sehr dankbar über alle eure Hilfe.
Mit freundlichen Grüßen
Daniel

Hubert.G
27.12.2012, 11:02
Nach deiner Beschreibung sieht es schon so aus als ob sich der I2C-Bus festfährt, es kann auch der PCF hängen bleiben.
Warum der Reset nicht funktioniert solltest du schon prüfen, eventuell noch 100n von Reset nach GND.
Einen Programmfehler kann man aber nie ganz ausschließen.

RP6fahrer
27.12.2012, 14:49
Hallo,
Der I2C funktioniert, nur funkioniert der Master nicht mehr.
Ich habe jetzt einige Veränderungen vorgenommen. Die Taktfrequenz ist 60kHz statt 100Khz. Nach jedem Weichen-setz-Befehl habe ich ein Pause von 100ms programmiert. Jetzt kann ich die Weichen öfters betätigen, allerdings ist nach einiger Zeit wieder das Problem, dass sich der Master festfährt (Display schreibt wieder komische Zeichen bis hin zu gar nichts funktioniert mehr). Ich habe dann mal den Reset Pin ausgemessen. Da lagen 2,0V an. Das heißt doch aber, dass der Controller intern irgendwas verändert hat, weil außen ja nur der Pull-up Widerstand liegt und ein Taster zu GND (parallel zum Taster ist ein 47p Kondensator).

Grüße
Daniel

Hubert.G
27.12.2012, 15:03
Am Reset sollte aber annähernd 5V liegen, wenn nicht, hast du da ein Problem.
Nimm mal den Kontroller heraus und miss dann noch mal.

RP6fahrer
27.12.2012, 17:09
Das habe ich auch gedacht. Im Normalen Betrieb liegen da auch etwa 4,95V an. Es fällt ja nur auf ca. 2V wenn dieser besagte Fehler auftritt.

RP6fahrer
20.01.2013, 15:11
Hi,
Ein gesundes neues Jahr euch allen. So ich habe jetzt erst wieder mal Zeit gehabt, meinen Fehlern weiter auf die Spur zu gehen. Ich habe jetzt Hausbeleuchtungen angebracht und angeschlossen. Dabei, und ich weiß noch nicht wie, ist es zu einem Kurzschluss zwischen den +24V und den 16~ gekommen, auf einer Platine, die gar nichts mit der Beleuchtung zu tun hat. Ihr müsst wissen, dass die Relais, die die Weichen schalten auf einer großen Platine liegen, die nicht direkt an der Slave platine hängen, sondern nur über Steckverbinder. Das Problem ist nur, dass ich einige Leitungen fest verlegt habe davon, weil ich keine Stecker mehr hatte, und kann somit diese Platine nicht ausbauen und den Fehler suchen. Deshalb konnte ich jetzt auch nicht mehr die Weichen testen.
Ich informiere euch, wenn ich mehr weiß.
Vielen Dank nochmal für die Informationen, die ihr mir in der vergangenen Zeit gegeben habt.

MfG
Daniel

RP6fahrer
26.01.2013, 14:47
So,
nun hab ich anscheinend das Problem gelöst. Der Kurzschluss ist entstanden, weil ein Drahtende unterhalb der Platine durch drücken zwei Leiterbahnen gebrückt hat. Dadurch ist der Kurzschluss entstanden. Diesen habe ich nun beseitigt. Des weiteren habe ich vor den PCFs (für die Signalsteuerung) 2 Kondensatoren verschalten. 100nF zwischen 5V und 0V & 1000µF zwischen +15V und 0V. Jetzt habe ich keine Störungen mehr auf dem Bus. Ich kann díe Weichen schalten, wie ich lustig bin... Keine Störungen mehr.

Nochmals danke für eure Hilfe und vllt. hat jemand ein ähnliches Problem und ich konnte ihm irgendwie helfen.

MfG
Daniel

021aet04
26.01.2013, 18:07
Sehr schön wenn es jetzt funktioniert. Viel Erfolg weiterhin.

MfG Hannes