PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sport-Anzeigetafel über USB



ijjiij
28.03.2012, 14:13
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

Thegon
28.03.2012, 14:26
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

wkrug
28.03.2012, 15:17
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 ?!

ijjiij
29.03.2012, 07:25
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!

wkrug
29.03.2012, 15:38
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! ;)

ijjiij
29.03.2012, 16:00
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-modules/modules/110553-91-ft232r-usb-serial-bob.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

wkrug
30.03.2012, 08:45
Wenn ich so ein FT232RL-Modul (z.B. http://www.elektor.de/products/kits-....1913324.lynkx (http://www.elektor.de/products/kits-modules/modules/110553-91-ft232r-usb-serial-bob.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!

ijjiij
30.03.2012, 09:42
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:
21992
richtig?

Würde das denn auf diese Weise funktionieren? (Versuche mich da gerade etwas Weiterzubilden :) )

wkrug
30.03.2012, 12:23
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.

homedom
30.03.2012, 15:37
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

wkrug
30.03.2012, 18:01
...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.

wkrug
30.03.2012, 22:38
@ijjiij
Sorry ich hab gerade erst Deinen Dateianhang in Antwort #8 entdeckt.
Im Prinzip wär das so richtig, nur das es von der ersten Uhr zur zweiten und dann von der zweiten zur dritten Uhr gehen soll.
Das mit dem Schieberegister stimmt so. In jede Uhr kommt somit ein Controller, der die Schieberegister nur für diese Uhr bearbeitet.
Übrigens würde ich für eine Stelle 8 Bit verbraten. Zum einen Hat so eine Anzeige eventuell einen Dezimalpunkt und es passt auch besser in die 8Bit Struktur eines solchen Controllers. Da auch die Hardware SPI immer 8 Bits sendet.
Das bei den Zahlen die richtigen Segmente angesteuert werden lässt sich am geschicktesten über eine indizierte Tabelle erreichen.

unsigned char uc_disptable[10] {0b01100000,0b11011010,0b11110010,0b...... usw.}
Das indiz ist dann die Zahl die angezeigt werden soll, in der Tabelle verstecken sich die anzusteuernden Segmente.
Die Ziffer 0 würde dann den ersten Speicherplatz ansprechen also uc_dispplatz[0]=uc_displtable[0];
Die Dezimalpunktansteuerung würde ich nach dem Auswählen der Ziffer erst machen also uc_displplatz[0]|=0b00000001;
Sind alle Segmentinformationen beisammen wird alles in die Display Schieberegister geschoben.

for(uc_i=0;uc_i<10;uc_i++)
{
while(ssr&0b10000000==0){} //Warten bis die SPI frei ist Programmbeispiel im ATMEL Datasheet beachten!
{
sdr=uc_displplatz[uc_i]; //Zu übertragende Daten in das Datenregister der SPI übergeben
}
}
LATCH = 1; // Nachdem alle Daten zu den Schieberegistern übertragen wurden Latch Impuls generieren
#asm("nop");
LATCH = 0;

Ist jetzt natürlich nur ein pseudo Code. Die Registernamen der SPI hab ich jetzt nicht im Datenblatt nachgeguckt.

ijjiij
31.03.2012, 07:30
@ijjiij
Sorry ich hab gerade erst Deinen Dateianhang in Antwort #8 entdeckt.
Im Prinzip wär das so richtig, nur das es von der ersten Uhr zur zweiten und dann von der zweiten zur dritten Uhr gehen soll.


MUSS das Signal von Uhr zu Uhr gehen? Ja oder? Da gibts keine wirkliche Alternative dazu?
Beim Aufbau von 3 Displays (was meiner Meinung nach auf jeden Fall bald passieren wird...), würde es sonst in unserem Fall zu einer etwas ungünstigen Kabelverlegng kommen weil der Aufbau hier (räumlich gesehen) so aussehen würde:

kleineres Display -------- Großes Display + Laptop (Datenquelle) -------- kleineres Display

Dann würde die Kabelführung wohl vom Laptop zum 1. kleinen Display laufen, dann zurück zur großen Anzeige und rüber zum 2. kleinen Display. (Und dann wieder zurück zum Laptop? Oder kann das über die gleichen Leitungen wieder zurück geschehen?)
Dann hätte also jedes Display 2 Buchsen, eine für eingehendes Signal, eine für die Weiterführung des Signals zum nächsten Display. Richtig verstanden? :)

(Die Programmierung ist wie gesagt nicht so direkt meine Sorge, dafür hab ich Informatiker)

wkrug
31.03.2012, 09:17
MUSS das Signal von Uhr zu Uhr gehen? Ja oder? Da gibts keine wirkliche Alternative dazu?
Es gibt immer Alternativen!
Was Du nicht machen darfst ist, diesen Bus sternförmig aufbauen. Denn sonst kommst Du mit der Terminierung in ein ganz tiefes Tal und der Bus macht Probleme.
Das bedeutet, das in jedem Zweig am Anfang ein Bustreiber sein muß.
Auch die Sache mit der Quittierung wird dann nicht mehr so einfach möglich sein.

