HD44780 Extender

Gast #4435305
Lesenswert?

hallo,
kennt jemand ein fertiges Produkt, mit dem man ein HD44780 Display über 
eine lange Strecke (>10m) per differentiellen Leitungen 
ansteuern/verlängern kann?
Normalerweise ist das LCD über eine 15cm lange Leitung angeschlossen. 
Nun soll es (weit) entferent betrieben werden. Es sind dazu max. 4 
Leitungen (für Daten/Clock) vorhanden. Auf Grund der Länge sollte es 
differentiell sein.
Es muss NICHT das busy flag auswerten (kein Read vom LCD-Controller).
Die Daten für das LCD direkt vor Ort zu erzeugen ist keine Option, daher 
sollte es wirklich ein "Range Extender" der HD44780-Leitungen sein.

Danke im voraus.
Gast #4435342
Lesenswert?

Bülent C. schrieb:
> 82B715 Baustein als I2C Repeater

Meinst du den I2C Repeater "missbrauchen"?
Ich möchte direkt die HD44780 Signale übertragen (mit max. 4 Leitungen), 
da der "Sender" ein fertiges Gerät ist.

Dachte da an eher sowas wie SerDes (wo mehrere bits serialisiert 
übertragen werden): Serialisieren der HD44780 Signale->auf RS485/422 
umsetzen->RS485 adapter zu TTL/LVTTL->serialisierte Daten wieder 
parallel ausgeben.
#4435357
Lesenswert?

I2C wird da wohl ein wenig langsam sein.
Bei 8-bit Daten + extra Signale = 16-bit expander + overhead (adresse / 
ACK) wird die Clock dann bei vielleicht max. 10 KHz landen.

Guck mal bei TI nach LVDS serializer / deserializer. Da ist bestimmt 
etwas dabei.
z.B. DS92LX1621 + DS92LX1622
Macht dir 800 Mbits/sec bei 16-bit über eine differentielle 2-Draht 
Leitung.

http://www.ti.com/product/ds92lx1621
http://www.ti.com/lit/ds/symlink/ds92lx1621.pdf

Nachtrag: allerdings schreiben die bei diesem Teil "up to 10 meters 
shielded twisted pair".

Gibt aber bestimmt auch etwas, das größere Strecken "kann".
Gast #4435389
Lesenswert?

Joe F. schrieb:
> Guck mal bei TI nach LVDS serializer / deserializer. Da ist bestimmt
> etwas dabei.

Danke für den konkreten Vroschlag für die SerDes.
Die Frage ist noch ob es irgendetwas "fertiges" gibt? So in der Art:
Adapter mit HD44780 IN->differentiell OUTPUT->Adapter IN->HD44780 OUT


Stefan U. schrieb:
> HD44780 braucht aber nicht 4 Leitungen, sondern mindestens 6.

Habe leider nur 4 Leitungen zur Verfügung, daher müssen die HD44780 auch 
serialisiert werden.
#4435442
Lesenswert?

dev_null schrieb:
> Die Frage ist noch ob es irgendetwas "fertiges" gibt? So in der Art:
> Adapter mit HD44780 IN->differentiell OUTPUT->Adapter IN->HD44780 OUT

Das wird es wohl kaum geben.
Eval-Boards wären da noch eine Möglichkeit.

Ebenfalls interessant:
TI bietet ICs, die die Reichweite des SerDes entscheidend erweitern:

Application note:
http://www.ti.com/lit/wp/snla204/snla204.pdf
Gast #4435490
Lesenswert?

Ich fürchte, die ganze Sache scheitert am Timing.

Denn die Serielle Übertragung muss ja mit der Geschwindigkeit des 
"Senders" mithalten. Den kannst du nicht ändern, habe ich verstanden.

Wie hoch ist denn die maximal zu übertragende Frequenz?
#4435499
Lesenswert?

@ dev_null (Gast)

