Hallo ich habe vor einer Weile eine Leiterplatte von einer Bosch Comfortlift Garagentorsteuerung erhalten um diese zu reparieren. Da durch Schwitzwasser der Garagendecke die Leiterplatte stark geschädigt wurde bestand keine Chance auf Reparatur. Daher habe ich eine neue Leiterplatte erstellt, die mit einem PIC16 arbeitet und, bis auf das Funkmodul, die gleichen Funktionen liefern soll. Nach einigen Tests stellte sich heraus, dass beim Debuggen mit dem PicKit3 das Programm stehen bleibt. Dabei scheint kein Reset ausgeführt zu werden sondern das Programm bleibt stehen als würde man den Pause-Knopf in der IDE drücken. Das geschieht immer dann wenn das Relais für die Beleuchtung schaltet. Dabei führt nicht jedes Schalten zum Abbruch, sondern manchmal auch erst das 7., 10. oder auch schon 1. und zwar häufiger das Ab- als das Anschalten. Daher vermute ich, dass es irgendwo Rückkopplungen auf die Spannungsversorgung gibt. Habe ich grundlegende Fehler in der Schaltung? Wo kann oder sollte die Entstörung verbessert werden? In der Platine sind noch einige Sachen etwas wirr, da ich nach der Herstellung der Leiterplatte noch etwas ändern musste. Ich hoffe ihr könnt mir weiterhelfen. Silvio
Hallo hat denn keiner eine Idee oder ist der Beitrag nur irgenwie untergegangen? Silvio
Silvio G. schrieb: > Nach einigen Tests > stellte sich heraus, dass beim Debuggen mit dem PicKit3 das Programm > stehen bleibt. Dabei scheint kein Reset ausgeführt zu werden sondern das > Programm bleibt stehen als würde man den Pause-Knopf in der IDE drücken. > Das geschieht immer dann wenn das Relais für die Beleuchtung schaltet. > Dabei führt nicht jedes Schalten zum Abbruch, sondern manchmal auch > erst das 7., 10. oder auch schon 1. und zwar häufiger das Ab- als das > Anschalten. Kümmere dich mal um das Abblocken von Versorgungsspannung und Reset. MCLR könnte einen Abblockkondensator vertragen. Eine Massefläche, die den Namen verdient, hätte auch nicht geschadet. Ich bin aber kein PIC-Experte (das letzte Mal ist mindestens 15 Jahre her). Max
Hallo Massefläche ist natürlich vorhanden, hatte ich nur für das nachträgliche hinzufügen der geänderten Schaltungsteile entfernt und vergessen vor dem Posten wieder einzufügen. Gibt auch keine Leiterbahnen auf der oberen Seite (blau), da sind die Brücken bzw. Widerstände auf der Unterseite platziert. Ich habe inzwischen schon mal die Leiterplatte an einem Labornetzteil getestet. Nur das Schalten des Relais ohne Last läuft sowohl im Debugger als auch im richtigen Betrieb. Was sollte noch zusätzlich in die Spannungsversorgung um die Bedingungen zu verbessern? Kondensator an Reset kann ich ja mal hinzufügen. Silvio
Hallo Sich alles anzuschauen ist natürlich Zeitaufwänding. Generell würde ich die Relais für Motoren über Optokoppler (TLP621) ansteuern. Spannungversorgung über Stromkompensierende Drossel hilft auch gaz gut. Auch drauf achten das die Relais den DC Strom aushält. An µP 10 µ Tantal Kondensatoren An IC 100nf Blockkondensatoren. usw. Hatte auch schon das auf dem Tisch alles gut ging,aber wenn die Motoren belastet werden die Störungen zu hoch waren. Dann könnte man auch noch Ferrit Ringe nehmen und die Mororzuleitungen einwickeln. Viel Spass Juppo
Juppo Nini schrieb: > Generell würde ich die Relais für Motoren über Optokoppler (TLP621) > ansteuern. Wozu? die Störung kommt über die gemeinsame Masseleitung. Ich würde mir Gedanken um eine anständige Masseverdrahtung machen. (Sternpunkte für Leistungsmasse, I/O + Spannungsreglermasse und Prozessormasse). Der Reset-Eingang gehört zusätzlich mit 1-10nF abgeblockt. D16 ist eher hinderlich. R11 würde ich ca 10-22K dimensionieren. Alle Stecker/Klemmen gehören auf eine Seite der Leiterplatte (I/O-Masse) damit die Störungen nicht durch den Prozessorbereich laufen. Ich würde zusätzlich noch Filter-Cs für die Komparator-Eingänge und die Schaltereingänge am Prozessor spendieren. Die so genannte "Massefläche" bringt außer einer höheren Stromtragfähigkeit keine EMV-Verbesserung. (Dazu müßte sie mit der Bestückungsseite vollflächig durchkontaktiert werden). Gruß Anja
Hallo D16 war gedacht um die Schaltung vom PicKit zu trennen bei der Programmierung ohne Spannungsversorgung. Aber bei der Größe von R11 geht da ja sowieso nicht viel drüber. Große Ströme auf der Masse gibt es nur zwischen D4, D5, C7 und R4. Die liegen mit dem gemeinsamen Masse-Anschlüssen alle am untern Rand der Leiterplatte. Die Positionen der Steckverbinder / Klemmen sind von der alten Leiterplatte übernommen und nicht (K6, K7, K8) bzw. nur sehr wenig (K2, K3, K4,K5, K9) veränderbar. Bauteile an Reset, Komparator-In und µC-In werde ich nachrüsten. Leiterbahnen (abgesehen von den 7 Brücken) auf der Bestückungsseite gibt es nicht. Daher kann da auch keine Massefläche durchkontaktiert werden. Silvio
Du hast die Spannung für die Relais mit D2 entkoppelt, das gleiche solltest du vor dem 7805 auch noch mal machen, und einen Elko dazu. Wenn du die Möglichkeit hast die Schaltung von einer Batterie aus zu versorgen, würde ich das mal probieren. Dann siehst du ob die Störung über die Stromversorgung kommt, oder ob es Einstreuungen sind.
Silvio G. schrieb: > Ich habe inzwischen schon mal die Leiterplatte an einem Labornetzteil > getestet. Nur das Schalten des Relais ohne Last läuft sowohl im Debugger > als auch im richtigen Betrieb. Das schreit aber dann schon fast förmlich erst mal nach einem Snubber-Glied. Schaltet das Relais entsteht beim Lösen der Relais-Kontakte im Lastkreis an den Kontakten ein kleiner Lichtbogen, der dir mit den dabei entstehenden elektromagnetischen Wellen auf die Spannungsversorgung deines µC zurückwirkt und ihn zum Absturz bringt. (Immerhin hat Marconi seine elektromagnetischen Wellen genau so hergestellt, mit denen er dann erstmalig über den Atlantik gefunkt hat. Bei entsprechend hohen Strömen einen Abrissfunken erzeugen, der kräftige EM-Wellen erzeugt). Du brauchst ein Funken-Löschglied am Relais, vulgo Snubber. Keine Last - kein Strom im geschalteten Stromkreis Kein Strom - kein Funke kein Funke - keine EM-Störungen keine EM-Störungen - kein Absturz
Hi, wie schaut es mit der Wärme am 7805 bei 23V aus? Gruß Sven
Hi, da ich mich mit dem PIC und Deiner Buildumgebung nicht auskenne: wie sind die Interruptserviceroutinen für die nicht maskierbaren ISRs implementiert? Gibt es z.B. einen Interrupt, der bei internen Fehlern (Adress-, Datenbus o.ä.), SW-Resets, Opcode-Fail, Unterspannung usw. ausgelöst wird? Wo würde Dein Programm in diesen Fällen weitermachen? Tritt der "Pause"-Effekt beim Einschalten des Lichts direkt oder mit einer Verzögerung auf? Tritt der "Pause"-Effekt auch dann auf, wenn Du in der Garage a) die Lichtlast abklemmst, den Motor angeschlossen lässt; b) die Lichtlast angeschlossen läst und den Motor abklemmst? Kannst Du ausschliessen, dass es im Einschaltmoment nicht zu einem Einbruch der Versorgungsspannungen kommt?
@ Hubert G. Du meinst bestimmt D12 nach der Sicherung. Also nach den Relais noch eine Diode vor dem 7805? @ Sven K. Nach 20 min. mit eingeschalteter LED und ständig schaltendem Licht-Relais wird der 7805 ca. 15° wärmer als die Umgebung. Ich kann ihn noch problemlos anfassen. Im späteren Betrieb ist die LED auch eigentlich aus (außer als Fehlermeldung, dann blinkend mit max. 40% On-Time). Sollte also passen. @ Oliver Unterspannung macht über Brown Out (bei 2,5V) einen Reset und startet das Programm neu. Stack over- oder underflow macht auch einen Reset. Watchdog ist disabled. Interrup bei internen Fehlern hab ich im Datenblatt nichts zu gefunden. Da aber nach einem solchen Stop die Möglichkeit besteht schrittweise weiter das Programmm zu debuggen und auch in den einzelnen Speicherstellen Werte stehen die zu dieser Programmposition passen schließe ich eigentlich aus dass ein Reset stattgefunden hat. Ich denke er geht einfach nur in den Stop, so als wenn man in der IDE den Pause-Knopf drückt. Fall a) Licht ab, Motor dran habe ich nicht probiert, wird nachgeholt. Fall b) Licht dran, Motor ab war ja mein Testaufbau mit dem ich dieses Verhalten erst richtig erkannt habe. Im Programmablauf kamen noch einige Fehler vor, die oft auch ein Abschalten des Motors verhinderten und ich musste daher den Stecker ziehen um nicht jedes mal die Sicherung wechseln zu müssen. Dann steht das Programm ja sowieso. Ich denke am Einbruch der Versorgung infolge zu hoher Last liegt es nicht, da das Programm häufiger beim Ausschalten (so ca. 70%) als beim Einschalten des Relais stehen bleibt. @ Karl Heinz Ich werd mich da mal schlau machen. Silvio
Silvio G. schrieb: > Du meinst bestimmt D12 nach der Sicherung. Also nach den Relais noch > eine Diode vor dem 7805? Ja, das meinte ich und noch einen Elko dazu. C6 sollte doch der Snubberkondensator sein, ob die Dimensionierung stimmt? Ein 220 Ohm Widerstand in Serie? Ob bei dieser Größe schon notwendig, kann ich nicht sagen.
Hallo Silvio, welche Leistung hat die Lichtlast und um welchen Typ handelt es sich: Leuchtstofflampe oder Glühlampe (induktive bzw. ohmsche Last)? Hattest Du schon geschrieben, wie Du die Steuerung aus dem Fehlerzustand bringst? Geht das nur über einen Reset (über den Resetpin oder über das Ziehen der Versorgungspannung) oder fängt sich Dein Programm von alleine wieder? Ansonsten würde ich den Code dahingehend instrumentieren, dass die LED einmal exklusiv aus der Mainloop und in einem zweiten Schritt exklusiv aus der ISR getoggelt wird - evtl. gibt Dir das Hinweise darüber, wo sich Dein Programm im Fehlerzustand befindet. Mir ist aufgefallen, dass Du anscheinend kein Freund von Funktionsprototypen bist (was ja vom Compiler auch toleriert wird) und dass Du mit einigen Funktionsparametern Berechnungen bzw. Bitoperationen ausführst. Könnte es evtl. sein, dass Du bei der Implementierung von anderen Datentypen ausgegangen bist, als sie letztendlich tastächlich vom Compiler definiert wurden? Versuch's doch mal mit Funktionsprototypen für alle Deine Funktionen und aktivier' den Prototypencheck in den Compileroptionen. Gerade bei Systemen mit "Sicherheitsaspekten" (hier: automatisches Schliessen des Tores) sollte eigentlich immer ein Watchdog die korrekte Funktion der Controllers absichern. Hast Du ihn aus einen bestimmten Grund deaktiviert und verändert sich das Fehlerbild, wenn Du ihn aktivierst? Das ein Programm auf einem funktionierenden Controller (und funktionierendem Quarz!) ohne angeschlossenen Debugger 'einfach so' anhält, habe ich bisher nicht erlebt. Gruß, Oliver
Hi, ich bin mir nicht sicher, ob es ein Problem darstellt, aber ist die Anbindung von D11 / des Spannungsreglers an +24V wirklich optimal? Wäre die Variante im Anhang nicht besser (dort wird die Induktionsspannung im Abschaltaugenblick direkt über D11 kurzgeschlossen, ohne dass der Spannungsregler davon betroffen wäre). Gruß, Oliver
Hallo C6 war in der originalen Steuerung auch so drin ohne zus. Widerstand. Da hängt eine Glühlampe dran, ich denke mal 40 oder max. 60 Watt. Leitung zwischen Lampe und Klemme max. 15 cm. @ Oliver Beim Debuggen reicht es in der IDE einfach wieder auf Start oder Einzelschritt zu drücken und das Programm scheint normal im Programm weiter zu laufen. Watchdog hab ich mir erstmal noch keine Gedanken drüber gemacht, da er ja den Test und die Fehlersuche eher behindert als zu helfen. In der fertigen Anwendung ist die Benutzung natürlich schon sinnvoll. Silvio
@ Oliver werd ich beim Einbau der von Hubert G. vorgeschlagenen zusätzlichen Diode berücksichtigen. Silvio
Oliver schrieb: > Wäre die Variante im Anhang nicht besser (dort wird die > Induktionsspannung im Abschaltaugenblick direkt über D11 > kurzgeschlossen, ohne dass der Spannungsregler davon betroffen wäre). Klar, die Diode ist zu weit weg vom Relais. Aber ich denke das allein wird das Problem nicht lösen. Gruß Anja
Hallo könnte die Einkopplung auch direkt in die Verbindung vom µC zum PicKit stattfinden? Die Leiterplatte hängt kopfüber im Gehäuse und der PicKit hängt ca. 10 bis 15 cm darunter. Verbunden sind beide über Flachband 10 adrig mit 1 = Vdd 2 = Gnd 3 = Vpp 4 = Gnd 5 = PGC 6 = Gnd 7 = PGD 8 = Gnd 9 = Gnd 10 = Gnd Silvio
Hi, hängt das PicKit tatsächlich nur an dieser Flachbandleitung in der Luft oder hast Du die Verbindung über eine zusätzliche Zugentlastung entlastet? Falls nicht, könnte ich mir schon vorstellen, dass das PicKit durch eine mechanische Erschütterung (ausgelöst durch das Schalten des Relais) aufgrund von Kontaktproblemen kurzzeitig die Verbindung zum uC verlieren könnte. Dann sollte dies aber auch beim Schalten der anderen Relais auftreten. Wie sieht es denn ohne PicKit aus - gibt es dann irgendwelche auffälligen Problem beim Ausschalten des Lichts?
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.