Das würde bedeuten, das Du beim PC je einen Bustreiber pro Linie einsetzen musst.
Dann würde ich aber das von "homedom" vorgeschlagene Konzept verwenden und auf der PC Seite einen eigenen Controller vorsehen, der die aktuellen Nachrichten ständig auf dem Bus wiederholt. Eine Refreshrate von 100 bis 200ms dürfte schnell genug sein. Ne Prüfsumme wäre dann auch nicht schlecht um Fehler bei der Übertragung zu erkennen.
Ein Display das einen Fehler erkennt könnte dann z.B. eine Anzeige FF FF machen und der Fehlerort wäre sofort optisch erkennbar.


Dann hätte also jedes Display 2 Buchsen, eine für eingehendes Signal, eine für die Weiterführung des Signals zum nächsten Display. Richtig verstanden?
Das hast Du völlig richtig verstanden!
Unabhängig davon kann man ja beim PC mehrere von diesen Bussen aufmachen. Die TTL Eingänge der Bustreiber SN75176 werden dann einfach parallel geschaltet. Und trotzdem kannst Du dann von einer Uhr zur anderen weitergehen, wenn das Verkabelungsmässig besser passt.
Jeder Bus muß allerdings an seinem Ende terminiert werden. Die Lösung mit den Terminator Stecker ( Widerstand in einem Stecker verbaut ) erscheint mir hier am Einfachsten.

Was Du nicht vergessen darfst ist, das so ein Bustreiber einen Widerstand von 60Ohm treiben muß und deshalb ~85mA Strom ziehen wird. Bei 3 Bustreibern sind das dann schon 255mA. Da musst Du gucken, ob das noch über die USB Leitung des PC geht, oder ein eigenes Netzteil auf der PC Seite her muß.

Als Steckverbinder wär eventuell so was geeignet:http://www.reichelt.de/XLR-Stecker/XLR-3ST/index.html?;ACTION=3;LA=444;GROUP=C1671;GROUPID=51 86;ARTICLE=22902;START=0;SORT=artnr;OFFSET=16;SID= 11T3bLiX8AAAIAAHjNuvA86c826cf215b869d78f10d1ed6ae2 1cb
Ist auch das Stecksystem, das bei einfachen DMX 512 Geräten verwendet wird.

Hab noch mal kurz nach den Chips geguckt: Der 74HC595 wäre ein geeignetes Schieberegister mit Latch.
Jo, dann wären ja fast alle Chips beisammen:
Uhr: ATMEGA 16, 74HC595, SN75176, ULN2803.
PC: ATMEGA 8, FT232RL, SN75176.

Ich versuch Dich mal per SKYPE zu kontaktieren!

ijjiij
31.03.2012, 19:06
So, nochmal vielen Dank für unser Skype Gespräch!

Ich hab jetzt angefangen den Schaltplan für die Controller-Einheit zu entwerfen, bin dabei noch auf 3 Fragen gestoßen:

1.) Beim SN75176, ist das richtig, das ich den BUS nur als "Driver" verwenden, und daher die Anschlüsse R und RE nicht verbinden muss?
Der Anschluss D wird dann ja mit dem TxD vom AtMega verbunden, richtig? aber was mach ich mit dem DE-Anschluss?

2.) Der VCC bzw. der GND vom SN75176, kann ich, bzw. muss ich die mit VCC und GND vom Controller zusammenschließen? Oder sind die da was ganz war eigenes? (Die Frage klingt vl total bescheuert, will aber lieber auf Nummer sicher gehen...)

3.) Über USB wird ja auch Strom (5V?) übertragen. Kann ich damit die komplette Controller-Einheit, also den Atmega und die SN75176 über USB mit Strom versorgen? Dann würden ja in weiterer Folge auch die Controller in den Displays über den Laptop (bzw. den USB Anschluss) den Strom ziehen, das wird doch recht viel mit der Zeit, oder? Wäre es da dann sinnvoller, die Controller auf den Displays auch über ein extra Netzteil zu versorgen? Das brauchen die Displays ja, aufgrund des Stromverbrauchs der 7-Segment-Anzeigen sowieso...

LG
ijjiij

wkrug
31.03.2012, 19:31
Beim SN75176, ist das richtig, das ich den BUS nur als "Driver" verwenden, und daher die Anschlüsse R und RE nicht verbinden muss?
Der Anschluss D wird dann ja mit dem TxD vom AtMega verbunden, richtig? aber was mach ich mit dem DE-Anschluss?
Auf der PC Seite wird der Chip nur als Ausgang verwendet.
DE und !RE werden miteinander verbunden und auf +5V gelegt. Dadurch ist der Empfänger deaktiviert und der Sender aktiv.
Das zu sendende Datensignal wird dann an D angeschlossen. Also TxD des Controllers am PC kommt auf D. R bleibt hier offen.

Bei den Uhren Controllern wird auch DE und !RE zusammen geschlossen, aber hier auf GND gelegt.
Dann wird R mit RxD des Controllers verbunden. Hier bleibt D offen.


Der VCC bzw. der GND vom SN75176, kann ich, bzw. muss ich die mit VCC und GND vom Controller zusammenschließen? Oder sind die da was ganz war eigenes?
Da Du in jeder Anzeige ein eigenes Netzteil hast und die einzelnen Massen der Anzeigen keine verbindung haben, kannst Du die 5V Stromversorgung des Controllers auch für den SN75176 verwenden.
Manchmal wird da auch eine galvanische Trennung mittels Optokoppler und DC/DC Wandler mit eingebaut. Zwingend erforderlich ist das aber nicht.


