Forum: Mikrocontroller und Digitale Elektronik UART Schutzbeschaltung


von Aike T. (biertrinker)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein ziemliches Problem. Baue gerade an einer etwas Komplexeren 
LED-Beleuchtung bei der insgesamt 38 ATmega8 verwendet werden.
Ich hatte mir Anfangs ein paar Testplatinen aufgebaut, und da es dabei 
keine Probleme gab habe ich dann das entgültige Layout als 60cm lange 
streifen fertigen lassen.
Jetzt habe ich die ersten 10 Platinen bestückt und 5 defekte Mega8. :-(
Den Schaltplan habe ich angehängt. Der UART geht dabei quasi als Ring 
immer von einem Board zum nächsten weiter, immer Ausgang auf Eingang.

Ich kann mir nicht so recht erklären, was die Ursache für die Probleme 
sein könnte. Ich experimentiere halt noch etwas rum mit den Boards um 
die Software dafür fertig zu bekommen.
Dabei kommt es dann immer mal wieder vor, das plötzlich bei einem Mega8 
der TX oder RX Port kaput geht. Da mir Langsam die Reservecontroller 
ausgehen, muss ich mir irgendwas einfallen lassen.

Jemand nen Vorschlag?

viele Grüße

Aike

von Erich R. (riedi)


Lesenswert?

Hi,

ist schon etwas mutig von Dir, die Portpins direkt und ungeschützt nach 
aussen zu führen. Durch die parasitäre Induktivität der Leitungen können 
Spannungs-Spikes entstehen, welche wiederrum deinen Controller 
beschädigen können.
Zudem koppelt eventuell noch das ein odere andere ein...
Würde Dir empfehlen, einen Serien-Widerstand in die Leitungen 
einzubauen. Versuch's mal mit ca. 1k. Zudem könnten kleine, keramische 
Kapazitäten gegen Masse Spikes kurzschliessen (Bereich 47pF vielleicht). 
Und wenn du auf Nummer sicher gehen willst, könntest du noch 
Überspannungs-Schutzelemente einbauen, z.B. Suppressor-Dioden oder 
CeraDioden.

Hoffe, Dir hiermit geholfen zu haben.

Gruß
ERICH

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Du verbindest seriell auf TTL Level?

Hast du schon schon mit Serienwiderständen in den RX/TX Leitungen 
versucht, den Strom in/aus den Ports zu begrenzen?

Ich könnte mir vorstellen, das es besonders beim "Hochfahren" Zustände 
geben kann, bei dem die AVR-Ports gegeneinander kämpfen. Und einer 
bleibt dann auf der Strecke.

Mit Adapterkabeln ist das ja schnell ausprobiert.

von Aike T. (biertrinker)


Lesenswert?

Hallo Erich, Hallo Steffan,

erstmal Danke für die späte Unterstützung! Ich werde das jetzt erstmal 
mit dem 1k Serienwiderständen probieren, die habe ich hier und in der 
tat, mit nem Adapter kein Problem. Ich habe halt versucht so wenig 
Bauteile wie möglich auf den Boards zu verwenden, damit ich nicht so 
viel arbeit bei Bestücken habe. Bei meinen Prototypen gabs ja auch nie 
Probleme. Kann das sein, das die Mega8 im DIP Gehäuse da unempfindlicher 
sind?

vielen Dank und viele Grüße

Aike

von Erich R. (riedi)


Lesenswert?

Ist mir nichts bekannt. Kann ich mir eigentlich auch nicht vorstellen, 
es sei denn, Atmel hat Dies in verschiedenen Technologien in den 
unterschiedlichen Packages verbaut...?

Viel Erfolg mit deiner Schaltung noch.

...Und ne angenehme Nachtruhe :-)

ERICH

von Aike T. (biertrinker)


Lesenswert?

Verdammt, ich glaube langsam kapier ich was falsch läuft. Ich habe beim 
meine Prototypen eigentlich immer einmal eingeschaltet und dann 
höchstens mal neu Programmiert. Jetzt aktuell entwickel ich einen 
Bootloader dazu. Beim Testen unterbeche ich die Stromversorgung als 
reset.
Und das dann recht oft. Das könnte erklären, warum ich diese Probleme 
vorher nicht hatte. Na mal sehen, dann sollte ja der Serienwiderstand 
helfen...

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Mit Erichs Argumenten würden die Widerstände in dem Adapterkabel nicht 
optimal sitzen. Induktion kann auch erklären, wieso die kurzen 
Testplatinen liefen und die langen Produktionsplatinen sich was fangen 
und verrecken. Die Widerstände sollten dann in der Nähe des Ports sein. 
Vielleicht kannst du die Leiterbahnen in der Nähe der Ports auftrennen 
und mit SMD Widerständen brücken?

von Seppel (Gast)


Lesenswert?

Hallo

Auf jeden Fall mal nen 232 Pegelwandler drauf machen um von 5 auf 12V 
für die RS232 Schnittstelle zu kommen.

