Forum: Mikrocontroller und Digitale Elektronik Strombegrenzung für Datenleitungen zwischen Display und AVR?


von Frank (Gast)


Lesenswert?

Guten Tag!

An einem Atmega8 betreibe ich ein 16x2 Zeilen Display mit 
HD44780-"kompatiblem" Controller. Sowohl Schreiben zum als auch Lesen 
(Busy Flag) vom Display funktionieren.

Die Datenleitungen DB 0-7 sind direkt an Port D des Atmegas 
angeschlossen. Wenn ich nun fälschlicher Weise (per Software) sowohl 
Port D als auch die Datenleitungen des Displays auf Ausgang stelle, 
würde je nach gesetzten Levels ein recht hoher Strom fliessen. Das 
Enable-Signal müsste natürlich auch längere Zeit gehalten werden - so 
meine Überlegung.

Da das Display-Datenblatt recht dünn ist, habe ich mir das 
HD44780-Datenblatt von Hitachi angesehen: 
https://www.sparkfun.com/datasheets/LCD/HD44780.pdf
Auf Seite 54 unten (rechts) habe ich die Ausgangsstufe gefunden. Über 
die PMOS- bzw. NMOS-Transistoren wird der Ausgang auf Vcc bzw. GND 
geschaltet. Eine weitere Strombegrenzung scheint nicht integriert zu 
sein.

Ist das Szenario so korrekt bzw. kann der AVR oder der 
Display-Controller in der Form mit fehlerhafter Software beschädigt 
werden?

Falls ja, sollte man die Display-Datenleitungen lieber über Widerstände 
zur Strombegrenzung mit dem AVR verbinden?

Ich würde jetzt eher auf die Strombegrenzung verzichten und auf 
korrekten Code achten. Das "Enable"-Signal dauert meist auch nur wenige 
Mikrosekunden, so dass man den Fehler vermutlich noch finden wird, bevor 
etwas Schaden nimmt. Aber wie macht man das in Anwendungen mit höherem 
Anspruch als meiner Bastelei?


Danke schon einmal für eure Meinung und schönen Nachmittag!
Frank

von Pandur S. (jetztnicht)


Lesenswert?

Ich wuerd empfehlen 100 Ohm widerstaende zu verwenden. Und das 
ruecklesen zu vergessen. Ich schreib jeweils mit einem Timer, alle 10ms 
ein Zeichen oder so.

von chris (Gast)


Lesenswert?

Frank schrieb:
> Wenn ich nun fälschlicher Weise (per Software) sowohl
> Port D als auch die Datenleitungen des Displays auf Ausgang stelle,

> Auf Seite 54 unten (rechts) habe ich die Ausgangsstufe gefunden. Über
> die PMOS- bzw. NMOS-Transistoren wird der Ausgang auf Vcc bzw. GND
> geschaltet. Eine weitere Strombegrenzung scheint nicht integriert zu
> sein.

Für die Datenleitungen ist ja der Port(AVR) eh immer auf Ausgang 
gestellt, ausser zum lesen und zum lesen muss das übers RS; R/!W bit 
angezeigt werden, damit die LCDausgangsstufe auf IN/OUTput umgestellt 
wird

bin vor längeren umgestiegen auf die serielle Ansteuerung solcher LCD's 
mit nen 74164 oder auch den 74595 und die kurze Zeit für die Ausgabe ist 
das eh egal man muss sich nur klar machen wann man das LCD aktualisieren 
muss/will. Meist dann wenn sich Werte ändern/geändert haben und Texte 
z.B. für ein Menu oder ähnliches kann man stehen lassen und muss nicht 
alle Xms neu schreiben.

!!!Ausnahmen betsätigen die Regel!!! es ist mir aufgefallen das diese 
LCD mit gewissen verseuchten Umgebungen Probleme haben, habe es so 
gemacht das alle 5s das ganze LCD einfach komplett neu geschrieben wird.

von Holger K. (holgerkraehe)


Lesenswert?

chris schrieb:
> !!!Ausnahmen betsätigen die Regel!!! es ist mir aufgefallen das diese
> LCD mit gewissen verseuchten Umgebungen Probleme haben, habe es so
> gemacht das alle 5s das ganze LCD einfach komplett neu geschrieben wird.

Ziemlich sicher war die Umgebung ohne deine Hardware noch nicht 
verseucht.
Ich würde mal darauf setzen, dass du die Störungen, welche dein LCD zum 
absturz bringen, selbst verursachst.

von chris (Gast)


Lesenswert?

Holger Krähenbühl schrieb:
> chris schrieb:
>> !!!Ausnahmen betsätigen die Regel!!! es ist mir aufgefallen das diese
>> LCD mit gewissen verseuchten Umgebungen Probleme haben, habe es so
>> gemacht das alle 5s das ganze LCD einfach komplett neu geschrieben wird.
>
> Ziemlich sicher war die Umgebung ohne deine Hardware noch nicht
> verseucht.

negativ in 40cm Entfernung is nen Wechselrichter und davon ab mit 
entsprechnder Änderung an der Software fürs LCD, dass ich es 
entsprechend überschreibe, zeigts auch kein Müll mehr an. Die Software 
musste seit dem neuaufspielen nicht einmal mehr resetet werden (vor ca. 
2 Jahren).

Habe vor ca.3 Jahren mal recherchiert und bin mit fündig geworden
Beitrag "LCD 4x20 hängt sich nach der Zeit auf!" weiter unten Problem mit der 
Masseschleife und Störungen

> Ich würde mal darauf setzen, dass du die Störungen, welche dein LCD zum
> absturz bringen, selbst verursachst.

nicht mehr als du. Oder doch??

So ende jetzt, will den Thread nicht kappern

von Klaus (Gast)


Lesenswert?

Frank schrieb:
> Wenn ich nun fälschlicher Weise (per Software) sowohl
> Port D als auch die Datenleitungen des Displays auf Ausgang stelle,
> würde je nach gesetzten Levels ein recht hoher Strom fliessen.

Was heißt recht hoch? Ampere? Milliampere? Microampere?

> Auf Seite 54 unten (rechts) habe ich die Ausgangsstufe gefunden. Über
> die PMOS- bzw. NMOS-Transistoren wird der Ausgang auf Vcc bzw. GND
> geschaltet. Eine weitere Strombegrenzung scheint nicht integriert zu
> sein.

Na das ist doch schon mal was. Die FETs sind ja doch Widerstände. Die 
Größe ihres Rdson kann man ja mal schätzen. Im Datenblatt findet man für 
den Betrieb bei 5V für DB0-DB7:

Output high voltage  2.4V  I = 0.205 mA

Am oberen Transistor fallen also bei 0,2 mA ca. 2,5V ab, macht rund 
12kOhm. Oder anders gesagt, bei einem Kurzschluß gegen GND sinds rund 
0,4mA. Das ist sicher kein vernünftiger Wert als Dauerzustand, temporär 
aber kein Grund zur Panik. Außerdem kommt ja noch der Innenwiderstand 
des zweiten Ausgangs dazu, der selbst bei kräftigeren Ausgängen im 
zweistelligen Ohmbereich liegen wird.

MfG Klaus

von Peter D. (peda)


Lesenswert?

Frank schrieb:
> Wenn ich nun fälschlicher Weise (per Software)

Warum nicht einfach das falsche Programmieren verhindern?

Dazu schreibt man sich 2 Funktionen zur Umschaltung, die die korrekte 
Reihenfolge einhalten. Und benutzt fürderhin nur diese Funktionen und 
schreibt nie direkt auf die Register.
Pseudocode:

set_lesen:
  Daten auf Eingang
  RW_Pin auf Lesen
  RET

set_schreiben:
  RW_Pin auf Schreiben
  Daten auf Ausgang
  RET

von Falk B. (falk)


Lesenswert?

@ Frank (Gast)

>angeschlossen. Wenn ich nun fälschlicher Weise (per Software) sowohl
>Port D als auch die Datenleitungen des Displays auf Ausgang stelle,
>würde je nach gesetzten Levels ein recht hoher Strom fliessen.

Nö. Denn die Ausgänge des LCD sind sehr stromschwach.

>Ist das Szenario so korrekt bzw. kann der AVR oder der
>Display-Controller in der Form mit fehlerhafter Software beschädigt
>werden?

Theoretisch ja, praktisch eher nicht.

>Falls ja, sollte man die Display-Datenleitungen lieber über Widerstände
>zur Strombegrenzung mit dem AVR verbinden?

Nein. Millionen Leute schaffen das auch ohne Widerstände.

>Ich würde jetzt eher auf die Strombegrenzung verzichten und auf
>korrekten Code achten.

Genau.

> Das "Enable"-Signal dauert meist auch nur wenige
>Mikrosekunden, so dass man den Fehler vermutlich noch finden wird, bevor
>etwas Schaden nimmt. Aber wie macht man das in Anwendungen mit höherem
>Anspruch als meiner Bastelei?

Genau so.

von Frank (Gast)


Lesenswert?

Klaus schrieb:
> Output high voltage  2.4V  I = 0.205 mA
Aha, das sind mal konkrete Werte! Für Output Low ist der Strom aber 
deutlich höher (1.2 mA bei 0.4 V -> 333 Ohm), woraus im umgekehrten Fall 
(AVR Output von 20 mA bei 5.0 - 4.2 = 0.8 V -> 40 Ohm) ein Strom von ca. 
13mA resultieren würde. Der Atmega8 hält das auch mit 8 falsch 
konfigurierten Leitungen aus. Im HD44780-Datenblatt finde ich dazu 
leider keine Angaben.

Peter Dannegger schrieb:
> ...die die korrekte Reihenfolge einhalten.
Es geht ja darum, dass diese eben nicht korrekt ist. Dennoch ein guter 
Hinweis, denn genauso mache ich das auch.

Falk Brunner schrieb:
> Millionen Leute schaffen das auch ohne Widerstände.
Ich auch. :)


Danke an alle!

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.