Über USB (http://www.rn-wissen.de/index.php/USB) wird ja auch Strom (5V?) übertragen. Kann ich damit die komplette Controller-Einheit, also den Atmega und die SN75176 über USB (http://www.rn-wissen.de/index.php/USB) mit Strom versorgen? Dann würden ja in weiterer Folge auch die Controller in den Displays über den Laptop (bzw. den USB (http://www.rn-wissen.de/index.php/USB) Anschluss) den Strom ziehen, das wird doch recht viel mit der Zeit, oder? Wäre es da dann sinnvoller, die Controller auf den Displays auch über ein extra Netzteil zu versorgen? Das brauchen die Displays ja, aufgrund des Stromverbrauchs der 7-Segment-Anzeigen sowieso...
Das war auch meine Frage 2 Antworten höher.
Da Du auf der PC Seite ja 3 Treiber einbauen willst können da von der USB Buchse bis zu 300mA Strom gefordert werden.
Wenn da ein USB HUB verwendet wird, kann die USB Buchse unter Umständen aber nur 100mA liefern.
Deshalb würde ich die FT232 Platine von Elektor verwenden und den FT232 mit der USB Spannung versorgen.
Den Rest der Schaltung würde ich über ein kleines Steckernetzteil versorgen.
Der GND ist dabei durchverbunden die Supply Anschlüsse wären getrennt. Das Steckernetzteil sollte >8V liefern, die Spannung für den Controller und die SN75176 würde ich mit nem 7805 generieren. Bei diesen Strömen muß dieser aber auf einen kleinen Kühlkörper kommen!
Die Controller in den Uhren werden nicht! von der USB des Rechners versorgt.
Die Controller müssen alle eine Quarz oder zumindest einen Keramikresonator als Taktquelle erhalten, sonst wird die Datenübertragung temperaturabhängig. Die internen Oszillatoren der Chips sind nicht besonders genau.

Bei den Uhren kannst Du die Spannung für den Controller, die Schieberegister und die SN75176 aus der Stromversorgung für die LED's gewinnen.
Auch hier sollte ein 7805 für die 5V Versorgung dieser Komponenten verwendet werden.
Die ULN2803 brauchen im Prinzip keine Stromversorgung. Der Pin 10 wird mit der Spannungsversorgung der Displays verbunden - Sind ja die Anschlüsse für die Freilaufdioden. Der ULN kann maximal 500mA pro Ausgang schalten die Verlustleistung darf aber in Summe 1,47W beim DIL Gehäuse nicht überschreiten.
Die Spannung für die LED's hängt von den verwendeten Anzeigen ab und wird vermutlich zwischen 12 und 15V liegen.
Die von Dir erwähnten 200mm großen Anzeigen konnte ich bei Reichelt nicht finden.

ijjiij
03.04.2012, 09:49
Da Du auf der PC Seite ja 3 Treiber einbauen willst können da von der USB Buchse bis zu 300mA Strom gefordert werden.
Wenn da ein USB HUB verwendet wird, kann die USB Buchse unter Umständen aber nur 100mA liefern.

Heißt das jetzt also, wenn ich garantiert keinen HUB auf der Laptop-Seite verwende, spare ich mir hier das Netzteil, weil der Laptop dann die nötigen 300mA liefern kann?
Könnte man da nicht eventuell (über eine Diode, einen Jumper, einen Kippschalter etc.) eine Sicherheit vorsehen, das die Controller-Einheit vom Laptop betrieben werden kann wenn dieser genug Strom liefert, man aber ebenso ein Netzteil anschließen kann? so wie das externe Festplatten über USB manchmal haben?
Nur so ein Gedanke jetzt...

Ansonsten hab ich den Schaltplan für die Controller-Einheit soweit fertig denk ich, kann ich die hier online stellen zur Durchsicht auf Fehler?
Oder kann ich dir den Schaltplan per mail/skype schicken @ wkrug?

LG
ijjiij

wkrug
03.04.2012, 16:33
Heißt das jetzt also, wenn ich garantiert keinen HUB auf der Laptop-Seite verwende, spare ich mir hier das Netzteil, weil der Laptop dann die nötigen 300mA liefern kann?
Im Prinzip ja. Da Du aber nicht weisst wie die USB Buchsen innerhalb des PC angeschlossen sind würd ich mich nicht darauf verlassen. Ein externes Netzteil kostet nicht viel und ist im worst Case Fall ( Kurzschluß oder Überlast ) einfacher auszutauschen als ein USB Port im Laptop.
Allein schon aus Sicherheitaspekten würde ich deshalb ein externes Steckernetzteil bevorzugen.
Es ist aber Deine Entscheidung!


Ansonsten hab ich den Schaltplan für die Controller-Einheit soweit fertig denk ich, kann ich die hier online stellen zur Durchsicht auf Fehler?
Ich würde es an Deiner Stelle hier Veröffentlichen, da dann wesentlich mehr Leute einen Fehler erkennen können, als wenn nur ich Zugriff auf die Schaltpläne hätte.
Zudem handelt es sich ja um eine "Standardschaltung" und nicht um streng geheime Pläne.
Ich denk mal, das wenn das Teil fertig ist, Du mit Sicherheit einige Anfragen zu der Schaltung bekommen wirst.
So eine Sport Anzeige für bezahlbares Geld suchen sicher einige Sportvereine - ( auch unserer :) ).
Zudem ist das Teil ja Durch die Verwendung der Schieberegister modular.
Das bedeutet, wenn man es mal um 1 oder 2 Stellen erweiten möchte ist das relativ einfach zu machen.
Dann wär das auch eine Super Anzeige für einen Fussballverein.

