Hallo,
ich habe 3 Smart Displays von Aliexpress, die über eine Opensmart UART
Schnittstelle angesteuert werden. Da UART nur ein Device ansprechen
kann, weil es eben kein Bus ist wie I2C stellt sich folgendes Problem:
Wie steuere ich mit einem uC Ausgang 3 Displays nacheinander an zur
Darstellung von Messkurven, die TXD und RxD benötigen, ohne dass sie
sich logisch und elektrisch in die Quere kommen?
Abgesehen davon ein Gattergrab mit (De-)Multiplexern zu erzeugen fällt
mir für die Heimlösung nur ein 3 kleine Reed Relais mit Doppel-Kontakt
zu verwenden.
Oder gib es da vielleicht was elektronisches?
LG,
Thorsten
Thorsten M. schrieb:> Oder gib es da vielleicht was elektronisches?
Klar: programmierbare Logik. CPLD/FPGA. Oder im Notfall auch:
entsprechend programmierter (paralleler) NV-Speicher, also z.B. olle
BIOS-Flash- oder EPROM-Bausteine.
Für einen 1:3-UART-Mux/Demux brauchst du (im Minimum) 5 Eingänge und 4
Ausgänge.
Wenn die Bitraten nicht zu hoch sind, sondern sich im üblichen
UART-Bereich <=115200kbps bewegen, käme sogar ein kleiner dummer µC in
Frage, bei dem die Mux-Logik rein in Software implementiert ist.
Man könnte natürlich auch "einfach" einen I²C-UART-Baustein mit mehreren
UARTs verwenden, falls es sowas noch gibt.
Oder gleich einen Controller mit einer passenden Anzahl an UARTs
verwenden.
c-hater schrieb:> Klar: programmierbare Logik. CPLD/FPGA.
Sowas habe ich nicht, kann ich auch nicht mit umgehen. Kanonen auf
Spatzen. Und einen uC dazwischen setzen ... da kann man gleich 3
SoftUarts mit einem ProMini Arduino erzeugen und auf eine Hardware Uart
abbilden. Ich suchte eher was einfaches. Bisher sind 3 Reed Relais und 3
Transistoren für mich einfach.
Da ich recht neu hier bin: Ist dieses Forum moderiert? Ich wundere mich
nämlich über recht viele Unverschämtheiten und Frechheiten die
stillschweigend toleriert werden. Krankhafte Narzissten sind unter
(selbsternannten) Experten nicht selten aber in manchem Thread wundert
mich nichts mehr.
Thorsten M. schrieb:> Abgesehen davon ein Gattergrab mit (De-)Multiplexern zu erzeugen fällt> mir für die Heimlösung nur ein 3 kleine Reed Relais mit Doppel-Kontakt> zu verwenden.
Was ist an einem einzigen SO16/TTSSO16 Baustein ein Gattergrab?
https://assets.nexperia.com/documents/data-sheet/74HC_HCT139.pdf
Oder bedingt ein Opensmart UART da irgerndwelche seltsamen Logikpegel?
Thorsten M. schrieb:> hubuk schrieb:>> Was ist an einem einzigen SO16/TTSSO16 Baustein ein Gattergrab?>> Dann guck mal die Ausgänge an, die sind alle invertiert.
Nur die gerade nicht selektierten Ausgängen sind H. Der aktive Audgang
folgt ohne Änderung dem Enable-Eingang.
Thorsten M. schrieb:> ich habe 3 Smart Displays von Aliexpress
Ohne Bezeichnung oder Link kennt die natürlich keiner.
Manche Slaves kann man adressieren, d.h. es werden 9 Bits übertragen, ob
Daten oder Adresse. Alle Slaves lauschen mit und nur der adressierte
enabled seinen TXD.
1)
Die TX der Displays können schonmal alle (über Dioden+Pullup
)zusammengelegt werden und auf RX von Controller gehen. (Es wird ja nur
EIN Display jeweils antworten, nämlich jenes mit dem gerade gesprochen
wird)
2)
TX vom Controller geht dann über EINEN simplen Analog-MPX (4051/52/53)
auf die einzelnen RX der Displays.
Peter D. schrieb:> Manche Slaves kann man adressieren, d.h. es werden 9 Bits übertragen, ob> Daten oder Adresse. Alle Slaves lauschen mit und nur der adressierte> enabled seinen TXD.
So smart werden die Dinger nicht sein.
hubuk schrieb:> Nur die gerade nicht selektierten Ausgängen sind H. Der aktive Audgang> folgt ohne Änderung dem Enable-Eingang.
Ja, würde passen. Für TxD 1auf3. RxD muss auch zurückgeführt werden
3auf1. Je länger ich überlege ... glaube mit dem Arduino pro Mini lässt
sich da ganz fix was machen: 3 SoftUarts mit der Paul Stoffregen Lib und
die Master TXD/RXD. Diese Display stürzen übrigens komplett ab, wenn man
da Müll reinschickt oder eine UART Sendung durch einen zu langen
Interrupt unterbricht. Dann geht nur noch ein/aus.
hubuk schrieb:> Nur die gerade nicht selektierten Ausgängen sind H. Der aktive Audgang> folgt ohne Änderung dem Enable-Eingang.
Richtig.
Für die RX-Leitung braucht man aber auch noch was.
Dann kann man sich gleich 74xx125 oder Analogschalter anschauen.
Mit zwei Bausteinen '125, drei Steuerleitungen und drei PUs ist man
dabei.
Hermann Kokoschka schrieb:> Die TX der Displays können schonmal alle (über Dioden+Pullup> )zusammengelegt werden und auf RX von Controller gehen. (Es wird ja nur> EIN Display jeweils antworten, nämlich jenes mit dem gerade gesprochen> wird
Nein, Link kann ich nicht zeigen, Aliexpress ist hier gesperrt. Diese
Displays
werden unter OPENSMART verkauft, haben keine Adresse. Da gehen 2
Leitungen rein, RXD, TXD. Steuercodes für grafische Sachen rein, also
CIR x,y,r,EOD heisst Kreis, Parameter, End of Data. Zurück kommt ein
Steuercode für Befehl ausgeführt. Denn sendet man während einer noch
läuft schmieren die Dinger ab.
Made in China....
Thorsten M. schrieb:> Zurück kommt ein> Steuercode für Befehl ausgeführt. Denn sendet man während einer noch> läuft schmieren die Dinger ab.
Stell mein Konzept aber nicht in Frage...
Dann wartest Du eben bis die Rückmeldung kommt und schaltest den MPX
ERST DANN auf ein anderes Display, wo ist das Problem?
Von welcher Sorte Controller sollen die Displays eigentich angesteuert
werden?
Wenn es sich z.B. um ein Raspberry Pi handelt, gäbe es noch
USB-UART-Konverter mit mehreren UARTs.
Thorsten M. schrieb:> Sowas habe ich nicht, kann ich auch nicht mit umgehen. Kanonen auf> Spatzen. Und einen uC dazwischen setzen ... da kann man gleich 3> SoftUarts mit einem ProMini Arduino erzeugen
Versuch' es ;o)
Tipp: Soft-UARTs sind langsam. Schreiben geht noch ganz gut, lesen
nicht. Vor allem dann nicht, wenn auch noch mehrere Kanäle um
Aufmerksamkeit ringen, in deiner Anwendung sind das immer mindestens
zwei.
ProMini-Arduino-Hardware geht natürlich, ist eigentlich sogar schon viel
zu groß, hardwaremäßig wäre ein ATtiny24 angemessen, der kann alles
nötige, um die gewünschte Funktion sicher für Bitraten bis 115200kbps
bereitzustellen.
Was aber nicht geht: Arduino-Soft-Serial. Jedenfalls nicht, wenn mit
Bitraten >>9600 zu rechnen ist.
> Ich suchte eher was einfaches.
Boolsche Logik ist einfach. Und es spielt eigentlich keine Rolle, ob man
die mit Transistoren und Relais implementiert oder als Programm.
Jedenfalls dann nicht, wenn man die Logik verstanden hat...
Thorsten M. schrieb:> Diese> Displays> werden unter OPENSMART verkauft
Hilft auch nicht bei der Suche, gibt ja haufenweise LCDs bei Ali.
Thorsten M. schrieb:> Diese Display stürzen übrigens komplett ab, wenn man> da Müll reinschickt oder eine UART Sendung durch einen zu langen> Interrupt unterbricht.
D.h. die Leute haben keinerlei Ahnung vom Programmieren.
Warum kauft man dann solchen Scheiß.
Thorsten M. schrieb:> Ich suchte eher was einfaches. Bisher sind 3 Reed Relais und 3> Transistoren für mich einfach.
Noch 'ne Idee: Standard-CMOS 4053. Sollte auch alles nötige können.
c-hater schrieb:> Standard-CMOS 4053
DANKE !!! 3.3V brauchen zwar Level Shifter aber der Stein sollte genau
das machen. Bestelle ich gleich mal und teste den auf nem Breadboard.
Thorsten M. schrieb:> DANKE !!! 3.3V brauchen zwar Level Shifter
Nein. Standard-CMOS funktioniert i.A. bis runter auf 3V. Nur halt etwas
langsamer als bei höheren Versorgungsspannungen oder auch mit sonstigen
kleinen Einschränkungen bezüglich einiger Kennwerte. Ausnahmen
bestatigen wie immer die Regel. Der CD4053 ist aber diesbezüglich keine.
c-hater schrieb:> Ausnahmen> bestatigen wie immer die Regel. Der CD4053 ist aber diesbezüglich keine.
Erstmal auf Breadboard mit einem FG und Oszi testen. Dann Platine
machen, nicht umgekehrt. Brauche auch die CD4052B und der ist in der
Bucht nicht zu kriegen, nur noch bei Reichelt Apotheke.
Thorsten M. schrieb:> Brauche auch die CD4052B und der ist in der> Bucht nicht zu kriegen, nur noch bei Reichelt Apotheke.
Warum nicht den 74HC4052?
Der ist niederohmiger, günstiger und läuft an 2..10V.
Die Hochvolt CMOS sind bei 5V schon 1k hochohmig, für 3V habe ich keine
Angabe gefunden.
c-hater schrieb:> Noch 'ne Idee: Standard-CMOS 4053. Sollte auch alles nötige können.
Wie der TO in dem Screenshot bereits eingekreist hat: der CD4052 ist
noch besser geeignet.
Am TX-Pfad-Ausgang empfehle ich einen Pullup. Offen sollte der RX-Input
am Empfänger ja nicht sein, sondern in Ruhe auf HIGH.
Du hast vollkommen recht, den 4052/53 hatte noch niemand zuvor genannt,
jedoch hatte ich allgemein schon mal einen Analogschalter erwähnt.
Thorsten M. schrieb:> Hallo,> ich habe 3 Smart Displays von Aliexpress, die über eine Opensmart UART> Schnittstelle angesteuert werden. ...> Oder gib es da vielleicht was elektronisches?>
Dein Nick suggeriert eine Controllerfamilie, deren Peripherie
üblicherwise CS für SPI (UART) unterstützt. Die Displays typischerweise
auch. Heißt dort Evtl anders.
Wo ist jetzt noch mal das Problem?
Peter D. schrieb:> Warum nicht den 74HC4052?
Ich nehme diese Lösung und damit soll es auch gut sein. Die Displays
sind nahezu statisch in ihren Anzeigen, da sollte das reichen.
Cortex User schrieb:> Ja, genau die. Vergiss das mit der Firmware.
Ich gebe ja zu, dass das sehr hässlich ist danach zu suchen.
Aber im Grunde genommen ist das Ding ein Arduino mit M328PB und einem
ILI9325 Display, zum ansteuern des Displays wird wohl die Adafruit GFX
Library verwendet.
https://www.hackster.io/frankiemaker/simple-easy-to-use-serial-tft-lcd-5196cf
Und da man auch den Schaltplan bekommt, halte ich es für sehr
unwahrscheinlich, dass da noch niemand seit 2018 eine eigene Software
für gemacht und ins Netz gestellt hat.
Dieser Frankie Chu ist auch immer noch aktiv, die letzten Videos hat er
vor 6 Tagen auf seinem Youtube Kanal veröffentlicht.
HildeK schrieb: um 14:40
> Du hast vollkommen recht, den 4052/53 hatte noch niemand zuvor genannt,Hermann Kokoschka schrieb:um 10:50
> TX vom Controller geht dann über EINEN simplen Analog-MPX (4051/52/53)
Thorsten M. schrieb:> Wie steuere ich mit einem uC Ausgang 3 Displays nacheinander an zur> Darstellung von Messkurven, die TXD und RxD benötigen, ohne dass sie> sich logisch und elektrisch in die Quere kommen?
Gar nicht. Man könnte mit einem Analog-Multiplexer zwar die Leitungen
RxD und TxD von deinem µC auf verschiedene Kabel zu verschiedenen
Displays aufschalten und dorthin senden (und nachher woanders
draufschalten), aber was ist mit den Empfangsdaten? Die kommen
asynchron herein und wandern unbemerkt ins Nirwana, wenn der
Multiplexer auf einem anderen Kabel steht. Verodern geht auch nicht,
denn dann kommen sich die Kanäle gegenseitig ins Gehege.
Das Ganze ist also nicht wirklich durchdacht.
W.S.
W.S. schrieb:> Verodern geht auch nicht, denn dann kommen sich die Kanäle gegenseitig ins
Gehege.... aber was ist mit den Empfangsdaten?
Es antwortet ja NUR das angesprochene Display, keines sendet "initiativ"
Hermann Kokoschka schrieb:> Dann wartest Du eben bis die Rückmeldung kommt und schaltest den MPX> ERST DANN auf ein anderes Display, wo ist das Problem?W.S. schrieb:> Das Ganze ist also nicht wirklich durchdacht.
HIER ist es völlig durchdacht, trivial+üblich,
gelöst innert Stunden ab Frage.
Wildester Kokolores der üblichen Theoretiker.
Dies "grundsätzliche-nicht-vorab-lesen" bleibt ägerlich.
Hermann Kokoschka schrieb:> Es antwortet ja NUR das angesprochene Display, keines sendet "initiativ"
So isses.
Ich hab am CAN-Bus Slaves, die automatisch Statusmeldungen verschicken
können. Aber das muß der Master nach dem Reset erstmal initiieren und
ist bei CAN ja überhaupt kein Problem.
Bei UART basierten Bussen ist sowas aber äußerst unüblich.
Cortex User schrieb:> Ja, genau die. Vergiss das mit der Firmware. Den kann man zwar neu> flaschen aber nix gefunden.
Hast du denn gefunden, welche Auflösung die haben ? ;-)
> 2 Displays deswegen schon gebricked.
Dann hast du ja nur noch eins. Vielleicht ist das ja auch ein
himmlisches Zeichen, denn zur Darstellung von Messkurven braucht man
viel Geduld oder schnellere Displays mit SPI-Ansteuerung.
Wenn 3 x Relais für Dich eine gangbare Lösung sind, dann nimm sie.
Thorsten M. schrieb:> Da ich recht neu hier bin: Ist dieses Forum moderiert? Ich wundere mich> nämlich über recht viele Unverschämtheiten und Frechheiten die> stillschweigend toleriert werden.
Die Zeit bleibt stehen und hier ist immer 1. April.
W.S. schrieb:> Gar nicht. Man könnte mit einem Analog-Multiplexer zwar die Leitungen> RxD und TxD von deinem µC auf verschiedene Kabel zu verschiedenen> Displays aufschalten und dorthin senden (und nachher woanders> draufschalten), aber was ist mit den Empfangsdaten? Die kommen> asynchron herein und wandern unbemerkt ins Nirwana, wenn der> Multiplexer auf einem anderen Kabel steht.
Natürlich sollte das verwendete Protokoll zu solchen Konstrukten passen.
Wenn bidirektional, dann sollte es idealerweise ein
Challenge-Response-Protokoll sein, d.h.: der "Slave" äußert sich
ausschließlich als Reaktion auf eine Anfrage des "Master".
Und wie der Zufall will, ist sowas alles andere als unüblich, sondern im
Gegenteil sogar extrem verbreitet.
Aber es gibt sogar durchaus auch Anwendungen, bei denen nicht einmal ein
Challenge-Response-Protokoll zwingend notwendig ist, um eine im Sinne
der Anwendung funktionierende Lösung zu erhalten. Nehmen wir mal das
Beispiel einer Waage in einer "Anlage". Das Protokoll der Waage sieht
vor, ständig "von sich aus" den aktuellen Wägewert rauszupusten und
nicht änderbar. Ist das dann zwingend tödlich? Nein, natürlich nicht.
Der Controller weiss aus anderen Quellen, ob überhaupt was auf der Waage
ist und kann natürlich getrost die Datensätze verpassen, in denen diese
stumpfblöd irgendwas um die 0,0g meldet. Wenn der Controller weiß, jetzt
müsste was tatsächlich interessantes kommen, dann schaltet er auf den
Waagen-Kanal und synchronisiert sich auf den Datenframe der Waage und
fertig.
Ja, man muss schon ein wenig programmieren können, um das Protokoll
fehlertrolerant zu empfangen, aber für richtige Programmierer ist so
etwas natürlich keine Herausforderung. Für dich hingegen wohl schon...
Thorsten M. schrieb:> Abgesehen davon ein Gattergrab mit (De-)Multiplexern zu erzeugen
Du brauchst nur Treiber mit Enable-Eingang, die bekommen alle die
TxDaten, aber nur einer ist eingeschaltet.
Georg