>Die Frage ist noch ob es irgendetwas "fertiges" gibt? So in der Art:
>Adapter mit HD44780 IN->differentiell OUTPUT->Adapter IN->HD44780 OUT

Ich fürchte nein. Alles was mit langen Kabeln angeschlossen ist, hat den 
Zusatcontroller am LCD und bekommt schon serielle Daten per UART/ I2C 
oder sonstwas.

>Habe leider nur 4 Leitungen zur Verfügung, daher müssen die HD44780 auch
>serialisiert werden.

>Die Daten für das LCD direkt vor Ort zu erzeugen ist keine Option, daher
>sollte es wirklich ein "Range Extender" der HD44780-Leitungen sein.

Dann muss man einen intelligenten MUX aufbauen, der die Eingänge des 
LCDs emuliert und jedes Kommando, welche mit einem E-Puls geschickt wird 
über eine serielle Leitung abtransportiert.

Beitrag "Re: Mehrere Signale über eine Leitung"

Das könnte man aufbohren. Mit jeder fallenden Flanke von E müssen die 
Daten DB0-DB7 sowie RS abgetastet werden und seriell per UART verschickt 
werden, im Zweifelsfall mit 9 Bit/Datenpaket. Der Empfänger macht es 
dann anders herum. Sollte machbar sein. E würde ich an einen 
interruptfähigen Eingang legen. Die differentielle Übertrtagung macht 
man dann per RS485. Dazu braucht man ein verdrilltes Leitungspaar + 
Masse!
#4435522
Lesenswert?

@ Stefan Us (stefanus)

>Ich fürchte, die ganze Sache scheitert am Timing.

Geht doch weg hier! Du gibst schon auf wo noch nicht mal EINER 
angefangen hat!

>Denn die Serielle Übertragung muss ja mit der Geschwindigkeit des
>"Senders" mithalten. Den kannst du nicht ändern, habe ich verstanden.

Ja und? Ein Befehl dauert beim HD44780 mindestens 40us. In der Zeit muss 
man bestenfalls 9+2 Bits abtransportieren. Macht 275 kbit/s. Gähn. 
DMX512 macht 250 kbit/s und da hat ein AVR noch einiges an Reserven. 
Also AVR+16 MHz Quarz und 500 kbit/s Baudrate. Der Rest ist trivial, 
selbst in C ist man da extrem schnell.
1
// Sender
2

3
// IO init etc.
4

5
while(1) {
6
  while(!(PINA & (1<<PA0)));  // warte auf E=1
7
  while( (PINA & (1<<PA0)));  // warte auf E=0 -> fallende Flanke
8
  UDR = PINA;
9
}
1
// Empfänger
2

3
// IO init etc.
4

5
while(1) {
6
  while(!(UCSRA & (1<<RXC)));  // warte auf UART-Empfang
7
  PORTA = UDR;
8
  PORTB |= (1<<E_OUT);
9
  PORTB &= ~(1<<E_OUT);
10

11
}


Schon fast langweilig.
#4435566
Lesenswert?

dev_null schrieb:
> Bülent C. schrieb:
> 82B715 Baustein als I2C Repeater
>
> Meinst du den I2C Repeater "missbrauchen"? Ich möchte direkt die HD44780
> Signale übertragen (mit max. 4 Leitungen), da der "Sender" ein fertiges
> Gerät ist.
>
> Dachte da an eher sowas wie SerDes (wo mehrere bits serialisiert
> übertragen werden): Serialisieren der HD44780 Signale->auf RS485/422
> umsetzen->RS485 adapter zu TTL/LVTTL->serialisierte Daten wieder
> parallel ausgeben.

Also erstmal sind das mindestens 6 Leitungen.
Da dein Sender wohl für diesen Einsatz nicht konzipiert ist, musst du eh 
noch Stück Hardware dazwischen packen.
OOptimalerweise überträgt man über solche Strecken die Daten seriell, 
und i2c wäre neben anderen eine Wahl die man treffen könnte.
Könntest die 6 Signale auch per Lichtleiter übertragen :-)
#4435569
Lesenswert?

Joe F. schrieb:
> I2C wird da wohl ein wenig langsam sein.
> Bei 8-bit Daten + extra Signale = 16-bit expander + overhead (adresse /
> ACK) wird die Clock dann bei vielleicht max. 10 KHz landen.
>
> Guck mal bei TI nach LVDS serializer / deserializer. Da ist bestimmt
> etwas dabei.
> z.B. DS92LX1621 + DS92LX1622
> Macht dir 800 Mbits/sec bei 16-bit über eine differentielle 2-Draht
> Leitung.
>
> http://www.ti.com/product/ds92lx1621
> http://www.ti.com/lit/ds/symlink/ds92lx1621.pdf
>
> Nachtrag: allerdings schreiben die bei diesem Teil "up to 10 meters
> shielded twisted pair".
>
> Gibt aber bestimmt auch etwas, das größere Strecken "kann".

Wieso einen 16bit expander? Ein 8 bit reicht.
Und warum ssoll es langsam sein? Er überträgt nur pupsige Bytes
#4435575
Lesenswert?

Falk B. schrieb:
> Ein Befehl dauert beim HD44780 mindestens 40us.

Woher hast du diesen Wert?
Ich lese im Datenblatt, dass man bis zu 2MHz machen kann.

Es wäre glaube ich ganz gut, wenn dev_null (TO) selbst mal nennen 
könnte, um welche Datenrate es hier geht.

Wenn es wirklich im Bereich von 250 kbit (seriell) liegt, kann man sich 
den Rest des Abends ja dann Gedanken um die drahtlose Übertragung 
machen, der Source-Code für's serialisieren/deserialisieren ist ja schon 
da ;-)

Kabel ist doch eh so dermaßen old-school...
#4435581
Lesenswert?

dev_null schrieb:

> kennt jemand ein fertiges Produkt, mit dem man ein HD44780 Display über
> eine lange Strecke (>10m) per differentiellen Leitungen
> ansteuern/verlängern kann?

Nun, früher gab es mal Parallel/Seriell Wandler und umgekehrt
für Centronics-Drucker. Aber erstens dürften die inzwischen
obsolet sein und zweitens braucht man da sicherlich auch noch
zzusätzliche Steuerlogik.
#4435588
Lesenswert?

Joe F. schrieb:
> Bülent C. schrieb:
> Und warum ssoll es langsam sein? Er überträgt nur pupsige Bytes
>
> Ja, aber eben mit einer bis zu 2MHz Clock.
> Und ein 400 KHz I2C kann im günstigsten Fall nur 400K/9 byte/s
> übertragen, also wäre bei einer 44 KHz Display Clock bereits
> Ende-Gelände.

Du möchtest mir jetzt erzählen das man mit einem i2c expander keinen 
Hd44780 display betreiben kann?
#4435596
Lesenswert?

@ Joe F. (easylife)

>> Ein Befehl dauert beim HD44780 mindestens 40us.

>Woher hast du diesen Wert?

Aus dem Datenblatt. Execution times.

>Ich lese im Datenblatt, dass man bis zu 2MHz machen kann.

Nö. Der E-Puls muss mindesten 500ns breit sein, darf aber nicht 
schneller als 40us wiederkommen. Ausnahme im 4 Bit Mode, da kann man die 
beiden Nibbles deutlich schneller nacheinander schicken.

>Kabel ist doch eh so dermaßen old-school...

Wer Funk kennt nimmt Kabel!
#4435607
Lesenswert?

Joe F. schrieb:
> Falk B. schrieb:
>> Ein Befehl dauert beim HD44780 mindestens 40us.
>
> Woher hast du diesen Wert?
> Ich lese im Datenblatt, dass man bis zu 2MHz machen kann.

Nöö, so eine LCD Datenblatt kenne ich nicht, die schnellsten LCDs die 
ich habe, liegen auch bei ca. 40µs pro Befehlszyklus, dabei ist noch 
eine Mindestlänge des EN-Signals zu beachten !

Es werden mit den Ansatz von Falk Brunner genau 6 Byte übertragen.

D4 - D7, RS, EN = 6 Bit; 4Bit Modus.
RS legt fest, ob es sich dabei um Daten (=1) oder Kommandos (=0) 
Nibbel+Nibbel handelt.
Die Datenleitung RW liegt auf dabei 0 (Gnd) und das Bussy Flag wird 
nicht verarbeitet.
#4435625
Lesenswert?

Bülent C. schrieb:
> Du möchtest mir jetzt erzählen das man mit einem i2c expander keinen
> Hd44780 display betreiben kann?

Nein, das möchte ich nicht. Ich habe nur gesagt, die Clock darf dann 
nicht schneller als 44 KHz sein.
Und TO kann ja seine Clock nicht beeinflussen...

Falk B. schrieb:
>>Kabel ist doch eh so dermaßen old-school...
>
> Wer Funk kennt nimmt Kabel!

Hihi, made my day.
Gast #4435793
Lesenswert?

dev_null schrieb:
> kennt jemand ein fertiges Produkt, mit dem man ein HD44780 Display über
> eine lange Strecke (>10m) per differentiellen Leitungen
> ansteuern/verlängern kann?

Selbst Festplatten werden heutzutage nicht mehr über eine bitparallele 
Schnittstelle betrieben. Warum willst dein Display unbedingt über eine 
parallele Schnittstelle und dann noch differentiell ansteuern. Das 
Display wesentlich schneller anzusteuern, als man es ablesen kann, ist 
meist ziemlich sinnfrei. Wäre nicht ein µC am Display und eine gängige 
serielle Schnittstelle, insbesondere wegen des geringeren 
Verdrahtungsaufwandes, vorzuziehen?
Gast #4436601
Lesenswert?

Ich habe es so verstanden, dass sowohl das Display als auch die 
ansteuernde Schaltung unveränderlich sind. Lediglich das Kabel 
dazwischen will der TO verlängern.

@Falk Brunner: Mir ist schon klar, dass man die Signale mit 
Mikrocontrollern serialisieren und übertragen kann. In der Tat habe ich 
das sogar schonmal schonmal mit dem kompletten bedienfeld einer 
Alaramanlage gemacht (über 2-Draht Telefonkabel).

Nur habe ich auch den Eindruck gewonnen, dass der TO etwas Fertiges 
sucht. Er sieht sich vermutlich nicht imstande, Software und Hardware 
dafür zu entwicklen.

Dein Codebeispiel hilft ihm sicherlich, falls ich ihn da falsch 
eingeschätzt habe.
Gast #4436639
Lesenswert?

dev_null schrieb:
> Normalerweise ist das LCD über eine 15cm lange Leitung angeschlossen.
> Nun soll es (weit) entferent betrieben werden. Es sind dazu max. 4
> Leitungen (für Daten/Clock) vorhanden. Auf Grund der Länge sollte es
> differentiell sein.

Hallo dev_null

Handelt es sich bei deinem Gerät um I2C 2 Draht Ansteuerung;
SDA-SCL-GND-Ucc+  ???

Wenn Ja, dann gibt es für die Übertragung fertige Produkte;

Beitrag "AVR SDA-SCL One-Wire I2C Optokoppler"

und Falks Vorschlag;
http://sandboxelectronics.com/?product=pca9600-differential-i2c-long-cable-extender-with-boost-convertor

MfG
Gast #4436683
Lesenswert?

JoJoBa schrieb:
> Handelt es sich bei deinem Gerät um I2C 2 Draht Ansteuerung;
> SDA-SCL-GND-Ucc+  ???

