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.
82B715 Baustein als I2C Repeater, saubere CAT5/CAT6 Kabel und einen I2C Portexpander
:
Bearbeitet durch User
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/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".
:
Bearbeitet durch User
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)?
:
Bearbeitet durch User
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 |
7 | PORTA = UDR; |
8 | PORTB |= (1<<E_OUT); |
9 | PORTB &= ~(1<<E_OUT); |
10 | |
11 | }
|
Schon fast langweilig.
:
Bearbeitet durch User
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.
Danke Falk, nun muss nur der der TE, daraus eine Stück Hardware machen und eine attiny2313, tn4313, o.ä. programmieren.
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
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.