-         

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 38

Thema: Sport-Anzeigetafel über USB

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2010
    Ort
    Nähe Wien
    Alter
    27
    Beiträge
    108

    Sport-Anzeigetafel über USB

    Anzeige

    Hallo!

    Für eine Sport-Organisation möchte ich eine (LED-)Anzeigetafel zum darstellen von Zeit und Spielstand bauen.
    Dazu habe ich mir bereits ein paar Gedanken gemacht, welche ich gerne mit euch diskutieren würde. Erfahrungsaustausch regt ja bekanntlich zu neuen Ideen an.

    Hier einmal die Grundvorraussetzungen der Aufgabenstellung:
    2 größere Anzeigen für die jeweiligen Punktestände, 1 stellig, also größeres 7-Segment-Element
    1 Anzeige für die Spielzeit, 4 Stellig (Minuten, Sekunden), also 4 kleinere 7-Segment-Elemente
    1 Anzeige für die verbleibende Pausenzeit, 3 Stellig (Minuten, Sekunden), also 3 kleinere 7-Segment-Elemente
    Witterungsbeständig, also Outdoor-Fähig, wobei die Anzeige jeden Abend wieder weggeräumt wird, also keine Problematik wie Tau oder ähnliches
    Lesbarkeit (~40m Entfernung oder mehr)
    Anschluss über USB per Laptop
    Preis - möglichst günstig versteht sich, fertige Lösungen sind leider nicht leistbar
    optional: Schriftfeld über dem Punktestand, um anzuzeigen wer gerade spielt

    Die Konstruktion:
    1. Aufbau:
    Die 7-Segment-Anzeigen herzustellen ist jetzt nicht das Problem, da habe ich mir gedacht die werde ich jede Anzeige für sich, modular (möglichst wasserfest) fertigen, so das man sie nacher in die "Tafel" nur noch einsetzen muss. Dazu möchte ich mehrere LEDs seriell zusammenschalten, wodurch die "Linien" der Segmente entstehen. Diese Linien dann 7-Fach in ein Gehäuse einbauen, die 7 Datenleitungen unten per 8-Pol-Kabel hinausführen und den 8. Pol des Kabels kann man dann entweder direkt die Spannung anhängen oder ihn als Pin zum Multiplexen rauslassen.

    Vorteil von den Modulen wäre halt, das wenn (relativ spontan) eines durch defekt ausfällt, man nur das alte ausklipst, das neue einbaut und es läuft wieder.

    Diese Module sollen dann eben in die Anzeigetafel von hinten eignesetzt werden können, dazu möchte ich davor eine Plexiglas-Platte zum Regenschutz anbringen. Ist das einfach so möglich, zwecks Hitzeentwicklung der LEDs? Sollte ich hier Abstand lassen? Wenn ja wieviel?

    2. Die Ansteuerung der Segmente:
    Da ich ja nur 9 Segmente insgesamt betreiben muss, weiß ich nicht so recht welche Ansteuerung hier sinnvoller ist. Im Mikrokontroller-Forum habe ich bereits über Multiplexen nachgelesen, hat das hier Sinn? Hier sollte ja der Programmier-Aufwand deutlich höher sein als bei der "direkten" ansteuerung über dne Controller, oder?
    Andererseits bräuchte ich für die direkte Ansteuerung über die Controller-Pins auch wieder 63 Ausgänge am Controller + die Eingänge die ich für den USB-Anschluss benötige. Gibt es überhaupt einen AtMega der so eine Anzahl von Pins beweltigen kann (zu einem vernünftigen Preis)?

    Habt ihr hier vielleicht alternative Ideen zur Ansteuerung? Sie sollten aber bitte möglichst simpel gehalten sein, da ich extrem Aufwändige Schaltungen so gut wie möglich vermeiden möchte. (Die Anzeige soll im Notfall auch wärend eines laufenden Turniers schnell zu reparieren sein.)

    3. Ansteuerung über USB:
    Da die zu Grunde liegende Software, welche z.B. den Spielstand ermittelt, über einen Laptop läuft, soll die Anzeigetafel, bzw. der Controller auch mit diesem Laptop verbunden werden, also über USB. Hier bin ich derzeit noch komplett Ratlos, in welcher Form ich die Daten überhaupt zum µC übertragen kann, bzw. wie ich überhaup die Verbindung zwischen Laptop und µC über USB realisieren kann. Hat dazu schon jemand Erfahungswerte gesammelt?
    Dazu weiß ich bisher leider nur das Grundwissen zum Programmieren von µCs, also wie man den Programmer anschließt. Jetzt soll das ganze aber (wenn möglich) in Echtzeit passieren, da die Anzeigetafel ja eine mitlaufende Uhr enthalten soll. Es sollen also jede Sekunde die Spielzeit-Daten an die Tafel übermittelt werden, der Punktestand kommt jedoch nur dann wen ner sich geändert hat, was so ca. alle 1-2 Minuten der Fall ein sollte.

    Soweit, sogut...
    Ich bitte euch also jetzt um Hilfe bezüglich den oben genannten Fragen, im Speziellen also zum Thema "Multiplexen ja/nein oder, gibt es sinnvolle Alternativen", sowie zur Ansteuerung über USB (in Echtzeit, oder zumindest möglichst nahe daran).

    Danke im Vorhinein!
    Liebe Grüße,
    Euer ijjiij

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von Thegon
    Registriert seit
    21.01.2011
    Beiträge
    562
    Ich würde auf jeden Fall Multiplexen, das geht mit 7 - Segment - Anzeigen eigentlich sehr gut bzw. ich glaube nicht, das das anders gemacht wird.
    Auch der Programmieraufwand ist nicht wirklich groß, oder? Also einfach erste Zahl auf erstes Segment, dann das Segment wechseln, nächste Zahl auf nächstem Segment und so weiter.

    Einzig aufpassen sollte man, dass jedes Segment genau gleich lange eingeschalten ist, denn wenn eines länger an ist als die anderen, dann erscheint es heller, und das sieht irgentwie ungut aus.
    Villeicht realisierung per Timer - Interrupt oder so.

    Mfg Thegon

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Da das Display im Outdoor Einsatz sein wird würde ich eine statische Ansteuerung vorziehen, da Du da jedes Lumen brauchst das die Anzeige hergibt.
    Ein Display im Multiplexbetrieb kommt üblicherweise nicht an die Helligkeit eines statisch betriebenen heran.
    Dazu würde ich pro Segment ein Schieberegister mit Latch und einem nachgeschalteten Segmenttreiber z.B. ULN2803 verwenden.
    Du kriegst dann 4 Steuerleitungen DATA, CLOCK, RESET und STROBE an den Controller.
    DATA und Clock sind die Daten und Takt Leitung für die serielle Ansteuerung.
    Mit RESET bringst du das Schieberegister beim Controllerstart auf definierte Ausgangszustände - Kannst aber auch gleich bei Controllerstart gültige Daten zum Display überspielen. Mit Strobe wird der eingetaktete Datenstrom an die Display Treiber ausgegeben.
    Das schafft dann sogar ein ATMEGA 8. Ich würd aber wegen eventuell künftiger Optionen einen ATMEGA 16 verwenden.
    Von beiden Chips kannst Du zum Einlesen der Daten in das Schieberegister sogar noch die Hardware SPI verwenden.

    Die einzelnen Digits können dann per Wannenstecker relativ einfach miteinander verbunden werden.
    Für die Stromversorgung würde ich dann aber Schraubklemmen verwenden Stromstärke ! ). Dadurch wären dann auch die Segmente sehr schnell bei einem Fehler zu wechseln.

    Für die Uhr würde ich eine DCF 77 Lösung vorziehen, das Stellen zur Sommerzeit / Winterzeit entfällt dann schon mal.
    Zusätzlich kannst Du einen REAL TIME CLock Chip einsetzen, der als Basis für den Countdown Timer genutzt werden kann.
    Diese RTC Chips gibts auch in I²C, welches der Controller als "TWI" wiederum in Hardware unterstützt.

    Die teueren Komponenten sind dabei die Displays, die Platinen, der DCF Empfänger, der mit ca. 12€ einschlägt und der FT232 der um die 6,-€ kostet.
    Zusätzlich noch ein 50W Netzteil das so um die 18,€ kostet.
    Die teuerste Komponente könnte das Gehäuse werden. Es sei denn Du hättest da Beziehungen?!

    Als Stromversorgung würde ich ein fertiges Schaltnetzteil verwenden, dann bist Du auch Elektrisch auf der sicheren Seite.
    Vom Strom her würde ich auf einem maximale Stromaufnahme von ca. 5A tippen. 60mA pro Segment * 7 Segmente * 9 Stellen=~3,8A + ein bischen Reserve.

    Für die Anbindung an den PC würde ich einen FT232RL verwenden. Als Bussystem zum Display ein bidirektionales RS485 mit SN75176 Treibern.
    Diesen Bus deshalb, weil damit große Reichweiten erreichbar sind ( max. 1km ). Also ein Kabel mir 2x2 Drähten. Netzwerkkabel wär auch geeignet.

    Übrigends gibts bei Reichelt und Conrad 10cm große Siebensegment Anzeigen für bezahlbares Geld.
    Vieleicht nicht für die Hauptanzeige, aber für die "Nebenanzeigen" eine Alternative?

    Als Preis würde ich mal gut 200,€ über den Daumen, ohne Gehäuse veranschlagen.

    Auf der PC Seite kannst Du ein FT232 TTL Fertigmodul von ELEKTOR verwenden und diesem dann 2* SN75176 nachschalten. Beides in ein SOAP Gehäuse eingebaut und die PC Seite ist fertig.

    Dann bräuchtest Du noch jemanden, der Dir für den PC ein Programm zur Ansteuerung des Displays schreibt. Ich meine mit Visual Basic sollte das gehen, auch wenn Ich da keine Ahnung von hab.
    Mit Hyper Terminal gings zwar auch ist aber nicht besonders Chic.

    Eventuell gönnst Du Dir auch eine "Fernsteuerung" mit einem eigenen Controller und kleine Siebensegmentanzeigen ?!
    Geändert von wkrug (28.03.2012 um 16:24 Uhr)

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2010
    Ort
    Nähe Wien
    Alter
    27
    Beiträge
    108
    Danke wkrug für deine ausführliche Antwort!

    Leider ist mein Elektronik-Wissen auf dem Gebiet noch etwas eingeschränkt...

    Dazu würde ich pro Segment ein Schieberegister mit Latch und einem nachgeschalteten Segmenttreiber z.B. ULN2803 verwenden.
    Könntest du mir diesen Satz eventuell noch ein wenig ausführlicher machen?
    Wie funktioniert der ULN2803? Soweit ich das jetzt verstanden habe, braucht er ja auch 7 Input-Leitungen für 7 Outputs. Wo liegt dann der Vorteil? Bzw. was machen die Überhaupt? Kurz gefragt: wofür brauch ich die?

    Ein Schieberegister macht mir dann wohl aus 4 Datenströmen 7-8 Stück davon, wenn ich das richtig verstanden habe. Dadurch würde ich dann also von 9*7= 63 Datenleitungen (direktbetrieb) auf 9*4= 36 Dateinleitungen mit Schieberegistern kommen. Stimmt das soweit?
    Der Vorteil hiervon ist mir dann natürlich ersichtlich.
    Aber mit dem Begriff "Latch" komm ich dann auch schon wieder nicht zurecht. Hier mcht mich Google aber auch nicht wirklich schlauer.

    Mit Strobe wird der eingetaktete Datenstrom an die Display Treiber ausgegeben. Das schafft dann sogar ein ATMEGA 8.
    Ist dein Aufbau dann also:
    PC -> Schieberegister -> AtMega -> Display?
    oder
    PC -> AtMega -> Schieberegister -> Display?

    Nicht das hier dann jetzt ein Misverständnis auftritt. Ich schätze mal aufgrund deiner weiteren Ausführungen meinst du die erste Variante. Du meintest ja es kommen nur 4 Letigungen vom PC zur "Anzeige". Richtig?


    Für die Uhr würde ich eine DCF 77 Lösung vorziehen, das Stellen zur Sommerzeit / Winterzeit entfällt dann schon mal.
    Ich glaub da haben wir uns schon wieder Missverstanden. Ich will nicht die Aktuelle Zeit anzeigen, sondern ledigleich auf der einen "Zeit-Anzeige" einen 15 Minuten Countdown (der dann nach jedem Punkt kurz unterbrochen wird) und auf der anderen "Zeit-Anzeige" einen 1:30 Countdown. Da hier aber sowieso im Hitnergrund eine Software am Laptop mitlaufen muss, können hier die kompletten Anzeige-Daten (also 15:00, 14:59, 14:58 etc.) auch einfach dauernd vom Laptop gesendet werden. Ich muss hier keine extra Uhr verbauen.

    Als Bussystem zum Display ein bidirektionales RS485 mit SN75176 Treibern. Diesen Bus deshalb, weil damit große Reichweiten erreichbar sind ( max. 1km ). Also ein Kabel mir 2x2 Drähten. Netzwerkkabel wär auch geeignet.
    Reichweiten in dieser Größenordnung sind für unsere Zwecke jetzt mal Irrelevant, es hier eher um 5-10 Meter. Hat der von dir vorgeschlagene Bus bei diesen geringeren Entfernungen irgendeinen Nachteil? Braucht man bei solchen Leitungslängen überhaupt einen Bus?



    Dann bräuchtest Du noch jemanden, der Dir für den PC ein Programm zur Ansteuerung des Displays schreibt. Ich meine mit Visual Basic sollte das gehen, auch wenn Ich da keine Ahnung von hab. Mit Hyper Terminal gings zwar auch ist aber nicht besonders Chic.
    Für die direkte Ansteuerung von der Anzeigetafel bin ich dann nur noch in beratender Funktion beteiligt. Hier werden sich die beiden Informatiker, die das gesamte zugrunde liegende Softwarepaket (Stoppuhr, Sound-System, etc.) entwickelt haben das übernehmen. Betrifft mich also nur soweit, das ich ihnen sagen muss: Wenn du auf die Leitung dieses Signal schickst, wird jenes passieren.


    Nochmals Danke für deine schnelle Antwort!

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Ok versuchen wirs mal Blockweise.
    1. Ein Schieberegister ist im Endeffekt ein kleiner Speicher.
    Du legst ein Bit an den seriellen Eingang des Schieberegisters und machst einen Impuls auf die Clock Leitung.
    Dadurch wird dieses Bit in das Schieberegister eingelesen. Nun Legst Du ein weiteres Bit an den Eingang und machst einen weiteren Schiebeimpuls auf der Clock Leitung. Dadurch wird der erste Impuls einen Platz weitergeschoben und das neue Bit befindet sich nun auf dem Platz des Ersten.
    So geht das nun weiter bis z.B. 8 Bit in dieses Schieberegister eingelesen sind.
    Dann gibts ein Carry Out, auf den die Bits die in diesem Schieberegister keinen Platz mehr haben weitergeschoben werden. An diesen Carry Out hängt dann das nächste Schieberegister und so fort. Im Prinzip funktioniert das wie eine Eimerkette bei der Feuerwehr.
    Für diese Funktion bräuchtest Du im Prinzip 2 Ausgänge des Microcontrollers für alle deine Segmente.

    Da es aber zu einem Flackern in der Anzeige führen würde, sobald man eine neue Bitkombination in das Schieberegister einlesen will nimmt man eine Schieberegister mit Latch.
    Dieses Latch ist im Prinzip ein Zwischenspeicher. Das schieben in so einem IC findet Quasi im Hintergrund statt.
    Wird nun ein Latch Impuls gegeben, dann wird der aktuelle Stand des Schieberegisters in diesen Zwischenspeicher eingelesen und so lange beibehalten, bis ein neuer Latch Impuls kommt, der Chip restettet wird, oder der Strom abgeschaltet wird.
    Dieses Latch ist direkt mit den Ausgängen so eines Schieberegisters verbunden.
    Diesen Latch Impuls müsstest Du vom Controller ausgeben, wenn alle Bits für die Anzeige in das Schieberegister eingelesen wurden. Deshalb brauchst Du da noch einen Controller Pin.
    Da dieses Schieberegister günstigerweise mit 5V Läuft und auch nur ca. 15mA Strom an seinen Ausgänge liefern kann, ist es sinnvoll einen Treiber nachzuschalten.
    Am einfachsten wär da ein kleiner Transistor wie der FET BS170. Da Du aber sehr viele von diesen Transistoren + Beschaltung brauchen wirst, nimmt man dafür ein sog. Darlington Array. In diesem ULN2803 befinden sich 8 Darlingten Transistoren inklusive der nötigen Beschaltung, inklusive je einer Freilaifdiode, wenn man ein Relais anschlissen wollte.
    Du brauchst also für jedes Segment ein Schieberegister und ein Darlington Array + 8 Strombegrenzungs Widerstände für die LED's.
    Der vierte Anschlußpin an den Controller für die Anzeigesteuerung wäre eine Reset Leitung. Schaltet man diese Leitung, die mit allen Reset Eingängen der Schieberegister verbunden sein muß, aktiv, werden die Schieberegister zurückgesetzt. Wie schon geschrieben ist das nicht unbedingt nötig, weil man ja auch gleich beim Start des Controllers gültige Werte in die Schieberegister einschreiben kann, aber es würde den Controllerstart doch vereinfachen, wenn das nicht nötig wäre.
    Das wären dann die Vier Steuerleitungen vom Controller zur Anzeige.

    Eine software Multiplexansteuerung ist schon ein anderes Kaliber und in meinen Augen für so viele Stellen nicht sinnvoll.
    Jede Stelle würde ja dann nur für 1/9 der Zeit bestromt und dadurch sehr dunkel erscheinen.

    2. Zum Block Zeit:
    Ich hatte das so verstanden, das immer die aktuelle Uhrzeit und zusätzlich! ein Countdown Timer angezeigt werden soll.
    Wenn da nur ein Countdown passieren soll ist DCF natürlich Käse.

    Trotzdem brauchst Du eventuell eine genaue Zeitbasis. Entweder Du nimmst einen Uhrenquarz und steuerst damit einen Timer im Controller an, oder Du machst den Controllerquarz abgleichbar ( Trimmkondensator ) damit auch nach einer Viertelstunde deine Zeitanzeige noch stimmt.

    3. Leitungslänge:
    Bei 5 bis 10m geht das auch noch ganz normal über die serielle Schnittstelle des PC. Allerdings brauchst Du dann auf der Controllerseite wieder einen Pegelwandler, weil der PC Spannungen von +/-12V für die einsen und nullen zum Controller sendet. Dafür gibts aber den Chip MAX232.
    Wenn Du ohnehin nur einen PC mit USB Anschlüssen hast, bräuchtest Du einen USB zu seriell Konverter - Die zugegeben relativ günstig sind.
    Auf der Anzeigen Seite ändert sich da aber nichts. Trotzdem ist da ein MAX 232 nötig.

    Bei meinem Vorschlag würde auf der PC Seite ein FT232 USB nach seriell Wandler verwendet. Dieser gibt allerdings nur TTL Pegel an seinem Ausgang raus.
    Diese TTL Pegel ( =0V /5V ) können aber auch bei Leitungslängen von 5m Probleme machen.
    Deshalb der Vorschlag da für die Sende und auch die Empfangsrichtung - Falls der Controller auch mal was zum PC senden soll - Je einen RS485 Pegelwandler zu verwenden. Der benutzt 2 Leitungen und wechselt die Polarität auf der Leitung je nachdem ob an seinem Eingang eine 1 oder eine 0 anliegt.
    Diese Pegelwandler müssen dann natürlich auch auf der Controllerseite eingebaut werden. Da es sich bei RS485 um ein symetrisches Signal handelt, geht die Übertragung sehr weit und Gleichtaktstörungen spielen auch keine Rolle.

    Eine weitere Lösungsmöglichkeit wäre eine Funklösung via Bluetooth. Google mal nach den Chip BTM222.
    Oder, als 868MHz Lösung, nach Wi.232EUR .

    Google mal ein bischen rum und mach ein wenig Grundlagenforschung.
    Wenn dann spezielle Probleme auftauchen, oder was unklar ist kannst Du dann ja konkret fragen.
    Alles Mundgerecht vorkauen werd ich Dir nicht!

    Wenn Du noch nie was mit so einem Controller selber geproggt hast, wirst Du das nach diesem Projekt können!
    Geändert von wkrug (29.03.2012 um 16:53 Uhr)

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2010
    Ort
    Nähe Wien
    Alter
    27
    Beiträge
    108
    Vielen Dank für deine Ausführungen!
    Jetzt bin ich auf jeden Fall um einiges schlauer!

    Ich werde mich die Tage mal an die Stückliste, Bestückungspläne, Layouts und Schaltpläne setzen.

    Ich habe jetzt nur noch eine Frage:

    Wenn ich so ein FT232RL-Modul (z.B. http://www.elektor.de/products/kits-....1913324.lynkx) verwenden möchte, wie gestaltet sich dann die Kommunikation zwischen dem Modul und dem AtMega16?
    Werde hier leider nicht wirklich schlau aus dem Datenblatt und konnte auch bei Google nichts passendes finden.
    Die Kommunikation muss hier nur vom PC zum AtMega16 erfolgen, nicht in die Gegenrichtung! Das sollte die Schaltung ja noch weiter vereinfachen
    Geändert von ijjiij (29.03.2012 um 18:53 Uhr)

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Wenn ich so ein FT232RL-Modul (z.B. http://www.elektor.de/products/kits-....1913324.lynkx) verwenden möchte, wie gestaltet sich dann die Kommunikation zwischen dem Modul und dem AtMega16?
    Eigentlich sehr einfach.
    Für den FT232 Chip gibts den sog. VCP Treiber ( Virtual Com Port ), den ich für dieses Projekt verwenden würde.
    Downloaden kannst Du diesen Treiber bei Chiphersteller ftdi ( http://www.ftdichip.com/ ).
    Sobald Du dieses Bord an deinen PC ansteckst wird eine serielle Schnittstelle erkannt, die Du wie gewohnt nutzen kannst. Also über Terminal Programme ansteuern, oder in eigene Software einbinden.

    Wie gesagt gibt dieser ftdi Chip nur TTL Pegel an seinen Ausgängen raus. Diese sind aber für eine Übertragung über längere Leitungen denkbar ungeeignet.
    Also setzt Du vor den RxD Eingang des FT232R einen RS485 Bustreiber ( =SN75176 ) der dann über 2 verdrillte Drähte mit einem RS485 Bustreiber in deiner Uhr verbunden wird. Dieser Bustreiber wird dann mit dem Ausgang TxD deines Controllers in der Uhr verbunden.
    Für den Weg vom PC zur Uhr wird das genauso gemacht. Also FT232R TxD -> SN75176 Bustreiber -> verdrillte Doppelader -> SN75176 Bustreiber -> Controller RxD Pin.
    Dann kannst Du im Controller den USART benutzen, was die Komunikation enorm vereinfacht.
    Guck mal hier: http://de.wikipedia.org/wiki/RS485
    Da Du für diese Lösung ohnehin 2 verdrillte Adern benötigst ist es sinnvoll ein Kabel mit mindestens 2 verdrillten Doppeladern zu nehmen.
    Es ginge auch mit nur einer verdrillten Doppelader, aber dann wäre nur Halb Duplex möglich und Du müsstest Dir ein Protokoll Überlegen, das festlegt, wer jetzt Sender und wer Empfänger ist. Da es hier nur um ein paar Meter Kabel geht würd ich mir das nicht antun.

    In einem Netzwerk - Patchkabel sind bereits 4 verdrillte Doppeladern eingebaut, der Wellenwiderstand passt und das Kabel ist nicht teuer.
    Das würde ich für die Verbindung vom PC zum Display verwenden.
    Bei der Wahl der Steckverbinder hast Du freie Auswahl. Fertige RJ45 Kabel wären eine Lösung, aber nicht besondes stabil. 5polige XLR Steckverbinder wären auch eine Lösung.
    Noch was - Eine RS485 Verbindung mus an beiden Leitungsenden abgeschlossen ( = Terminiert ) werden. Das bedeutet auf der jeweiligen Sender und Empfängerseite muß ein Widerstand von 120Ohm eingebaut werden. Im Layout kannst Du ja schon mal einen per Jumper abschaltbaren Widerstand vorsehen.

    Bei der Wahl der zu übertragenden Daten bist Du frei. Ich würde mir da ein ASCII Protokoll ausdenken, da das bei einem PC relativ einfach zu handeln ist.
    Eine Möglichkeit wäre ein Steuerzeichen einzuführen und dann den Befehl mit den Parametern zu versenden.
    Das Ende so einer seriellen Übertragung macht man oft mit den Steuerzeichen <CR> <LF>, also Carriage Return und Line Feed. Achtung hier sind nicht die Buchstaben gemeint, sindern die Hex Codes 10 und 13! Ein Terminalprgramm generiert diese Steuerzeichen automatisch bei der Betätigung der Return Taste!
    Zudem wäre die Datenübertragung dann auch mit einem Terminalprogramm relativ einfach zu debuggen.
    Beispiel für Eine Datenübertragung:
    $S;1:1<CR><LF>
    $ Wäre dabei ein Marker für einen Kommandoanfang.
    S Wäre der Kenner für Spielstand
    ; Wäre ein Trenner der Daten von den Steuerzeichen
    1:1 Wäre der zu übertragende Spielstand.
    <CR><LF> Wäre das erwähnte Zeilenende.

    Als Bestätigung könnte der Controller dann
    @S;1:1<CR><LF> senden. Dadurch wäre dann auch die Datenübertragung verifiziert und ein hardwareloop würde auch erkannt werden.

    Für andere Daten kannst Du dann andere Steuerzeichen verwenden.
    $C;12:10<CR><LF> wäre dann eine Countdown Zeit von 12min 10 sek.
    Der Controller könnte das dann mit
    @C;12:10<CR><LF> bestätigen.

    Wie gesagt ist nur ein Gedankenanstoss, kannst Dir ja auch dein ganz Eigenes Protokoll zusammen basteln.

    Denkbar wäre auch ein Protokoll, das nur die Werte für die 9 einzelnen Segmente überträgt.
    Also z.B.
    $0;8;3;4;0,3,2,1,1<CR><LF>
    Dann läge die Anzeigensteuerung allein im PC.

    Eine weitere Idee wäre eine kleine Controllerbox zu basteln, die die Rolle des PC übernimmt und du Somit unabhängig von einem PC würdest. ATMEGA 16 mit 2 RS485 Treibern, Display, ein paar Tasten und ein Steckernetzteil sollten genügen. - Wie gesagt Du hast da ja alle Möglichkeiten!

    Die Kommunikation muss hier nur vom PC zum AtMega16 erfolgen, nicht in die Gegenrichtung! Das sollte die Schaltung ja noch weiter vereinfachen
    Würd ich nicht machen, weil Du dann auf der PC Seite nie Gewissheit hast, ob die Uhr die Daten jemals Empfangen, bzw. Fehlerfrei Empfangen hat.
    Im Prinzip würdest Du Dir eine Doppelader und 2 Bustreiber sparen.
    Kabel wäre wegen der mechanischen Stabilität ohnehin Sinnvoll. So ein Bustreiber kostet bei Re.... 0,26€ also Peanuts bei so einem Projekt!
    Geändert von wkrug (30.03.2012 um 10:07 Uhr)

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.12.2010
    Ort
    Nähe Wien
    Alter
    27
    Beiträge
    108
    Nochmal vielen Dank für deine Ausführungen!
    Langsam bekomm ich wirklich Durchblick durch diese ganzen (für mich neuen) Bauteile.

    Rein hypothetischer Fall jetzt, ich würde die Möglichkeit vorsehen wollen, eventuell mehrere solche "Anzeigetafeln" (in verschiedenen Größen, aber nach gleichem Konzept aufgebaut) an verschiedenen Orten des Sportplatzes platzieren wollen.
    In dem Fall würde ich dann wohl an den PC das FT232 Modul anschließen, direkt dahinter dann gleich einen Controller, der dann ja 3+9 Datenströme (3 für die Schieberegler + 9 für den Seriellen Input 1 oder 0) ausgeben müsste. Die 12 Datenströme könnte ich dann ja eigentlich "splitten", also einfach einen "Verteiler" dazwischenschalten und alle 12 Signale auf z.B. 3 Wannenbuchsen ausgeben, über die ich dann 3 Displays anhängen könnte. Richtig soweit?
    In dem Fall müsste ich dann hier, also vor den Wannenbuchsen bzw. in den Displays noch 12 Bus-Bauteile verbauen, richtig?

    Das ganze ist jetzt nur ein hypothetischer Fall...
    So würden zwar die Kosten für die "Controller-Einheit" etwas steigen, dafür die Kosten für die einzellnen Displays sinken, wodurch die relativen Kosten bei höheren Anzahlen von Displays aber sinken würden.
    Dadurch hätten wir (also der Veranstalter) doch noch ganz einfach die Möglichkeit, weiter Displays z.B. in der Umkleide aufzuhängen, damit jeder den Spielstand immer im Blick hat.

    Ist das so machbar?
    Man müsste halt viel mehr BUS-Bausteine verwenden als wenn "nur" die Übertragung vom PC zum Display verstärkt wird. Dadurch würden halt auch viel mehr Kabel verlegt werden müssen.
    Steht hier der Mehraufwand in irgendeiner Relation zum Nutzen?
    Oder wäre es sinnvoller, das Signal vom FT232 zu "splitten" und die Controller in den Displays zu belassen? Dann hätte ich halt wieder nur 3 * 2 Duplexen zum verstärken mit BUS, aber auf der anderen Seite wieder Mehrkosten bei jedem weiteren Display durch die zusätzlichen Controller, die in jedem Display stecken würden. Außerdem wären dann ja 3 Controller im Einsatz, und damit bestünde die (wenn auch sehr kleine) Chanze, das die 3 Displays auf unterschiedliche Werte kommen? Zumindest für Bruchteile von Sekunden.

    Hoffe das hab ich jetzt halbwegs verständlich Formuliert...

    LG
    ijjiij

    PS:
    Das von dir Angesprochene System würde dann mit 3 Displays iwie so aussehen:
    Anhang 21992
    richtig?

    Würde das denn auf diese Weise funktionieren? (Versuche mich da gerade etwas Weiterzubilden )
    Geändert von ijjiij (30.03.2012 um 13:16 Uhr)

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    1.892
    Einen eigenen Steuercontroller würde ich in jeder Uhr vorsehen.
    Das mit den Schiebimpulsen über ein längeres Kabel halte ich nicht für eine gute Idee.

    Es geht Busmässig sogar noch doller!
    RS 485 muss an den beiden Enden! terminiert werden.
    Die Treiber als solches sind aber so ausgelegt, das bis zu 32! Empfänger an eine Leitung angeschlossen werden dürfen.
    Das bedeutet, Du kannst von Jeder Uhr zur nächsten weiter gehen und nur bei der letzten im Bus kommt ein Abschlußwiderstand rein!

    Allerdings wird dann die Quittung über einfaches Wiederholen der Nachrichten vom Controller zum PC nicht mehr funktionieren.
    Da dann ja mehrere Ausgänge auf 2 Drähten vorhanden wären.
    Entweder Du machst dann nur eine Uhr mit so einer Kommandoquittung, die immer als letzte in den Bus kommt, oder Du verzichtest auf den Rückkanal, oder Du verwendest ein anderes Busprotokoll.
    Da ich mir so was schon fast gedacht hatte, auch der Vorschlag mit den abschaltbaren Terminator Widerständen.

    Eine Mögliche Alternative wäre eventuell CAN, mit dem ich mich zur Zeit beschäftige. Ist aber ganz schön komplex und die Chips sind auch teuerer als die RS485 Lösung.

    Die Lösung mit der Unidirektionalen Verbindung über RS485 wird zum Beispiel bei DMX512 ( Lampensteuerung in Theatern und Veranstaltungen ) verwendet.
    Dabei können bis zu 512 Kanäle in bis zu 30 Geräten über eine bis zu 1km lange Leitung verschaltet werden.
    Die Beschränkung auf 512 Kanäle ist allerdings nur eine Softwaremässige!
    Der Datenstrom ist dabei allerdings nur vom Steuerrechner zu den Empfängern vorgesehen. Ein Rückkanal ist bei DMX512 weder in Harware noch in Software vorgesehen. Das macht hier allerdings auch nichts aus, weil der Datenstrom ca. alle 10ms wiederholt wird.

    Die Bus Terminierung kannst Du aber auch so lösen, wie es bei DMX512 gemacht wird.
    Dort ist eine Männliche Buchse als Eingang vorhanden und eine weibliche als Ausgang.
    Intern sind beide Buchsen parallel geschaltet.
    An dieser zweiten Buchse steckt entweder ein weiteres Gerät ( weitere Anzeige ) oder ein Stecker mit einem Terminator Widerstand.

    Von der Kommando Wiederholungs Lösung musst Du Dich auch nicht komplett verabschieden.
    Du könntest ja auch eine kleine Controllerplatine entwickeln, die den Bus Abschliesst und alle Empfangegen Daten wieder mit dem Anderen Startzeichen an den PC zurück sendet.
    Im einfachsten Fall könnte das auch nur ein Stecker sein, der die Sendeleitung mit der Empfangsleitung verbindet.
    Die einzelnen Anzeigen brauchen dann nur Daten zu Empfangen.
    Der Brückenstecker schickt dann alle gesendeten Daten an den PC zurück. Der kann somit kontrollieren, ob das Signal richtig über den Bus drüber ging.
    Zusätzlich kannst Du in deinen datenstrom noch eine Prüfsumme mit einbauen ( EXOR oder CRC ). Dadurch kann dann jeder Empfänger feststellen ob er die Daten fehlerfrei Empfangen hat.

    Ich hätte da mindestens 3 bis 4 Ideen wie man sowas realisieren könnte.

    Ich hätte Skype - Wenn Du magst können wir uns ja Da mal drüber unterhalten.
    Geändert von wkrug (30.03.2012 um 13:31 Uhr)

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.05.2006
    Ort
    Rheinzabern
    Alter
    26
    Beiträge
    200
    Hi,
    habe mir mal etwas durchgelesen was du so vor hast. Wkrugs Ideen finde ich schon richtig gut, aber warum versteifst du (wkrug) dich so auf die Rückmeldung einer "Empfangsbestätigung" zum PC? Eine Prüfsumme ist sicher nicht schlecht. Was ich mir noch vorstellen könnte wäre eine Lösung wie bei DMX512 (übrigens hat eine neue Version des Protokolls auch einen Rückkanal), dass einfach die Daten in sehr kleinen Abständen wiederholt verschickt werden. Dazu könnte man ein Controller Board zwischen PC und Bus setzen. Der PC überträgt dann einmal pro Sekunde, oder wenn sich was ändert, die Daten an das Board, welches dann alle paar Millisekunden die Daten auf den Bus schickt. Oder eben dieses Board managed, dass jedes Display die Daten erhalten hat indem man die Displays auch auf den Bus schreiben lässt und jedes Display eine Bestätigung an den Master schickt. Da müsste man sich aber eventuell Gedanken um Kollisionserkennung machen. Dazu könnte man aber eine Reihenfolge festlegen in denen die Displays antworten. Da jedes Display den Bus ja abhören kann, weiß es dann wann es seine Bestätigung auf den Bus schreiben darf.
    Das wären nur mal so meine Ideen Aber es gibt sicher etliche wie man das noch realisieren kann.

    Gruß, homedom

Seite 1 von 4 123 ... LetzteLetzte

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 19.04.2011, 13:36
  2. suche große LED Anzeigetafel
    Von yaro im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 19
    Letzter Beitrag: 18.05.2010, 19:18
  3. Über C-Konsolenanwendung Daten über RS232 übertragen
    Von WDragon91 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 03.07.2008, 20:23
  4. Lux: Die Lichtschranke für den Sport- und Physikunterricht
    Von luma im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 0
    Letzter Beitrag: 10.08.2006, 00:03
  5. anzeigetafel....tastatur...problem?!?
    Von hoer173 im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 19.08.2004, 14:19

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •