Sport-Anzeigetafel über USB
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
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
...aber warum versteifst du (wkrug) dich so auf die Rückmeldung einer "Empfangsbestätigung" zum PC?
Weils ziemlich einfach zu realisieren ist und von der Hardware her wenig Aufwand macht und die Daten trotzdem nur im Bedarfsfall ( Neue Daten, oder Fehler ) gesendet werden müssen.
Eine Rückmeldung von jedem Empfänger würde, wie Du richtig bemerkt hast, eine Kollisionserkennung erfordern, oder ein Protokoll mit Zeitfenstern.
Zudem könnte der Master, also der PC nicht mehr zu jedem Zeitpunkt senden, solange noch Quittierungen fehlen.
Eine zeitmässig abgestufte Antwort der einzelnen Knoten ( Uhren ) würde wiederum eine Adressierung oder Priorisierung erfordern.
Die Methode mit den schnell aufeinander folgenden Nachrichten, wie bei DMX 512 würde einen zusätzlichen Controller mit eigens entwickelter Software nötig machen.
Zur Zeit würde ich deshalb den passiven Schleifenstecker als Lösung favorisieren.
Damit ist zumindest sichergestellt, das an allen Uhren die korrekte Nachricht anlag.
Der PC kann einen Fehler sofort erkennen und an den User weitergeben.
Ein Protokoll bei dem mehrere Slaves senden dürfen ist da immer aufwändiger. Entweder von der Hardware her, oder von der Softwareseite.
Zudem kann man so eine Konfiguration mit jedem beliebigen Terminalprogramm debuggen, weil die nötige Nachrichtenschleife ja vorhanden ist. Es handelt sich ja um eine Eigenentwicklung und da auf Anhieb ein fehlerfreies Programm hinzukriegen halte ich für nicht möglich.
Zudem ist die Anzahl der Busteilnehmer nur durch die Bustreiber begrenzt. Baut man einen Repeater ein kann man das Signal fast an beliebig viele Slaves ( Uhren ) versenden. Und jede Uhr kann mit der gleichen Software ohne zusätzliche Addressierung angebunden werden. Auch das vertauschen von 2 Uhren miteinander hat keinen Einfluss auf diesen Bus.
Eine weitere Möglichkeit wäre, das jede angeschlossene Uhr ihre empfangenen Daten einfach wieder an einer Ausgangsbuchse zur nächsten Uhr weitergibt.
Somit würde jede Uhr als Repeater fungieren. Am Ende der Kette könnte Dann wieder der Schleifenstecker zum Einsatz kommen.
Somit wären alle Uhren in der Kette auf ihre korrekte Funktion überwacht. Denn wenn ein Knoten keine oder falsche Daten weitergibt, kommt die korrekte Datensatz nicht mehr beim PC an.
Allerdings weisst Du dann noch nicht bei welchem Knoten das Problem liegt.
Eine Uhr ohne Strom würde aber dann den Ausfall aller folgenden Uhren bewirken.
Ich schrieb ja schon - Eine Alternative wäre CAN. Da ist bereits eine Kollisionserkennung mit eingebaut und das Protokoll wäre für diese Anwendung praktisch Ideal, weil ja praktisch jeder Knoten die gleichen Informationen braucht. Ausserdem überwacht jeder Knoten die CAN Busleitung auf Fehler. Die Reichweite wäre bei niedrigen Baudraten auch ausreichend und man würde nur eine Doppelader benötigen.
Aber wenn Du Dir mal das Datenblatt vom MCP2515 oder einem anderen CAN Controller anschaust wirst Du Deine Meinung über das vermeintlich einfache Protokoll schnell revidieren. Da sind dann schon mal 10 bis 15 Register mit den "richtigen" Daten zu versorgen bis so ein Chip vernünftig läuft.
Das mit dem Rückkanal bei DMX 512 war mir schon bekannt, wird aber faktisch so gut wie nicht genutzt und macht da auch nicht wirkich Sinn. Ausserdem benutzen sehr viele günstige DMX Geräte 3polige Buchsen, obwohl das natürlich nicht Normgerecht ist. Und spätestens da kannst Du dann den Rückkanal vergessen.
So wie im Anhang wäre ein bidirektionaler full Duplex Knoten aufgebaut. Also so wie er auf der PC Seite nach dem FT232 zum Einsatz kommen könnte.
Liste der Anhänge anzeigen (Anzahl: 1)
Ok, also die meisten Kritikpunkte (ISP zum Beispiel) schiebe ich jetzt einfach mal auf die schlechte Auflösung des Schaltplanes, eventuell auch auf eine ungünstige Auswahl der Bauteile. Habe das jetzt auch geändert.
Den 7805 (inklusive Kondensatoren) hatte ich in einem extra Schaltplan von einem älteren Projekt, desshalb nicht extra hier eingezeichnet. Habe das in der neuen Version aber geändert, jetzt ist auch das eingezeichent.
Ich überlege jetzt aber trotzdem, statt SMD eher eine DIP Bauform der Controller zu wählen. Unterschied gibts da ja eigentlich bis auf die Größe kaum einen oder?
Außerdem noch eine (vielleicht dumme) Frage: Hätte es einen Sinn, hier vor dem Spannungswandler noch Dioden einzubringen, so als Sicherung vor irgendwelchen Fehlern, falschen Anschlüssen oder ähnlichem? Will das ganze möglichst Störungsfrei auslegen. Hätte es dazu dann eventuell noch Sinn, weitere Kondensatoren einzubauen?
Und, welche Frequenz würdet ihr mir hier beim Quarz empfehlen?
PS: Anbei die veränderte Version vom Schaltplan.
(Ich versteh nicht wiesodie Qualität von dem Schlatplan schon wieder so mies ist? Bei mir am PC sieht der viel besser aus...)
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank!
Anhang müsste jetzt da sein :)