Wenn's robuster sin soll, mach nen MOV oder ein TVS an die Eingänge der 
Datenleitungen, aber Achtung, MOV's haben teils ordentliche Kapazitäten.

Ringing sollte keine Spannungen produzieren die problematisch sind, aber 
Du brauchst terminierungen und Transceiver, wenn's über einen Meter ist 
CAN oder sowas, Differntiell, EMV mäßig besser, .... . Nur passive 
Sterne und so was sind keine gute Idee, da muss man wissen was man 
macht.

Beim 7805 sehe ich nur kleine Keramische Kondensatoren, das wird nix, da 
muss Kapazität drauf. um eine saubere Versorgung zu haben. Außerdem an 
jeden Versorgungspin noch mal keramische Kondensatoren wenn möglich. Und 
dann eine Verpolusngsschutz ud Überspannungs-Supressor-Diode.

Seppel

P.S.

Dein Schaltlan wirkt etwas unaufgeräumt, mit so was macht man sehr 
schnell Fehler. Außerdem denk mal über einen CPLD zur Ansteuerung da, 
die sind dafü recht gut geeignet. Gibt gute Anleitungen für die 72xx 
Serie von Xilinx, alte CPLD Serie 5V Technik,... . aber für den Anfang 
ganz nett und haben auch viele Pin's, für die vielleicht sogar 
ausreichend.

von Tim (Gast)


Lesenswert?

Steckst du die Boards im laufende betrieb zusammen?
Sollte nämlich bei Jp2/3 zuerst Vcc + TX bzw TX verbunden
werden könnte dir das er AVR übel nehmen....
Warum ist AVCC und AGND nicht angeschlossen?

von Aike T. (biertrinker)


Lesenswert?

@Seppel: ich fürchte für die meissten deiner Tipps ist es wohl zu spät, 
die Boards sind schon produziert.

Ich werde jetzt mal bei denen ich ich bisher bestückt habe einen 1k smd 
Widerstand dazwischen setzen und weiter testen.

@Tim: Eigentlich sollten die nicht im laufenden Betrieb umgestöpselt 
werden, da fest eingebaut. Allerdings fürchte ich habe ich das im Moment 
schon gemacht, b.z.w. stöpsel ich immer einen Stecker drauf. Nicht 
auszuschließen, das es auch daran liegt. Sollte da nicht auch der 
Serienwiderstand helfen?

Keine Ahnung, die AVCC und AGND habe ich wohl glatt übersehen. Nun denn, 
laut DB wird der Portc über AVCC versorgt, aber er funktionert ja 
trozdem. Muss ich mir da also wirklich gedanken drüber machen?


viele Grüße

Aike

von Tim (Gast)


Lesenswert?

1k ist nicht schlecht.
Bei geringen Baudraten auch gerne 2K.

> Sollte da nicht auch der
> Serienwiderstand helfen?

Ja, der soll den Strom durch die Schutzdioden am
Port begrenzen, damit die nicht kaputt gehen und
danach der Port durchbrennt.

Zusätzlich solltest du das VCC und TX/RX Pin am Stecker
so kürzen das erst GND, dann VCC und zuletzt TX/RX
verbunden wird (Wenn mechanisch möglich).

Wegen Avcc...
Ich würde die anklemmen (zuzüglich der 100nF).

von Aike T. (biertrinker)


Lesenswert?

Tim wrote:
> 1k ist nicht schlecht.
> Bei geringen Baudraten auch gerne 2K.

Die 1k habe ich jetzt bei ein paar Exemplaren eingebaut. Ach so, meinst 
du eigentlich jeweils in RX und TX jeweils 1k? Wären dann zusammen ja 
auch wieder 2k. Im korrekt gesteckten Zustand würde ein R z.B. in der 
Empfangsleitung ja reichen. Nur wenn man sich mal verstöpselt könnte der 
dann der TX Port ungeschützt sein.

> Zusätzlich solltest du das VCC und TX/RX Pin am Stecker
> so kürzen das erst GND, dann VCC und zuletzt TX/RX
> verbunden wird (Wenn mechanisch möglich).

Das ist leider kaum machbar, dann würden später die Jumper nicht mehr 
halten. Habe jetzt einen extra Schalter in das Kabel gebaut, ist nicht 
ganz so sicher, aber immerhin etwas.

> Wegen Avcc...
> Ich würde die anklemmen (zuzüglich der 100nF).

Dann mach mich mich mal auf die Suche, wo ich noch ein Stück Lackdraht 
ziehen kann.

viele Grüße

Aike

von Hmm... (Gast)


Lesenswert?

Hab bei einigen Platinen mit I2C-Erweiterung eine Ferritperle und 
zusätzlich noch eine Z-Diode 5.6V nach Masse an jedem Portpin. Das 
bietet eigentlich schon einen guten Schutz.

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
Noch kein Account? Hier anmelden.