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.
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.
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/ds92lx1621http://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".
Wenn viele Adern kein Problem sind, dann könnte man die Leitungen
einfach mit RS485 Bausteinen treiben.
HD44780 braucht aber nicht 4 Leitungen, sondern mindestens 6.
dev_null schrieb:> über> eine lange Strecke (>10m)
Kannst du Distanz auch nach oben eingrenzen?
Und welches Kabel steht zur Verfügung (Cat5, Cat6, Coax)?
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.
Joe F. schrieb:> Und welches Kabel steht zur Verfügung (Cat5, Cat6, Coax)?
Es werden maximal 15 Meter in der Länge sein. Als Kabel steht CAT6 zur
Verfügung, jedoch davon nur 4 Leitungen, also 2 Paare.
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
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.
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?
@ 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!
@ 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
Falk B. schrieb:>>Denn die Serielle Übertragung muss ja mit der Geschwindigkeit des>>"Senders" mithalten. Den kannst du nicht ändern, habe ich verstanden.
Auf der Sendeseite kann man auch in einem Ringpuffer zwischenspeichern.
Sehr häufig können sich die Displaydaten ja nicht ändern. Schließlich
muss das irgend jemand lesen können.
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 :-)
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
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...
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.
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.
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?
@ 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!
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.
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.
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?
Uwe S. schrieb:> D4 - D7, RS, EN = 6 Bit; 4Bit Modus.
Man sollte erstmal rauskriegen, welcher Modus benutzt wird.
Dann kann man die UART auf 5 oder 9 Bit setzen.
Bei 16MHz kann die UART 1MBaud senden, das sollte dicke reichen.
EN muß nicht übertragen werden.
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.
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.
@ 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.
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...
Hallo devnull,
ich möchte schon gerne wissen, warum man ein LCD abgesetzt über diese
Entfernung ablesen möchte.
Reicht da nicht auch eine einfache Webcam ?
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.
devnull schrieb:> HD44780 konform sein (lese da auch aus dem> Datenblatt 2MHz Takt heraus...).
Also im HD44780-Datenblatt steht:
Enable cycle time tcycE 1000 ns
Execution Time (max) (when fcp or fOSC is 270 kHz): 37µs/1.52ms
D.h. max 1MHz je Nibble und min 37µs/1.52ms Wartezeit je Byte.
Wie schon gesagt, kein Problem für den ATtiny.
Peter D. schrieb:> Execution Time (max) (when fcp or fOSC is 270 kHz): 37µs/1.52ms>> D.h. max 1MHz je Nibble und min 37µs/1.52ms Wartezeit je Byte.> Wie schon gesagt, kein Problem für den ATtiny.
Ah, danke! Dann ist die Lösung von Falk ja echt perfekt.
@ 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.
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.