Es geht um die Verlängerung der LCD Ansteuerung, die Hd44780 ist. Also 
mindestens 6 Leitungen, wobei ich nur 4 zur Verfügung habe.
Wie das Gerät die Daten bekommt kann ich nicht verändern. Ich muss 
direkt die Hd44780 Signale abfangen bzw. Umwandeln.
#4436738
Lesenswert?

@ Stefan Us (stefanus)


>Ich habe es so verstanden, dass sowohl das Display als auch die
>ansteuernde Schaltung unveränderlich sind. Lediglich das Kabel
>dazwischen will der TO verlängern.

Eben, genau dafür braucht man einen (transparenten) Extender, der am 
Eingang ein HD44780 emuliert und am anderen Ende den Controller mit 
seinen Ansteuerleitungen

>Nur habe ich auch den Eindruck gewonnen, dass der TO etwas Fertiges
>sucht.

Das tut er.

> Er sieht sich vermutlich nicht imstande, Software und Hardware
> dafür zu entwicklen.

Kann sein.
Gast #4437050
Lesenswert?

Peter D. schrieb:
> Fertig nicht, aber wenn man programmieren kann, kann man was selber
> bauen.
> Man braucht einen MC (z.B. ATtiny2313), der die 9 Bit parallel einliest
> und über die UART rausschickt (RS-485). Dann einen 2. MC, der es
> empfängt und das LCD steuert.

Danke Peter, genauso hab ich mir das auch gedacht. Kann programmieren 
usw., tendiere bei einem Selbstbau aber eher zu einem STM32 (oder 
anderem ARM core uC), damit das ganze auch relativ flott geht (wie schon 
oben erwähnt hat ja HD44780 max. 2MHz).

Falk B. schrieb:
> Dann muss man einen intelligenten MUX aufbauen, der die Eingänge des
> LCDs emuliert und jedes Kommando, welche mit einem E-Puls geschickt wird
> über eine serielle Leitung abtransportiert.
>
> Beitrag "Re: Mehrere Signale über eine Leitung"
>
> Das könnte man aufbohren. Mit jeder fallenden Flanke von E müssen die
> Daten DB0-DB7 sowie RS abgetastet werden und seriell per UART verschickt
> werden, im Zweifelsfall mit 9 Bit/Datenpaket. Der Empfänger macht es
> dann anders herum. Sollte machbar sein. E würde ich an einen
> interruptfähigen Eingang legen. Die differentielle Übertrtagung macht
> man dann per RS485. Dazu braucht man ein verdrilltes Leitungspaar +
> Masse!

Danke für die Implementierungshinweise, genauso hab ich mir das auch 
gedacht. Ein wichtiger Punkt wäre für mich, ob es da etwas fertiges 
gibt. Leider denke ich auch, dass es wohl ein Eigenbau werden wird (ich 
tendiere zu einem STM32 uC auf Sender und Empfänger Seite).

Joe F. schrieb:
> Es wäre glaube ich ganz gut, wenn dev_null (TO) selbst mal nennen
> könnte, um welche Datenrate es hier geht.

Das weiß ich leider nicht, es handelt sich um ein fertiges Produkt. Das 
Display muss aber an eine ca. 10-15m entfernte Stelle, daher die Frage 
nach einem fertigen Produkt. Leider liegt das Geräöt noch ncht vor mir, 
daher kann ich auch die reale Datenrate noch nicht messen. Wenn dann 
sollte die Lösung sowieso HD44780 konform sein (lese da auch aus dem 
Datenblatt 2MHz Takt heraus...).

Harald W. schrieb:
> Nun, früher gab es mal Parallel/Seriell Wandler und umgekehrt
> für Centronics-Drucker. Aber erstens dürften die inzwischen
> obsolet sein und zweitens braucht man da sicherlich auch noch
> zzusätzliche Steuerlogik.

Interessante Sache, wobei da könnte man auch die Lösung mit dem I2C, 
oder SerDes ICs aufbauen.

