Hallo zusammen,
die bisherige Schaltung mit dem PIC18F4620 im DIP40 Gehäuse an 5 V
Versorgung lief problemlos.
Habe die Schaltung auf SMD umgestellt:
PIC18F44K22 im TQFP 44 Gehäuse an 5 V.
1x 100 nF Abblockkondensator.
MCLRE Disabled.
Der Prozessor startet zeitweise (ca. jedes 3. mal) immer neu (Reset),
wenn ein Relais in der Nähe über einen ULN2803 (mit interner
Freilaufdiode)
eingeschaltet wird.
Als Anlage das Layout.
Was kann den Neustart der MCU hervorrufen ?
- Software: ausgeschlossen, habe zum Test mal nur eine Warteschleife
programmiert.
- MCLR Pin: MCLR ist disabled. über 1 K auf Masse gezogen. Auch direkte
Verbindung mit Masse hat keine Verbesserung gebracht.
- Versorgungsspannung: Störungen in der Versorgung ? Ist der
Abblockkondensator C1A über 2 Vias zu weit weg ?
- ICSP ist disabled.
Hat jemand ein Tip ?
>- Versorgungsspannung: Störungen in der Versorgung ? Ist der>Abblockkondensator C1A über 2 Vias zu weit weg ?
Ja. Zwar nicht optisch zu weit weg, aber strommäßig. Überlege mal, wo
die Masseströme langfließen müssen - geht querfeldein über die Platine.
Möglicherweise dort lang, wo auch die Lastströme lang gehen, was eine
schlechte idee wäre.
Ich hätte an deiner Stelle für jeden Versorgungspin einen Kondensator
genommen. Die beiden Versorgungspins liegen außerdem direkt neben einem
Massepin, so dass du da die Kondensatoren direkt daneben platzieren
kannst.
Für die anderen beiden ICs würde jeweils auch noch einen Kondensator
vorsehen und ggf. noch einen größeren Kondensator (>10uF) auf der
Platine platzieren, der ruhig weiter weg liegen kann.
Auf dem Top Layer(der rote Layer) ist außerdem noch genügend Platz, so
dass du theoretisch die Massefläche auf der Unterseite noch größer
machen könntest, indem du mehr Leiterbahnen auf Top routest.
Wo ist denn das Relais? Könnte es vielleicht auch sein, dass das
Magnetfeld des Relais eine Spannung auf einer Leitung induziert?
>>>RCON Register abfragen
Was ist das denn für ein Register ? Freie Pins habe ich nicht mehr,
aber SPI ist zum Hauptprozesor angeschlossen.
>>>MCLR gegen GND? Sicher?
Ja. die MCLR Funktion ist in den Config Bits deaktiviert.
Mit diesm Pin auf Masse möchte ich verhindern, dass er bei hohen
Störspannungsimpulsen in den Programmiermodus wechselt.
>>>LVP disabled? (Low Voltage Programm)
Ja, das ist doch die Funktion, wenn der besagte Pin auf high liegt, dann
schaltet der Chip in den Programmiermodus.
Habe mittlerweile mal die Abblockkondensatoren ganz entfernt, siehe da,
es läuft bei 2 von 3 MCUs....seltsam.
Werde mal Abblockkondensatoren auch an den ULN2803s dranhängen...
Danke auch für die restlichen Hinweise...
Gruß Dirk
> Was ist das denn für ein Register?
Da kannst du abfragen, ob es ein Brownout war.
> ....seltsam
Anscheinend waren es keine Abblockkondensatoren sondern
Antennenschwingkreis-Kondensatoren :-)
Da bekommst du von 3 Fachleuten 4 verschiedene Antworten. Dazu kommt
noch - man kann es nicht so einfach messen, der Tastkopf des
Oszilloskopes verändert die Messung.
Musst entweder Tutorials zu Masseführung und Entkopplung durcharbeiten.
Oder ad hock Masse sternförmig legen, Z5U direkt zwischen die Pins legen
und hoffen, dass es gut genug ist.
DirkF schrieb:> Ist der> Abblockkondensator C1A über 2 Vias zu weit weg ?
Nö, aber C1A ist nirgends an den GND des IC1 angeschlossen.
Mit GND sollte man nicht von Köln nach Bonn über Peking fahren, sondern
direkt.
DirkF schrieb:>>>>MCLR gegen GND? Sicher?> Ja. die MCLR Funktion ist in den Config Bits deaktiviert.> Mit diesm Pin auf Masse möchte ich verhindern, dass er bei hohen> Störspannungsimpulsen in den Programmiermodus wechselt.
Wie soll das funktionieren?
Wo sollen diese 7,5-9V Spannungsspitzen (mit korrekten Timings) denn
herkommen? Von deinem Programmer?
Die einzige Verbindung bei dir ist doch zur Masse...
Und selbst wenn sie auftreten würden, leitet man Überspannung mit Dioden
nach Masse und 5V ab.
Und wenn du schon MCLR deaktivierst, ist eine externe Beschaltung eh
hinfällig, weil er dann die Portfunktion übernimmt (Input RA3)^^
(es sei denn, du nutzt die Portfunktion, dann muss natürlich die
Programmierspannung von der restlichen Schaltung getrennt werden)
>>>>LVP disabled? (Low Voltage Programm)> Ja, das ist doch die Funktion, wenn der besagte Pin auf high liegt, dann> schaltet der Chip in den Programmiermodus.
Nope.
LVP begrenzt nur die Programmierspannung auf VDD.
> Habe mittlerweile mal die Abblockkondensatoren ganz entfernt, siehe da,> es läuft bei 2 von 3 MCUs....seltsam.> Werde mal Abblockkondensatoren auch an den ULN2803s dranhängen...
Fange niemals an, dir soetwas anzueignen! Damit wirst du dir öfter
Probleme einhandeln, als dir lieb ist.
Ich würde an deiner Stelle zum 100nF noch einen 10µF parallel löten und
dann das ganze nochmal testen.
[EDIT]
Aber ein Einbrechen der Versorgungsspannung, was einen Reset des uC
auslöst, solltets du mit einem Oszi schon messen können. Dann weißt du
doch mehr.
Wie sensibel ist denn dein BrownOutReset (FuseBit BOR) gesetzt?
Gruß
Hallo,
also ich werde hier noch verrückt.....
Habe die alte Version der Leiterplatte dia alten PIC18F4620 durch
PIC18F46K22
im 40 piligen PDIP Gehäuse ersetzt.
Mit den alten Prozessoren absolut keine Probleme.
2x100 nF direkt an den VSS VDD Pins.
Die neuen Typ MCU stürzen auch hier ab !
Kann also kein Layoutproblem sein.
Noch was seltsames:
Wennich mit einer Pinzette an Pin 1 des Programmiersteckers komme, dan
resettet der Chip auch.
Bei 3 Stück geprüft, immer da gleiche.
Auch hier ist die MCLR Funktion deaktiviert worden.
Also ich traue den XLP Chips nicht mehr....
urch die keineren Strukturen sind die Dinger scheinbar empfindlicher
geworden..
Werde dan wohl auf PIC18F4620 im TQFP44 Gehäuse umsteigen, mit 5 V
versoregen und einen Levelschifter für SPI zum PIC32 (SPI Master)
aufbauen....
Schon mal versucht die Configuration bits im Code zu setzen ?
Mit MPLABX wurde die Menue-Möglichkeit zum Glück abgeschaft.
Da kann man über das Menue nur noch den Code erzeugen und MUSS
ihn dann in eine Source Datei einfügen.
Bei mir sind die K22 (14k, 2xK, 4xK) von gerade "Standard"
Nie Probleme mit "Abstürzen", obwohl es sich bei vielen Boards
um Entwicklungsplatinen handelt die oft während des Betriebs mit
blossen Fingern ...
Lies mal bitte das hier:
http://www.lothar-miller.de/s9y/categories/14-Entkopplung
Deine Decouplingkondensatoren bringen an dieser Position überhaupt
nichts. Zuerst mal benötigst du natürlich für jede GND-VCC-Pin-Pärchen
einen einzelnen Kondensator. Also 2 Stück hier. Wenn du dann schon
Probleme hast, dann brauchst du noch eine Bulkkapazität (z.B. 10uF)
irgendwo in der Nähe des Controllers. Aber mal zu den 2x100nF.
Elektrische länge (also der Pfad VCC-Pin-PIC -> Kondensator -> GND ->
GND-Pin-PIC) nicht länger als 1,5cm. Und dann nicht diese dünnen
Leiterbahnen. Die Induktivität der Zuleitungen muss kleinste möglich
werden. Also Leiterbahnen so breit wie möglich und so kurz wie möglich!
So wie du es hast (zeichne den Pfad ruhig mal in Paint ein), kannst du
die Kondensatoren direkt weglassen.
Dirk F schrieb:> Die neuen Typ MCU stürzen auch hier ab !> Kann also kein Layoutproblem sein.
Wenn das alte Layout genauso mies ist wie das der SMD-Version...
fchk
Hallo zusamme,
danke für die guten Hinweise.
Ich bin der Lösung schon Näher gekommen.
Fasse kurz zusammen.
Leiterplatte1 :
- Altes DIP Layout gem. Anlage
- MCU PIC18F4620
Leiterplatte2 :
- Altes DIP Layout gem. Anlage
- MCU PIC18F46K22
Leiterplatte3 :
- Neues SMD Layout wie im ersten Beitrag
- MCU PIC18F46K22
Bei allen 3 Leiterplatten tritt der Effekt auf, wenn ich eine
Metallpinzette in der Hand den Pin1 des Programmieradapters (MCLR)
berühre, resettet der Chip.
Ist nicht weiter schlimm. Bloses Berühren mit dem Finger> Kein Reset.
Leiterplatte 1 und 2 laufen jetzt problemlos.
Fazit: Fehler liegt im Layout, nicht im Typ des PIC.
Werde jetzt das Layout überarbeiten.
Gruß Dirk
Leiterplatte 3: Den Entkoppelkondensatoren ausgelötet.
Einen 100nF direkt an die Beinchen des TQFP44 MCU gelötet.
Ergebnis: Kein Absturz mehr im normalen Betieb.
Ursache war also wirklich schlechte Entkopplung durch lange Massewege.
Pro
>Bei allen 3 Leiterplatten tritt der Effekt auf, wenn ich eine>Metallpinzette in der Hand den Pin1 des Programmieradapters (MCLR)>berühre, resettet der Chip.>Ist nicht weiter schlimm. Bloses Berühren mit dem Finger> Kein Reset.
Ist auch normal so. Mit Pinzette stellst Du urplötzlich einen Kontakt
her, so daß eine harte Schaltflanke entstehen kann, während der Finger
einen weich eingeleiten Kontakt bewirkt, so daß sich gar nicht erst eine
höhere und härtere Schaltflanke aufbauen kann.
Dein Körper hat ja eine gewisse Kapazität gegenüber der Umgebung und der
Schaltung, die mehr oder weniger geladen sein kann, und diese Kapazität
entläd sich über den Pin, bzw, den R an diesem Pin.
Ist ungefähr so, als würdest Du einen kleinen geladenen C zw. Masse und
Eingang klemmen, mal mit, mal ohne Serien-R.
Solche Störeffekte kannst Du an jedem eingang erzeugen, und hat nicht
viel mit PCB-Layout zu tun.
>Leiterplatte 3: Den Entkoppelkondensatoren ausgelötet.>Einen 100nF direkt an die Beinchen des TQFP44 MCU gelötet.>Ergebnis: Kein Absturz mehr im normalen Betieb.>Ursache war also wirklich schlechte Entkopplung durch lange Massewege.
Genau ...
DirkF schrieb:> Ursache war also wirklich schlechte Entkopplung durch lange Massewege.
Der eine Decouplingkondensator ist schon gut (der obere), der untere ist
(vgl. Anhang) immer noch über einen langen Weg angekoppelt.
Hallo Petern,
also das täuscht etwas.
Der GND vom unterene Entkoppelkondensator ist direkt über die Ground
plane mit dem GND Pin der MCU verbunden.
Blau ist die Ground plane, rot ist GND auf Top, nur die ist
unterbrochen....
Trotzden Danke für Deinen Hinweis.
Gruß Dirk
So sehr gut ist das Layout aber auch nicht.
Du hättest z.b. die Leitung, die zwischen dem oberen Kondensator und dem
PIC ist, oberhalb vom Kondensator verlegen können.
Den unteren Kondensator hätte ich um 90° gedreht. Dann könnte man den C
so platzieren, dass der GND- und der VCC-Pin des C direkt neben dem
jeweiligen Anschlüssen des PIC liegen.
Hallo,
mit den bisherigen Erkenntnissen werde ich wohl eine neue Leiterplatte
bestellenmüssen.
Als Anlage mein neues Layout.
Habe die Masseflächen so weit wie möglich nicht durchtrennt.
Bitte um Rückmeldung, ob das soweit OK ist....
Danke an alle.
Gruß Dirk
DirkF schrieb:> Bitte um Rückmeldung, ob das soweit OK ist....
Bitte beschränke Dich auf Winkel von Vielfachen von 45°, dann sieht das
ganze schon mal nicht so dahin geschissen aus. Elektrisch ist es egal,
aber es sieht echt scheiße aus.
90° Winkel in Leiterbahnen vermeiden.
Leiterbahnen an Pads nicht breiter machen als die Pads selber.
Einer der Abblockkondensatoren ist HF-technisch nicht wirksam. Von der
Einspeisung solltest Du zuerst zum Abblockkondensator gehen und von
diesem dann zum Versorgungspin. Nur so kann der Kondensator als schnelle
Spannungsquelle für kurzzeitige Lastspitzen dienen.
fchk
>>>Einer der Abblockkondensatoren ist HF-technisch nicht wirksam.
Hallo Frank,
vestehe ich nicht.
Die Zuleitung +5V geht doch erst auf den Kondensator, dann zum PIC.
Frage: Sollte man so ein System von beiden Seiten mit 5 V speisen, oder
nur von einer ?
LG Dirk
>Einer der Abblockkondensatoren ist HF-technisch nicht wirksam. Von der>Einspeisung solltest Du zuerst zum Abblockkondensator gehen und von>diesem dann zum Versorgungspin. Nur so kann der Kondensator als schnelle>Spannungsquelle für kurzzeitige Lastspitzen dienen.
Diese Begründung ist sowieso falsch. Dem C ist ja egal, woher er die
Spannung bekommt. Für die Übernahme der Stromspitzen kommt es eigentlich
nur auf den Weg zw. IC-Pin und C an.
Was aber von der Reihenfolge abhängt ist die EMV-Geschichte. Denn wenn
direkt am IC-Pin eingespeist wird, und erst vom Pin weg eine extra
Leitungs zum C geht, dann sieht die Einspeiseleitung mehr Störungen, als
wenn sie direkt am C einspeisen würde. Die Einspeisung verbreitet dann
die Sörung, die der C aufgrund seiner Entfernung nicht wegzubügeln
vermag, über die restliche Schaltung, oder strahlt diese dann ab (weil
der C eben nicht direkt am Pin angreift, sondern erst weiter weg, womit
die Störungen am Pin höher sind als direkt am C).
Im letzten Layout3 wäre eigentlich nur das kleine Stück unterm IC davon
betroffen, welches sozusagen an der C-abgewanden Seite der Pins liegt.
Nach ausen hin (also von den Cs zur Versorgung hin) sieht es aber wieder
sauber aus. Insofern keine großflächige Verseuchung, sondern nur unterm
IC ein kleiner Seuchenherd ;-)