Wenn Du einen Interupt Port freilässt und auf eine Stiftleiste legst ( GND, Signal, +5V ). Wäre jederzeit die Nachrüstung einer DCF 77 Uhr möglich.
Ist dann nur eine Frage der Software.

ijjiij
04.04.2012, 16:51
Gut, also ich hoffe man erkennt es soweit.
Der angefügte Schaltplan soll das Controller-Board darstellen.
Bitte um Nachsicht, es ist meine erste Arbeit in Eagle (oder überhaupt der erste Schaltplan den ich komplett selbst erstellt habe...)



Könntet ihr euch den vielleicht durchsehen, ob das so eh soweit funktionieren würde alles?

Außerdem noch eine Frage am Rande:
wkrug, du hast ja das USB Board von Elektor empfohlen. Gibt es dazu eventuell eine Alternative (in Sachen Leistung und Preis)?
Bei Elektor bekomme ich ja z.B. auch die Schaltpläne nur für extra "Elektor-Credits" zumindest laut Auskunft vom Support. Was ich jetzt ehrlich gesagt nicht ganz einsehe, wenn ich schon ein Produkt von denen kaufe, das ich dann nochmal extra dafür bezahlen soll, nur damit ich weiß welcher Anschluss was ist. Ich wollte einfach nur die Pin-Belegung von dem Board wissen, damit ich es in meinen Eagle-Schaltplan einzeichnen kann.

wkrug
04.04.2012, 18:32
Ui Ui Ui, da fehlt ja so einiges.
Zum Ersten kann man auf dem Schaltbild fast nichts erkennen.
Stells doch bitte in einer größeren Auflösung ein.
Zum ersten gehören bei jedem IC 100nF Abblockkondensatoren zwischen +5V und GND.
Ein 5V Stromversorgung kann ich gar nicht erkennen.
Der FT232 kann von der USB Buchse versorgt werden, der Controller und die Treiber IC's sollten eine eigene Stromversorgung kriegen.
Standard ist da ein 7505 Spannungsregler mit den dazugehörigen Kondensatoren und Kühlkörper.
Beim Controller müssen alle VCC, AVCC, GND, AGND Anschlüsse mit den entsprechenden Potentialen versorgt werden.
An den AREF Anschluß würde noch ein Kondensator mit 100nF gegen Masse gehören. Er wäre zwar eigentlich nur für die interne Referez nötig, stört aber auch nicht.
Die ISP Buchse gehört bei einer solchen Entwicklung mit auf die Platine drauf! Du möchtest ja den Controller in SMD Bauweise nehmen und dafür gibts keine Sockel! Und den Chip für jeden Programmiervorgang auszulöten mach schon gar keinen Sinn.
Der Quarz am Controller und die nötigen Bürden Kondensatoren am Controller fehlen auch.

Du kansst den FT232RL auch direkt in dein Layout mit einbauen, wenn Du ohnehin eine eigene Platine entwerfen willst, das spart Dir dann etwa 10...12€.
Guck Dir aber das Datenblatt an, welche Bauteile da zusätzlich mit reingehören.

Der FT232RL bietet auch die Möglichkeit eine TxD RxD Status LED. Ich würde an die beiden Anschlüsse ein kleine Low Current LED mit den entsprechenden Vorwiderständen reinmachen.

Übrigends, Du hast PN!

ijjiij
05.04.2012, 18:15
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...)

wkrug
05.04.2012, 19:28
Ich versteh nicht wieso die Qualität von dem Schaltplan schon wieder so mies ist? Bei mir am PC sieht der viel besser aus...
Ich vermute, das liegt an der Auflösung beim Export der Dateien aus EAGLE.
Stell doch mal die Auflösung höher. Ich würd mal sagen um die 150 DPI.


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?
Beim MEGA 16 sind nur ein paar Pins für die Stromversorgung mehr auf der SMD Variante. Rein von der Funktion und Programmierung her gibt's keinen Unterschied.
Beim PC Controller würde auch ein ATMEGA 8 reichen. Ist ein paar Cent günstiger, würde Platz sparen und wird auf der PC Seite locker reichen.
Du hast halt was von wegen Programmer für ATMEGA16 / 32 geschrieben.


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?
Ist ne gute Idee, weil man die käuflichen Steckernetzteile umpolen kann. Da kann eine 1N4004 oder ne SB150 einiges verhindern.


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?
Am Ausgang des 5V Netzteiles könnte man noch einen 10µF Kondensator einbauen. Den Eingangskondensator vom Netzteil würde ich auf 470µF erhöhen.
Die rigoroseste Methode wäre die RS485 Treiber galvanisch per Optokoppler und DC/DC Wandler vom Rest der PC Schaltung zu trennen.

Als Quarzfrequenz nehm ich gerne so umdie 8MHz. Bringt für deine Anwendung genug Rechenpower und es ist fast jeder Typ von ATMEGA xx Controller ( ATMEGA 8 L8, ATMEGA 8 /16, ATMEGA 8A )damit lauffähig.
Du kannst auch spezielle Baudratenquarze ( z.B. 7,3728MHz ) verwenden, dann stimmt die einstellbare Baudrate zu 100%.
Bei geraden Quarz Werten kann es schon mal um 0,5% daneben gehen.
Auf jeden Fall in allen Uhren und beim PC Controller die gleiche Quarzfrequenz verwenden!

Hast Du die Dateien von Deiner PM schon runtergeladen?
Gib mir bitte Bescheid!

ijjiij
05.04.2012, 19:34
Danke!

Ich habe die Bilddatei am Laptop jetzt mit 300dpi exportiert, wenn ich die hier im Forum einfüge dürfte das aber wohl wieder ziemlich gestaucht werden. Darunter leidet dann leider die Bildqualität dramatisch...

Die Bilder aus der PN habe ich erhalten, vielen Dank, hat mir sehr weitergeholfen!

wkrug
05.04.2012, 19:54
Ok, dann lösch ich Die Dateien vom Server!

Geh doch mal die EAGLE Druck Funktion und erzeuge ein PDF.
Das kann man auch hochladen und dürfte Deutlich erkennbarer sein.

ijjiij
06.04.2012, 17:21
Bitte wie füge ich eine PDF hier ein? Ich kanns echt nicht finden...

wkrug
07.04.2012, 07:37
Klick bei "Antworten" unten erweitert an.
Dann "Anhänge verwalten".
Dann "Anhänge vom Computer hochladen" - Die Datei auswählen.

Das sollte es gewesen sein.

ijjiij
07.04.2012, 07:49
Vielen Dank!

Anhang müsste jetzt da sein :)

wkrug
07.04.2012, 11:55
Das schaut ja schon mal wesentlich besser aus!
Trotzdem hätte ich da noch ein paar Vorschläge.

Da Du etwa 200..300mA Stromaufnahme haben wirst, würde ich C7 auf 470µF erhöhen.
Es gibt da so ne Fausregel, die ich anwende 1000µF pro A. Da käm ich dann auf 330µF, aber ein 470µ ist leichter zu kriegen.

Am Ausgang des Spannungsreglers wär dann noch ein 10µF Elko ein Bauteil, das ich mir gönnen würde.

Am Reset Pin des Controllers könnte ein 10nF Konensator nicht schaden.
Man braucht ihn zwar nicht unbedingt, da der ATMEGA16 die Spannung am Reset Pin überwacht, schaden tut er keinesfalls.
Zudem musst Du ihn ja dann in Hardware nicht tatsächlich einbauen, aber es beruhigt, wenn der Platz schon mal dafür da ist.

Bei den 75176 würde noch je ein 100nF Kondensator zwischen + und GND reingehören, der auch physikalisch nahe bei Betriebsspannungsanschlüssen des IC's ist.

An allen Ausgängen der SN75176 gehören noch 120 Ohm Widerstände als Abschluß mit rein.
Hier starten ja die 3 Busse und der Widerstand braucht hier nicht abgeschaltet zu werden.

8V beim Eingang war nur ein Vorschlag. 9..12V werden hier auch funktionieren, zudem hast Du einen Kühlkörper vorgesehen.
Ich dachte, du wolltest noch eine Verpolschutzdiode in den Eingang der Spannungsversorgung machen ? - Ich würde es empfehlen.

An AREF kannst Du noch einen 100nF Kondensator einplanen. Bestückt braucht auch der nicht zu werden, weil der nur für die Stabilisierung der internen Referenzspannung für den A/D Wandler verwendet wird.

Die Belegung der ISP Buchse hab ich jetzt nicht überprüft, aber das hast Du sicher schon getan.
In meinen neueren AVR Projekten verwende ich gerne die 6 polige ISP Variante des AVR ISP MK II, weil die ein wenig kleiner baut.

Ein ATMEGA8 wär hier eigentlich auch ausreichend, wenn Dir ein MEGA16 besser ins Konzept passt, kannst Du auch den verwenden.

Ansonsten würd ich sagen, das passt alles.
Für einen Deiner ersten EAGLE Schaltpläne sieht das wirklich gut aus. - Respekt -

Weil es ja eigentlich nur ein paar Bauteile sind, kriegst Du sicher ein einseitiges Layout zusammen und da kann man die Platinen noch selber herstellen.

ijjiij
10.04.2012, 07:36
Passt, vielen Dank für die Erweiterungen erstmal, habe sie bereits in den Schaltplan übertragen.

Habe mich jetzt an die Überlegungen für die eigentlichen Anzeigen gemacht.
Hier hätte ich mich zwar schon für 7-Segment-Anzeigen entschieden, vom "Auftraggeber" her soll ich mir jetzt aber doch nochmal Gedanken über die Umsetzbarkeit der Anzeigen über eine LED-Matrix machen. Die Ansteuerung dazu ist mir ja eigentlich klar, Schaltplan dazu auch mehr oder weniger problemlos.
Ich hab jetzt nur noch Sorgen wegen der Lichtstärke.

Der Aufbau, also egal ob jetzt 7-Segmente oder LED-Matrix soll auf jeden fall hinter einer dünnen Plexiglas-Scheibe liegen und wird auch manchmal mit Sonnenlicht direkt bestrahlt werden. Also ist auch mit Reflexionen zu rechnen.
Laut diversen Informationen sollte die Lichtstärke für Outdooreinsatz >4000 cd/m², bei Gegenlicht eher 8000 cd/m² sein. Was heißt das jetzt für jeden einzelnen Bildpunkt einer LED-Matrix? Bei einer 5mm Pixeldichte wären das dann 200 LEDs/m², dann kommt jede LED auf 40cd Abstahlung. Das kommt mir jetzt irgendwoe seltsam vor...

Was würde das für 7-Segment-Anzeigen bedeuten? Da habe ich jetzt hauptsächlich welche mit 40-50 mcd gefunden, also gerade mal einem Tausendstel davon...
Kann das wirklich ausreichen? Welche Lichtintensität wäre denn bei 7-Segment-Anzeigen angemessen?


EDIT: Schande über mich! Bei einer Pixeldichte von 5mm wären das natürlich 200x200 LEDs, also 40.000 LEDs. Also eine Abstrahlung von 0,1cd je LED, also 100 mcd, damit sind von mir gefundenen 7-Segment-Anzeigen aber noch immer nur halb so stark wie "nötig".

wkrug
10.04.2012, 13:23
Du möchtest nun also ein komplette Bildwand aus LED's aufbauen?
Ich denke das ist vom Aufwand her für eine Einzelperson fast nicht mehr zu schaffen, zudem Du ja mehrere von diesen Anzeigen brauchen wirst.
Zudem wäre da im Prinzip nur eine Multiplexansteuerung drin, die Dir ein Haufen Helligkeit stehlen wird.

Eine Mögliche Alternative wären noch eine LED Anordnung wie diese hier zu nehmen: http://www.reichelt.de/Siebensegment-Anzeigen/PSA-08-11-RT/index.html?;ACTION=3;LA=2;ARTICLE=31580;GROUPID=30 02;artnr=PSA+08-11+RT;SID=10T4QkCH8AAAIAAERUB@U8fc8e0a3ae4231967f9 4125852103543
Allerdings bist Du dann auch wieder auf die zu nutzenden Stellen festgelegt.
Und macht auch nur Sinn, wenn Du ausser Zahlen auch Buchstaben anzeigen möchtest.

Da Du die Anzeigen Segmente vermutlich ohnehin selber bauen musst, kannst Du superhelle rote oder grüne LED's vom "Chinamann" nehmen.
Auch wenn die in Farbe und Helligkeit da bei einer Charge doch sichtbar differieren. Bei der Menge die Du brauchen wirst, Sticht aber das Preisargument.

ijjiij
10.04.2012, 17:38
Aber meine Berechnung mit den 100mcd je LED waren schon richtig? Wie wirkt sich das auf die 7-Segment-Anzeigen aus? Sind hier die 50mcd für dne Outdoor-Einsatz ausreichend?

wkrug
10.04.2012, 19:58
Ich würde pro Segment ( Balken ) 2 Reihen superhelle LED's machen.
Wie wärs z.B. mit diesen: http://www.ebay.de/itm/100-super-ultrahelle-LED-LEDs-5mm-rot-ca-26000mcd-/290411011356?pt=Bauteile&hash=item439dd85d1c
Vorne vor die LED's kommt eine rote Filterscheibe.
Grüne LED's sind tendenziell noch heller, aber ich denke mal das man die bei Tageslicht schlechter sieht als rote.
Ich denke dann dürfte das Ganze, dürfte auch mit ultrahellen roten LED's, für den Outdooreinsatz hell genug sein.
Letztlich macht hier nur "Versuch - Klug", oder jemand hätte das schon ausprobiert.
Besorg Dir einfach mal so 10 bis 20 Stück von den LED's, löt das mal auf eine Punktrasterplatine und mach ein Stückchen Filterscheibe davor.
Eventuell ist auch eine Filterfolie wie Sie für PAR Strahler verwendet wird ( Gibts im Musikgeschäft als Meterware ) dafür geeignet, falls Du keine geeignete farbige Plexiglasscheibe kriegst.
Eventuell wär eine leicht mattierte Plexischeibe ohnehin besser, wegen der Reflexion.

Was sicher einen Effekt bringt wäre die zusammengehörenden LED's mit einem weissen Kunststoffstreifen einzukreisen, der bis zur Frontplatte geht. Weil dadurch das überleuchten auf andere Segmente verhindert wird. Du bekommst also einen besseren Kontrast zwischen den einzelnen Segmenten.

ijjiij
15.04.2012, 08:08
So, nach fast einer Woche melde ich mich jetzt auch mal wieder...

Meine Aufgabenstellung hat sich Ende letzter Woche ein wenig geändert.
Die Große Anzeigetafel wurde aus meinem Teil des Projekts entfernt, da wird jetzt eine LED-Anzeigetafel aus Einzelmodulen inklusive Ansteuerung aus China genommen. Das war eine rein kostentechnische Entscheidung.

Die kleinen Anzeigetafeln sind außerdem keine 7-Segment-Anzeigen mehr, sondern auch hier kommen fertige LED-Module aus China zum Einsatz (auch hier eine Kostenfrage).
Folglich muss ich also einen komplett neuen Entwurf für die Ansteuerung der kleinen Displays machen. Die LED-Module haben bereits Segmenttreiber und einige Schieberegister verbaut. Ich hab also lediglich 16 Signal-Leitungen die ich mit 1ern und 0ern befüllen muss.

Mein Plan hierfür sieht jetzt folgendes vor:
Der AtMega16 empfängt die Daten vom Controller-Board, übergibt sie an 2 Schieberegister (2*8 bit sollte ja ausreichen für 16 Leitungen), von hier aus dann über ein (kurzes) Flachbandkabel zum LED-Modul und die Anzeige sollte laufen.
Soviel zur Theorie, Meinungen dazu sind natürlich wie immer sehr erwünscht!

Außerdem hat sich die Aufgabenstellung an das Controller-Board wieder etwas geändert!
Rund um das Spielfeld sind 6-8 (oder noch mehr) Buzzer verteilt, welche bei Betätigen ein Signal an den Laptop ausgeben sollen, und dann diverse Funktionen haben. Unter anderem wird so die Zeit angehalten, Strafen können verhängt werden etc.
Diese Buzzer würden wir aus Platzgründen jetzt auch gerne über das Controller-Board für die Displays laufen lassen.
Problem an der Sache: die am weitesten entfernten Buzzer haben eine Kabellänge von über 40m! Und gerade diese sollten eigentlich die Zeit anhalten...
Derzeitige Lösung (auch um Selbstinduktion in den Leitungen zu vermeiden): Die Buzzer schließen eine 12V Stromkreis, wodurch in Notebooknähe ein Relais geschaltet wird. Das gibt dann einen Impuls ab.
Vorteil: keine Selbstinduktion
Nachteil: Zeitverzögerung durch das Relais von ca. einer halben Sekunde!

Desshalb sollte dieses System wie gesagt auch noch überarbeitet werden...

Das Beeinflusst das Design des Conroller-Boards jetzt insofern, als das der Controller selbst jetzt auch Daten (vom Buzzer) auswerten, und zurück an den Laptop senden soll. Genau diesen Fall haben wir ja jetzt aufgrund der TxD / RxD Schleife am USB-Modul ausgeschlossen...
Hier bräuchte ich wirklich dringend Rat...

wkrug
15.04.2012, 09:21
Die kleinen Anzeigetafeln sind außerdem keine 7-Segment-Anzeigen mehr, sondern auch hier kommen fertige LED-Module aus China zum Einsatz (auch hier eine Kostenfrage).
Folglich muss ich also einen komplett neuen Entwurf für die Ansteuerung der kleinen Displays machen. Die LED-Module haben bereits Segmenttreiber und einige Schieberegister verbaut. Ich hab also lediglich 16 Signal-Leitungen die ich mit 1ern und 0ern befüllen muss.
Ohne Schaltplan, Funktionsbeschreibung und Datenblätter der verwendeten Displays nichts zu machen.
Die Helligkeit der Module spielt nun wohl keine Rolle mehr?
Probier die Dinger erstmal aus, ob die bei Tageslicht überhaupt noch erkennbar sind - Ich hab da schon meine Erfahrungen mit günstigen Siebensegment LED Uhren gemacht.


Der AtMega16 empfängt die Daten vom Controller-Board, übergibt sie an 2 Schieberegister (2*8 bit sollte ja ausreichen für 16 Leitungen), von hier aus dann über ein (kurzes) Flachbandkabel zum LED-Modul und die Anzeige sollte laufen.
Sind das parallel in seriell out Schieberegister oder warum so viele Leitungen?


Das Beeinflusst das Design des Conroller-Boards jetzt insofern, als das der Controller selbst jetzt auch Daten (vom Buzzer) auswerten, und zurück an den Laptop senden soll.
Der Grund für diese Entscheidung war letztlich dein Bus Design.
Du wolltest vom Laptop aus sowohl eine Stern als auch eine Bus Topologie haben. Dadurch war ein Rückkanal nicht mehr so einfach möglich.
Zur Zeit beschäftige ich mich mit dem CAN Bus. Der könnte eine Lösung für dein Problem sein.
Dieser Bus ist Multimaster fähig und hat eine Kollisionserkennung und eine Nachrichtenpriorisierung.
Aber auch hier ist eine 2 Draht Leitung ohne sternförmige Abzweigungen nötig.
Da der PC aber auch in der Mitte dieser Busleitung sein kann, kannst Du von hier aus maximal 2 Stiche abgehen lassen, die an den Enden der Leitungen einen Abschlusswiderstand kriegen müssen.
Nun die Nachteile: Die Reichweite ist nicht mehr ganz so groß wie bei RS485. Das kommt aber auch auf den gewählten Bus Speed an.
Für den Bus benötigst Du einen speziellen CAN Controller, der entweder extern angeschaltet ( z.B. MCP2515 ) oder bereits im Controller integriert ist, wie bei der AT90xxCAN Controller Serie. Für beide Varianten sind aber umfangreiche Software Konfigurationen nötig um einen lauffähigen CAN Bus zu kriegen.
Ausserdem wird ein CAN Bus Treiber benötigt wie der MCP2551.
Du kannst auch weiterhin dein "altes" RS485 Bussystem mit serieller Datenübertragung beibehalten, musst Dich dann aber um Kollisionserkennung und die Absicherung der Daten auf dem Bus selber kümmern. Dafür hab ich aber gerade kein Patentrezept parat. Da es bei der Buzzer Geschichte anscheinend sehr auf das Timing ankommt wird da wohl ein System mit festen Zeitschlitzen nicht in Betracht kommen.

Unabhängig vom verwendeten Bus System wirst Du jetzt wohl oder übel Adressen an deine Uhren vergeben müssen. Schliesslich willst Du ja wissen welcher Buzzer gedrückt wurde. Das liesse sich am einfachsten mit einem oder 2 BCD Schaltern machen.

Aus einer im Prinzip einfachen Aufgabenstellung hast Du nun ein größeres Bus Projekt mit mit sehr vielen Unbekannten vererbt gekriegt - Herzlichen Glückwunsch! ;)

ijjiij
15.04.2012, 11:36
Ganz einfache Frage zur USB-Seriell Datenübertragung wie sie geplant war:
Also du hast gesagt, wenn der Laptop ein Signal sendet, muss er gleichzeitig auch wieder eines Empfangen (Empfangsbestätigung also sozusagen). Gilt das umgekehrt auch so? Also muss zuerst ein Signal gesenet werden um eines erhalten zu können?

Ich habe dazu auch gegoogelt, mangels sinnvoller Suchbegriffe zu dem Thema aber leider kaum was gefunden...

EDIT:
Ganz naiv drauflosgedacht jetzt einmal:
Das USB-Experimentierboard von Velleman hat ja nur Digitale/Analoge In- bzw. Outputs.
Könnte man nicht ganz einfach hier an die Outputs die Steuerung für Displays anschließen? Also eventuell noch einen AtMega, dann den BUS, dann das Display...
An die Inputs könnte man dann ja auch die Buzzer, bzw. das komplette Buzzer-System anschließen.

Die Frage die sich mir hier dann stellt ist halt, ob man die Display-Steuerung mit dem Board überhaupt so betreiben kann? Hier gibt es ja keinen RxD / TxD Anschluss, sondern Lediglich digitale/analoge In- und Outputs.

wkrug
15.04.2012, 12:18
Also du hast gesagt, wenn der Laptop ein Signal sendet, muss er gleichzeitig auch wieder eines Empfangen (Empfangsbestätigung also sozusagen). Gilt das umgekehrt auch so? Also muss zuerst ein Signal gesenet werden um eines erhalten zu können?

Das ist absolut kein muß.
Es ging darum eigentlich um das debuggen mittels Terminal Programm.
Alle Daten die dein PC sendet werden nicht! im Nachrichtenfester des Terminalprogrammes angezeigt.
Die Nachrichten die von der Zielschaltung zum PC gesendet werden, zeigt tas Terminalfenster dagegen an.
In fast jedem Terminalprogramm gibt es eine Einstellung für ein "Local Echo". Mit dieser Einstellung werden wieder alle vom PC gesendeten Daten im Terminalfenster angezeigt. Allerdings auch, wenn die Zielschaltung gar nicht an der Komunikation teilnimmt.

Du kannst als Ebenso gut die Daten quasi "blind" vom PC aus senden und Dir von der Zielschaltung eine Quittung geben lassen:
z.B. Du sendest "blind" $t14:15<CR><LF>
Der Atmega antwortet mit OK<CR><LF> wenn er die Nachricht verstanden hat und mit Error<CR><LF> wenn die Nachricht unbekannt, oder fehlerhaft war.

Somit kann der PC feststellen, obe er den überhaupt ein Gegenüber hat ( Kommandoquittung kommt an ) und ob die Nachrichten richtig angenommen wurden ( OK oder Error ).
Weiterhin kannst Du das System ja noch ausweiten und bei "Error" einen Error cause mit ausgeben.
Error 0<CR><LF> könnte so z.B. Nachricht nicht verstanden bedeuten.
Error 1<CR><LF> wäre dann vieleicht Ausgang Bus Fehler.

Zudem kannst Du auch die betätigten Buzzer an den PC zuück senden lassen.
Buzzer 09<CR><LF> wäre z.B. Buzzer 9 betätigt.

Aber ich bin jetzt schon wieder mal in den Details. Ich versuch mal Dich mittels SKYPE zu erreichen.

ijjiij
16.04.2012, 13:00
Gut, ich war gerade dabei die neuen Schaltpläne nach unserer gestrigen Unerhaltung zu zeichnen. Leider kennt mein Eagle die MCP2515 und MCP2551 nicht.
Muss ich mir wohl neue Bibliotheken aus dem Internet besorgen...

wkrug
16.04.2012, 16:55
Wenn Du welche findest OK.
Wenn nicht, ich hätte da was passendes für EAGLE 5.6 hier.
Lediglich für den MCP2515 ist die SMD Bauform für die Handverlötung ein wenig ungünstig, aber brauchbar