Joe F. schrieb:
> Und TO kann ja seine Clock nicht beeinflussen...

Ganz genau, so ist es.

W.A. schrieb:
> Selbst Festplatten werden heutzutage nicht mehr über eine bitparallele
> Schnittstelle betrieben. Warum willst dein Display unbedingt über eine
> parallele Schnittstelle und dann noch differentiell ansteuern. Das
> Display wesentlich schneller anzusteuern, als man es ablesen kann, ist
> meist ziemlich sinnfrei. Wäre nicht ein µC am Display und eine gängige
> serielle Schnittstelle, insbesondere wegen des geringeren
> Verdrahtungsaufwandes, vorzuziehen?

Ich will einfach das Display mit HD44780 (4 bit Interface) entfernet 
betreiben, ohne die bereits existierenden fertigen Komponenten zu 
ändern. Daher Suche ich nach einem fertigen Gerät, dass genau diese 
Aufgabe erfüllt.

Falk B. schrieb im Beitrag #4436126:
> So könnte das aussehen ;-)

Das sieht echt gut aus, danke dafür.

Stefan U. schrieb:
> Nur habe ich auch den Eindruck gewonnen, dass der TO etwas Fertiges
> sucht. Er sieht sich vermutlich nicht imstande, Software und Hardware
> dafür zu entwicklen.

Ich suche etwas fertiges, genau. 2. Annahme ist falsch: Bin gut 
bewandert auf dem Gebiet uC (ASM, C, C++), FPGA, Software. Jedoch soll 
das Endprodukt professionell eingesetzt werden. Daher benötige ich für 
diesen Adapter CE-Kennzeichnung, EMV-Messung, etc. Das will ich mir halt 
ersparen wenn ich was selber dazu baue...
Gast #4437063
Lesenswert?

Uwe S. schrieb:
> ich möchte schon gerne wissen, warum man ein LCD abgesetzt über diese
> Entfernung ablesen möchte.
>
> Reicht da nicht auch eine einfache Webcam ?

Eine Webcam reicht leider nicht. Es handelt sich um einen Industrie-Akku 
mit BMS (inkl. HD44780 LCD). Der Akku-Zustand soll in einem entfernten 
Raum dargestellt werden.

Technisch ist es kein Problem die Daten vom BMS zu bekommen, wenn man 
den Akku aufmacht... Genau das darf/will ich nicht. Ich kann nur das LCD 
abstecken, ohne den Akku öffnen zu müssen.
#4437098
Lesenswert?

@  devnull (Gast)

>sollte die Lösung sowieso HD44780 konform sein (lese da auch aus dem
>Datenblatt 2MHz Takt heraus...).

Auch wenn man es 100mal wiederholt wird es nicht richtiger!

Der HD44780 kann KEINE 2 MHz! Wohl aber ist die minimale Pulsbreite für 
E = 450ns und die minimale Periodendauer für E 1us. Das wäre nur 1 MHz. 
Im 4-Bit Modus kann man maximal in 2us 2 Nibble schreiben, dann MUSS 
min. 40us Ruhe sein, weil die Befehle nicht schneller bearbeitet werden 
können.
Das wäre sozusagen ein Burst mit 2 Pulsen.
#4438017
Lesenswert?

So, hier mal die überarbeitete Version in THT und SMD sowie als 8/4 Bit 
Version. Da sollte für jeden was passendes dabei sein. Die 4 Bit 
Versionen arbeiten mit 500 kbit/s, die 8 bit Version mit 1 Mbit/s. Die 8 
Bit Version kann 8 und 4 Bit automatisch, darum muss sie auch schneller 
senden, um im EXTREMFALL die kurzzeitig höhere Datenmenge wegzukriegen. 
Im Normalfall wird es wohl kaum passieren, wenn der ansteuernde 
Controller das Timing nicht total ausreizt. Die 4 Bit Versionen braucht 
ein paar weniger Bauteile.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren