Hy@all, Ich habe ein VB Programm zur Zeitmessung für bei Reitsportveranstaltungen geschrieben, welches die Teilnehmerinformationen aus einem weiteren bestehenden Programm bezieht, die Zeitinformationen von 2 bzw. 3 per Funk angebundenen Lichtschranken und evtl. Strafpunkte werden vom Bediener eingegeben. Nun möchte ich die von diesem Programm ermittelten Werte auf einer LED Außenanzeige darstellen, 1x 4fach 7-Segment für die Startnummer, 1x 4fach 7-Segment für die Strafpunkte und 1x 5fach 7-Segment für die Zeit. Die bestehenden Beiträge habe ich bereits überflogen,auch die entsprechenden Tutorials, aber eine Frage stellt sich mir noch immer : Welches ist der beste Weg die Daten vom PC-Programm zu der Anzeige zu übermitteln und wie setze ich das mit welchen benötigten Komponenten um ? Ich bitte meine Unwissenheit zu entschuldigen :) und freue mich über eure hilfreichen Antworten. MfG, Oliver.
Es gibt dafür fertige Anzeigentafel (um die 4 tausend Euro) die du dann direkt per RS232 oder Ethernet ansprechen kannst. Die für Profibus Asi Bus, ... sind um einiges teurer.
:) THX, das war sogar mir bekannt .... Da ich die Sache aber in einem finanziell etwas kleinerem Rahmen verwirklichen muss (max. 1K), habe ich hier um Hilfe gebeten :) Also Hinweise dazu was ich brauche um die Anzeige per RS232,Funk,Ethernet oder USB anzubinden, welche Teile,welche Bausätze usw .... MfG, Oliver.
Hi Mein Tip: Nimm einen 22'' Monitor und schreib dir eine Anzeige. Das ist allemal preiswerter. Natürlich kannst du dir auch eine Anzeige aus roten LED's zusammenbauen und mit einem µC steuern, aber wenn du da keine Erfahrung hast.. dann wird's wohl so schnell nix. Gruß oldmax
> Da ich die Sache aber in einem finanziell etwas kleinerem Rahmen > verwirklichen muss (max. 1K), habe ich hier um Hilfe gebeten :) Bis wann soll das laufen? Wie groß sollen die Leuchtziffern sein? Wie groß ist die Distanz vom PC bis zur Anzeige? Wieviel Erfahrung hast du mit Elektronik-Hardware?
oldmax schrieb:
> Nimm einen 22'' Monitor und schreib dir eine Anzeige.
Wie sieht das mit der Leuchtkraft im Vergleich zu einer ordentlichen
7-Segment-Anzeige aus?
Oliver Müller schrieb: > :) THX, das war sogar mir bekannt .... > Da ich die Sache aber in einem finanziell etwas kleinerem Rahmen > verwirklichen muss (max. 1K), habe ich hier um Hilfe gebeten :) Ich hab wieder mal ein Dejavue-Gefuehl, solche Freds gab es hier haeufig. Selten konnte man lesen, ob am Ende wirklich etwas zu Stande kam. Liegt wohl daran dass sie fast immer von Anfaengern gepostet wurden, die die Sache etwas unterschaetzt haben. Trotzdem viel Erfolg. Michael
Neben mechanischem Geschick und Geduld benötigst Du viel Zeit und dieser Punkt wird oft unterschätzt. Mit einem AVR (z. B.ATMEGA16) und diversen diskreten Bauelementen ist das Projekt sicher zu bewältigen. Programmteile wirst Du viele in der Codesammlung fehlen - eine Anpassung wird aber auf jeden Fall erforderlich sein. Das Hauptproblem ist der Aufbau der eigentlichen Anzeigen aus Einzel-LED und die optische Optimierung, damit das Display auch bei hellem Sonnenlicht ablesbar ist. 1k€ ist sicher realistisch und wenn Du Deinen Stundenlohn nicht rechnest sogar deutlich unterbieten zu sein. Gehe davon aus, dass aber mindestens 100 Stunden ins Land gehen werden. Otto
wie wäre es denn mit sowas hier? http://dic.academic.ru/pictures/dewiki/55/7-Segment-Anzeige_km-h.jpg
Gut,noch ein paar Einzelheiten zur Erläuterung : Die Segmente sollen die 200mm von ForgeEuropa werden,ist notwendig da sie über eine Entfernung von 75 bis 150 m lesbar sein sollen. (Je nach Platzgröße eben). Das das nicht von heute auf morgen funktioniert als newb ist mir bewusst,ich habe Zeit bis nächstes Frühjahr/Sommer wenn notwendig. Meine Zeit rechne ich natürlich nicht,ist klar. Den Kasten kann ich auf der Arbeit entsprechend bauen,Aluminium und entspiegelte oder Filterscheibe. Löten und Mechanik sollte ich auch beherrschen, wenn ich auch üblicherweise nicht in dieser Größenordnung (oder 'Kleinenordnung') arbeite:) Angebunden werden sollte die Anzeige an den PC entsprechend über Funk, aber auch da gibt es ja viele Möglichkeiten und ich kenne mich da eben nicht so gut aus. Offen ist für mich auch welche MC ich benötige um die drei Zeilen anzusteuern, einen oder besser zwei oder drei ? Multiplexing oder Schieberegister ? Eigentlich müssen die MC ja nicht 'viel' leisten, die Daten kommen ja vom PC aber ich sehe ja keine Möglichkeit die Segmente direkt anzusprechen. Bin also für jede weitere Hilfe dankbar. MfG, Oliver.
> 200mm von ForgeEuropa
Das ist schon mal ein Wort und erspart Dir einiges an Arbeit.
Die Funkanbindung solltest Du als eigenes Projekt sehen.
Eine Anbindung über RS-232 ist sicher die erste Wahl, bis Dein Display
zufriedenstellend läuft.
Bei der Vielzahl von Anzeigen wirst Du um Multiplex nicht herumkommen -
ist aber kein Hexenwerk.
Die Spannungsversorgung ist sicher auch noch ein Thema.
Otto
Oliver Müller schrieb: > Angebunden werden sollte die Anzeige an den PC entsprechend über Funk, > aber auch da gibt es ja viele Möglichkeiten und ich kenne mich da eben > nicht so gut aus. Das wäre allerdings noch 'ne Runde mehr. Ich würde an deiner Stelle erstmal mit klassischer RS-232 anfangen. > Offen ist für mich auch welche MC ich benötige um die drei Zeilen > anzusteuern, einen oder besser zwei oder drei ? Einer ist -- vor allem für einen Anfänger -- einfacher zu programmieren als ein Multi-Prozessor-Verbund. > Multiplexing oder Schieberegister ? Schließt sich beides nicht aus. Schieberegister braucht man, wenn die IO-Pins des Controllers nicht ausreichen. 100-pinnige Controller mit ihrem TQFP-Gehäuse im 0,5-mm-Raster sind nicht jedermann's Sache. Schieberegister helfen da, die kann man einfach über eine SPI-Schnittstelle treiben, die nahezu jeder Controller heute hat, und die Programmierung ist zwar etwas aufwändiger als bei Parallelausgabe, aber wenn man das Prinzip einmal verstanden hat, auch kein Problem. Multiplexing spart IO-Pins, allerdings muss man dann entsprechend höhere Spitzenströme treiben, für die das Display auch spezifiziert sein muss. Außerdem hast du schnell Flimmerneigung, die die Besucher stören kann. Dafür ist es natürlich bei der ohnehin notwendigen Taktung einfach, da auch noch ein Dimmen mit vorzusehen.
Habe sowas ähnliches vor 15 Jahren für unsere ortsansässige Kartbahn gemacht. Vom Zeitmesssystem (AMB20) kamen serielle Daten, die in eine von mir gebaute Box mit einem 8051 Mikrocontroller gingen. Mittels einem OSD-Chip (On Screen Display) dann die relevanten Infos per Videosignal an ganz normale Fernseher. Für das Publikum wurden Platzierungsnummer, Startnummer, Bestzeit und aktuelle Rundenzeit angezeigt. Dabei passten 10 Zeilen auf einen Bildschirm, bei mehr Startern schaltet das Gerät auf die 2. Anzeigeseite im 5 Sekundentakt um. Für die Rennfahrer wurden nur Kartnummer und aktuelle Zeit mit größeren Zeichen auf ein TV an der Strecke gegeben, wegen der besseren Lesbarkeit. Das System aus nunmehr 4 Anzeigen arbeitet nach 15 Jahren immernoch :-) Mit einem modernen Mikrocontroller würde man wohl das Videosignal direkt erzeugen und nicht über den Umweg eines OSD-Chips. Für Außenbahnen würde das aber wohl nicht gehen, weil TVs bei Lichteinwirkung schlecht abzulesen sind. Also wäre die erste Frage, für Outdoor oder Indoor? Joachim
Okay, da war jemand schneller. Frage hat sich damit erledigt.
Dann schon mal DANKE soweit. RS232 kann ich ja gleich behandeln wie die spätere Funkübertragung, gibt ja fertige Lösungen die RS232/Funk koppeln. ... und zum Testen sollte ich vielleicht nicht gleich die doch etwas teureren 200mm Segmente nehmen. Was bräuchte ich den im Einzelnen alles um via RS232 Daten an die Anzeige zu übertragen ? Empfehlungen ??? Danke im Voraus, Oliver.
Wenn ich as bauen würde, würde ich pro Zeile einen µC nehmen um ein paar segmentanzeigen zu Multiplexen. Der Master µC sendet die Anzuzeigenen Werte jeweils per Software UART an den jeweiligen Anzeige µC. So habe ich es bei meinem Digitaltacho gemacht und es funzt wunderbar.
> Was bräuchte ich den im Einzelnen alles um via RS232 Daten an die > Anzeige zu übertragen ? Einen MAX232-Schnittstellen-Pegelwandler und 5 Kondensatoren, eine 9-polige D-SUB-Buchse (bzw. Stecker) und einen Controller, der eine UART hat, wir z. B. ATMEGA16 Otto
Hier in der Codesammlung ist ein ähnliches Projekt: Beitrag "Duplex-LED-Display (Uhren-Radio) ATmega8 (Assembler)" (Achtung: andere Displays)
Danke, da habe ich ja erst mal ein paar Tage zu tun um mir das alles zu Gemüte zu führen. Welches Board sollte ich verwenden um alle Anforderungen erfüllen zu können ? Hat jemand auch noch einen Verweis darauf wie ich aus VB.net den Assembler Code per RS232 an den MC senden kann :) ? MfG, Oliver.
Sprichst Du von diesem Display? http://www.forge-europa.co.uk/pdfs/FEM-790HXX0DGW.pdf Wenn Du alle Segmente deiner Anzeige gleichzeitig einschaltest benötigst Du einen Strom von 7,8A bei einer Vorwärtsspannung von max. 26,4V, also über 200W. Da kannst Du dir schonmal Gedanken für eine ordentliche Stromversorgung machen und wie Du die Segmente überhaupt treiben willst.
Oliver Müller schrieb: > Hat jemand auch noch einen Verweis darauf wie ich aus VB.net den > Assembler Code per RS232 an den MC senden kann :) ? Willst du einen Assembler im Bootloader des Controllers implementieren? :-) Nein, du benutzt für den Controller eine Entwicklungsumgebung. Diese besitzt einen Compiler und/oder Assembler sowie eine Software, mit der man den fertigen Binärcode (zumeist als sogenanntes Intel-Hex- File) in den Controller programmieren kann. Dafür ist dann in aller Regel noch irgendwas an Hardware notwendig (ein Programmiergerät).
Klonk schrieb: > Da kannst Du dir schonmal Gedanken für eine ordentliche Stromversorgung > machen und wie Du die Segmente überhaupt treiben willst. Mit Elektronik im Bereich größerer Leistung kennt er sich doch wohl besser aus als mit Controllern (schrieb er zumindest).
>Nein, du benutzt für den Controller eine Entwicklungsumgebung. Diese >besitzt einen Compiler und/oder Assembler sowie eine Software, mit >der man den fertigen Binärcode (zumeist als sogenanntes Intel-Hex- >File) in den Controller programmieren kann. Dafür ist dann in aller >Regel noch irgendwas an Hardware notwendig (ein Programmiergerät). Vielleicht habe ich mich unverständlich ausgedrückt : Ich habe ja bereits ein Programm welches die anzuzeigenden Werte berechnet (in VB.net). Diese Werte muss ich ja nun programmgesteuert an den MC der Anzeige weitergeben. Die Frage war wie ich aus VB.net heraus über RS232 dem MC die anzuzeigenden Werte mitteile. MfG, Oliver.
Oliver Müller schrieb: > Die Frage war wie ich aus VB.net heraus über RS232 dem MC die > anzuzeigenden Werte mitteile. Wie auch immer du mittels VB.net halt eine serielle Schnittstelle ansprechen und dort Werte ausgeben kannst. Wenn du davon keine Ahnung hast (ich habe keine, habe weder Windows noch VB.net), dann kannst du das sicher im Forum über PC-Programmierung erfragen. Im Controller liest du diese Zeichen dann ein. Entweder gibst du sie 1:1 an deine Anzeige weiter (dann überschreiben sie halt alles, was vorher in der Anzeige stand), oder du definierst dir noch irgendwelche Steuerzeichen (Löschen des ganzen Displays, Sprung zu einer bestimmten Zeile, um dort weiterzuschreiben).
Danke erstmal, ich versuche jetzt erst mal die Anfänge umzusetzen und zu begreifen .... MfG, Oliver.
schaust du hier, "jasmin" / Dietmar Beitrag "Große 7-Segment Anzeige" was sollen die 20 cm displays von den inselapen denn kosten ???
Schau Dir mal das Datenblatt zum MC14499 (4x 7-Segmente LED-Treiber mit seriellem Eingang = Schieberegister; kaskadierbar) bzw MC14489 (5x 7-Segmente...) an. Damit sparst Du Dir die Programmierung und den Aufbau eines Multiplexers. Einfach die Daten seriell hineinschieben. Davor kommt ein kleiner AVR mit RS232-Anschluss. Davor eine RS232-Funkbrücke. Sender an den PC. Empfänger an den RS232 des AVR.
@Dietmar : Ja den entsprechenden Beitrag kenne ich. Über Farnell kosten die 200mm (gem.Anode) zw. 47 und 64 Euro,ForgeEuropa vertreibt zwar auch direkt,da warte ich aber noch auf eine Preisauskunft. @Christian : Danke für den Hinweis,habe mir die entsprechenden Datenblätter runtergeladen und arbeite sie gerade durch... Noch eine Frage zur Vorgehensweise : -Die erste Zeile (4 Segmente) zeigt die Starternummer, ändert sich in der Regel also alle 2 Minuten. -Die zweite Zeile (5 Segmente) zeigt die mitlaufende Zeit an,ändert sich also je 1/100 Sekunde. -Die dritte Zeile (4 Segmente) zeigt Strafpunkte an, ändert sich also auch nur gelegtlich. Ist es sinnvoller, jede Segmenteinheit mit einem einzelnen MC anzusteuern ? Nur wie teile ich dann die übertragenen Daten an die einzelnen MC's auf ? (Einen Master, drei slaves ???, Wenn ja, wie ???) SORRY für meine Unwissenheit, :) aber das wird sich im Laufe der Zeit ja hoffentlich ändern. MfG, Oliver.
Ob sich die Daten schnell oder langsam ändern, ist für eine Entscheidung für oder gegen Multiplex eher unerheblich. > Ist es sinnvoller, jede Segmenteinheit mit einem einzelnen MC > anzusteuern ? Jain - Der Aufbau ist evtl. klarer strukturiert aber Du hast weiteren Aufwand die Kommunikation unter den Controllern zu handlen. Ein ATMEGA16 (oder 32) hat 4 8-bit-Ports. Du benötigst einen Port für die 7 Segmente und Dezimalpunkt. Segmente sind die einzelnen Elemente EINES Displays. Pro Display benötigst Du einen Portpin für die "Auswahl" des "zu beschreibenden" Displays. Bei insgesamt 13 Displays sind dies (fast) 2 weitere belegte 8-bit-Ports. Hinzu kommen 2 Datenleitungen für RS232. Das heisst, dass Du noch mehr als Port als Reserve frei hast. Nimm einen Controller und steuere Segmente und Displays über Transistor oder Integrierte Treiber an. Gruss Otto
@Otto : Danke zuerst. Also einen MC, 2 LED Treiber 4 stellig und einen LED Treiber 5 stellig... (muss ich aber erstmal alle neuen Infos lesen und verarbeiten...) Bleibt also noch die Frage der Stromversorgung offen ??? MfG, Oliver.
Oliver Müller schrieb: > -Die zweite Zeile (5 Segmente) zeigt die mitlaufende Zeit an,ändert sich > also je 1/100 Sekunde. Wer kann denn so schnell lesen? ;-) Es genügt, wenn du diese deutlich seltener aktualisierst, allerdings solltest du irgendeinen Modus finden, bei dem auch die 10-ms-Stelle ,,flimmert'', d. h. nicht etwa die ganze Zeit nur 0 anzeigt. Du musst dir ein Kommunikationsprotokoll ausdenken, dann kannst du entscheiden, ob du das auf mehrere Controller aufteilen willst. Wenn du die von Christian beschriebenen seriell anzusteuernden Treiber nimmst, dreht der Controller wohl sowieso die meiste Zeit Däumchen. Das Kommunikationsprotokoll benutzt irgendwelche Zeichen, die nicht im Anzeige-Alphabet vorkommen (welches bei dir ja wohl nur aus Ziffern und Leerzeichen besteht, so ich das richtig sehe), um Steuerinfor- mationen zu übertragen. Ich könnte mir sowas vorstellen:
1 | A 123<NL> |
2 | B 99.54<NL> |
3 | C 50<NL> |
4 | X<NL> |
Der Buchstabe vorn bezeichnet, für welch der drei Zeilen der Anzeige die nachfolgenden Informationen gültig sind. Danach folgt der anzuzeigende Text, abgeschlossen mit einem Zeichen deiner Wahl, das wiederum nicht im Anzeigealphabet drin ist (habe mal ein Newline gewählt). Beim Empfang des ersten Zeichens schaltet die Controller- Firmware eine ,Weiche' für den Ausgabekanal. Das ist letztlich weiter nichts als die Festlegung, in welchen der drei Zeilenpuffer die nachfolgenden Daten übernommen werden. Danach werden die Daten in diesen Puffer gelesen bis das Abschlusszeichen erkannt wurde. Jetzt wird der entsprechende Puffer noch in die jeweilige Anzeigezeile rausgeschoben. Fertig, warten auf das nächste Zeichen. Zeichen X macht eine Initialisierung, also alle drei Puffer löschen und dann auf die Anzeige rausschieben. Du musst natürlich nie alle drei Zeilen gleichzeitig vom PC übertragen, in der Regel wirst du ja vor allem die B-Zeile aktualisieren.
Ein im Multiplexbetrieb angesteuertes Display wird nie so hell sein, wie ein parallel angesteuertes. Viele integrierte mehrstellige Displaytreiber arbeiten intern auch mit Multiplex. Netzteil: Du benötigst einen 5V-Regler für den Controller und eine 2. Spannung, welche höher sein muss, als die Flussspannung des Display - optimalerweise wäre die 2. Spannung ebenfalls stabilisiert. Der maximale Strom der 2. Spannung richtet sich nach der Betriebsart: - bei konventioneller Ansteuerung max. Dauerstrom x Stellenanzahl - bei Multiplex mindestens der maximale Pulsstrom einer Anzeige Wichtig ist, dass das Netzteil der 2. Spannung (also die der Displays) NIE unter die Flussspannung absinkt ! Andernfalls kannst Du die maximale Helligkeit bei bestimmten Ziffern nicht mehr sicherstellen ! Treiber: Du benötigst bei Multiplexbetrieb einen 8-Bit Segmenttreiber (z. B. ULN2803 max 500mA bei gemeinsamer Anode der Displays) und 13 Spaltentreiber, welche die Displays anwählen bzw. ein- und ausschalten. Dies ist im einfachsten Fall eine 2-stufige Transistorschaltung, die 13 mal benötigt wird. Otto
Otto schrieb: > Ein im Multiplexbetrieb angesteuertes Display wird nie so hell sein, wie > ein parallel angesteuertes. Das ist ziemlicher Quatsch. Es ist weder heller noch dunkler, so man den Strom um 1/T erhöht. Allerdings sind dieser Erhöhung halt Grenzen gesetzt in Form des maximalen Spitzenstroms, und EMV-mäßig ist das Schalten derartiger Ströme auch nicht so der Brüllern. Von der Warte her würde ich multiplex vermeiden. Aber passende Treiber waren ja schon geannnt worden.
Hiermit konkretisiere ich meine Aussage: wenn die Anzahl der Displays so gross ist, dass der maximal zulässige Pulsstrom niedriger ist als der rechnerisch benötigte, ist das Display nicht so hell, wie bei paralleler Ansteuerung. Beispiel: 10 Displays, max. Pulsstrom 100mA, max. Dauerstrom 10mA ist gleich hell 20 Displays, max. Pulsstrom 100mA, max. Dauerstrom 10mA ist dunkler
Multiplexing würde ich grundsätzlich vermeiden! Statischer Betrieb der Anzeige ist einfacher zu handhaben, gerade wegen der räumlichen Ausdehnung. Mein Ansatz wäre eine Kette aus Schieberegistern (4094/74HC595) und nachfolgenden Treibern (2803). Jedes Segment bekommt einen eigenen Treiber und das Bitmuster wird im µC erzeugt und per SPI alle 10ms ausgegeben. Da die Segmente mit konstantem Strom angesteuert werden müssen, ist die Versorgungsspannung einiges höher zu wählen und der Strom durch einen Widerstand zu begrenzen. Ich würde 35-40V ansetzen und ca. 47-100 Ohm als Vorwiderstand verwenden. Der Wirkungsgrad ist hier kein Thema. Die Helligkeit könnte per PWM an den enable-Eingängen der Schieberegister erfolgen oder in der Änderung der Spannungsversorgung, was keinerlei Störungen verursachen würde. Alles in allem reicht für diese schlichte Anwendung ein ATmega8 o.ä.. Für die Übertragung der Anzeigedaten ist ein Protokoll festzulegen, welches neben den Zahlenwerten vielleicht auch Blinken und Sonderzeichen (Buchstaben) sowie Dimmen enthalten sollte. Für die Anzeige der 1/100 Sekunde würde ich dem PC nicht trauen und u.U. einen Zähler im ATmega vorsehen, der auch dann weiterzählt, wenn die neuen Daten zu spät kommen. Das Wichtigste zum Schluß: es sind Vorversuche erforderlich, um die Ablesbarkeit im Außenbetrieb sicherzustellen, bevor die Anzeige aufgebaut wird.
>Änderung der Spannungsversorgung,
Korrektur: Änderung der Versorgungsspannung :-)
> Das Wichtigste zum Schluß: es sind Vorversuche erforderlich, um die > Ablesbarkeit im Außenbetrieb sicherzustellen, bevor die Anzeige > aufgebaut wird. Eine sehr richtige Aussage: kaufe Dir ein Displayx, steuere es statisch an und beurteile die Ablesbarkeit - besorge Dir auch geeignete Filterscheiben.
Otto schrieb: > Hiermit konkretisiere ich meine Aussage: > > wenn die Anzahl der Displays so gross ist, dass der maximal zulässige > Pulsstrom niedriger ist als der rechnerisch benötigte, ist das Display > nicht so hell, wie bei paralleler Ansteuerung. Dem stimme ich uneingeschränkt zu. ;-) Die genannten Displays können unter dieser Prämisse maximal 1:4 gemultiplext werden (75 mA maximaler Dauergleichstrom, 300 mA maximaler Impulsstrom).
??? viele offene Fragen :) Wenn ich also max. 1:4 multiplexen sollte (und die LED Treiber machen ja intern nichts anderes soweit ich das verstanden habe) dann fahre ich also bei der 5 stelligen Anzeige schon nicht mehr mit max. Helligkeit, richtig verstanden ? Wie rechnet sich das wenn ich an einem MC drei LED Treiber schalte, für jede Zeile eben einen ? MfG, Oliver.
Oliver Müller schrieb: > Wenn ich also max. 1:4 multiplexen sollte (und die LED Treiber machen ja > intern nichts anderes soweit ich das verstanden habe) dann fahre ich > also bei der 5 stelligen Anzeige schon nicht mehr mit max. Helligkeit, > richtig verstanden ? Da der ja 1:5 untersetzt, hast du nicht mehr die maximal mögliche Helligkeit. > Wie rechnet sich das wenn ich an einem MC drei LED Treiber schalte, für > jede Zeile eben einen ? Die sind jeder für sich eigenständig, was die Lichtstärke angeht. Allerdings würde ich den Strom der 4stelligen Anzeigen dann so weit reduzieren, dass sie effektiv die gleiche Helligkeit hat wie die 5stellige (d. h. du musst bei denen größere Vorwiderstände benutzen). Oder du verzichtest halt ganz auf Multiplex und treibst alles statisch, wie ja auch schon vorgeschlagen worden ist. Dann brauchst du allerdings auch viel mehr Vorwiderstände (7 · (5 + 4 + 4) = 91 Stück, wenn ich dein Vorhaben richtig verstanden habe). Die in den Vorwiderständen zu verheizende Leistung bleibt aber die gleiche, und wie hoch diese ist, hängt davon ab, wie viel die zweite Versorgungsspannung höher ist als die Flussspannung der LED-Anzeigen. Etwas Spielraum brauchst du aber, da die Dinger maximal 26,4 V Flussspannung brauchen, aber typisch nur 22 V. Wenn du also jetzt mit 30 V versorgst, und würdest deine Vorwiderstände auf 75 mA bei 26,4 V bemessen (48 Ω), dann würden bei typischer Flussspannung von 22 V bereits 170 mA (statt der erlaubten 75 mA) fließen. Allerdings kannst du natürlich die Anzeigen ausmessen und sehen, wie viel Spannung sie wirklich brauchen, dann den Netzteil entsprechend nachregeln. Das klappt aber nur, wenn die einzelnen Teile nicht zu stark streuen.
Anzumerken ist, dass Du aus Sicht der benötigten Port-Pin auch mit einem ATMEGA16 Controller die 3 Displays seperat Multiplexen kannst, so dass der Faktor 1:5 eingehalten werden kann, wenn Du keinen Dezimalpunkt anzeigen musst.
Alternativ alle Zeilen für 5 Segmentanzeigen vorsehen, aber bei zwei jeweils nur 4 bestücken. Damit ist gleiche Helligkeit aller Anzeigen garantiert (abgesehen von Bauteilabweichungen).
Nachtrag: kleiner Denkfehler - es geht auch mit Dezimalpunkt....
@Otto : Danke für deine ausführlichen Erklärungen,ich werde jetzt erst mal übers WE versuchen zu lernen und verstehen :) und dann mal anfangen zu bestellen und zu testen. Mit 'statisch antreiben' meinst du wenn ich es richtig verstanden habe die Ansteuerung über Schieberegister ? MfG, Oliver.
Mit "statisch" meine ich: das Display nur mit aus einer Spannungsversorgung betreiben - das heißt konkret, alle Segmente (Es zeigt dann "8." an) entweder über geeignete Vorwiderstände an eine feste Spannungsquelle oder über ein Labornetzteil mit einstellbarer Strombegrenzung betreiben.
Mein letztes Post gilt nur im Zusammenhang mi: > Eine sehr richtige Aussage: kaufe Dir ein Display, steuere es STATISCH > an und beurteile die Ablesbarkeit - besorge Dir auch geeignete > Filterscheiben.
Hallo Oliver, kennst Du zufällig einen Peter Engel? (autuvo.com) Dem hab ich nämlich genauso eine 7-Segment Anzeige gebaut. Auch für den Reitsport.... Gruß Peter
@Peter : Nein,ihn kenne ich nicht. Aber wenn du schon so eine Anzeige gebaut hast, könntest du mir ja evtl. sagen welche Bauteile (7-Segment,MC,LED Treiber usw) du dabei verwendet hast. MfG, Oliver.
Als Mikrocontroller hatte ich ein Crumb128 Board verwendet und 12 74HC595 Schieberegister und 12 ULN2803 Treiber. Ansteuerung war über die RS232 welche auch schon am Crumb Modul drauf war. Alles auf einer Lochrasterplatine aufgebaut. 7-Segment Anzeigen waren so riesen Dinger(300x150mm) die er aus China hatte...mit gemeinsamer Anode.
Hallo Oliver, ich habe so etwas auch mal gebaut, allerdings mit Glühlämpchen. Es ist eine 4-stellige 7-Segment Anzeige mit einem Komma hinter der 2. Stelle. So kann max. 99,99s angezeigt werden. Ich habe aber festgestellt, dass das auch schon mal zu wenig sein kann, also 5-stellig ist auf jeden Fall sinnvoll. Wenn Du die laufende Zeit anzeigst, dann reicht es, die Sekunden hochzuzählen und während der Messung die 1/10 und 1/100 auszublenden. Die kannst Du einblenden, wenn die Zeit angehalten ist und das Ergebnis feststeht. Ich habe bei meiner Anzeige immer 5 Glühlämpchen mit je 48V in Reihe geschaltet und diese mit Solid-State-Relais angeschaltet. Darin sind schon Optokoppler enthalten, so dass eine galvanische Trennung zur Ansteuerlogik gegeben ist. Der Vorteil ist, dass ich kein starkes Netzteil brauche, da die Anzeigen direkt mit 230V Netzspannung betrieben werden. Nur für die Logik habe ich ein kleines 5V Netzteil eingebaut. Bei mir werden die anzuzeigenden Daten seriell per Kabel an die Anzeige gesendet und von einem Microcontroller empfangen und decodiert. Um Pins zu Sparen (ich hatte damals nur 8 I/Os, es ist eine BasicStamp... würde ich heute nicht mehr damit machen sondern einen Atmel nehmen) sind 7-Segment Treiber 4511 und Adressleitungen verwendet. Die 4511 halten die Daten am Ausgang über einen Speichereingang, so dass die Anzeigen statisch angeschaltet sind, solange bis neue Daten angelegt werden. Du könntest für jede Anzeigeeinheit (Zeit, Startnummer, Fehler) einen Mikrocontroller nehmen und die seriellen Daten vom PC an alle gleichzeitig senden und eine Adresse für die entsprechende Anzeige mit übertragen. Dann könntest Du die auch einzeln betreiben, wenn z.B. mal nur Zeit benötigt wird. Die Glühlampenanzeige ist ziemlich hell (es sind(glaube ich) 5W Lämpchen) und ist auch bei direkter Sonneneinstrahlung noch gut zu lesen. Auch in 100m Entfernung. In mehreren Jahren Betrieb ist noch nie! eine Glühlampe (von den 145!) kaputt gegangen :) Wenn Interesse besteht, kann ich mal ein Foto machen... Viele Grüße, lute
@Lui : Danke für deinen interessanten Ansatz,auch wenn ich denke das ich die 'fertigen' 7-Segmente verwenden werde würde mich doch ein Foto deiner Lösung freuen. MfG, Oliver.
Kann sein das es schon jemand vorgeschlagen hat, hab nicht alles gelesen. Benedikt hat hier im Forum mal eine RS232-Funkbrücke über einfache RFM-Funktmodule vorgestellt. Du kannst du Anlage zunächst über ein Kabel an den PC anschließen und später einfach die Funkbrücke zwischenschalten, das sollte kaum Probleme geben. Vielleicht stellst du in der Anzeige auch beide Anschlüsse bereit. Wenn du einen RS485 Treiber einsetzt, kannst du für die Verbindung günstige Netzwerk-Patchkabel verwenden und bist relativ sicher vor Störungen.
@Gast : Danke, aber zur Zeit habe ich die Problematik der Übertragung nach hinten geschoben, da ich primär zuerst eine Lösung für die Ansteuerung einer 5 stelligen Anzeige mit diesen leuchtstarken Outdoor 7-Segmenten suche : http://www.forge-europa.co.uk/pdfs/FEM-790HXX00GW.pdf Wäre ja zu schön wenn es einen geeigneten LED Treiber geben würde der das 'erledigen' könnte. MfG, Oliver.
>Wäre ja zu schön wenn es einen geeigneten LED Treiber geben würde der >das 'erledigen' könnte. Hast Du nicht gelesen, was hier dazu geschrieben wurde?
@Schluck : Doch das habe ich.(Und zum Teil auch verstanden hoffe ich :) ) Doch es sieht ja so aus, das kein 'fertiges' LED Treibermodul gibt mit welchem ich eine 5-stellige Anzeige mit voller Leistung ansteuern könnte. Und wenn es für dich unverständlich sein sollte, das ich als newb vielleicht nicht alles direkt umsetzen kann, zwingt dich ja keiner meine Beiträge zu lesen und zu beantworten .... MfG, Oliver.
Na gut, dann überlassen wir das Wiederkäuen den Kühen.
Oliver Müller schrieb: > Doch es sieht ja so aus, das kein 'fertiges' LED Treibermodul gibt mit > welchem ich eine 5-stellige Anzeige mit voller Leistung ansteuern > könnte. Naja, als ,Modul', sprich als einzelnen IC gibt es das halt nicht, weil das so nicht geht. Entweder hast du Multiplexing (und dann hast du das Problem, dass bei weniger als 1:4 nicht die maximale Helligkeit erreichbar ist -- daran ist aber nicht der Treiber schuld, sondern deine Anzeigen), oder aber der Pincount würde für ein einzelnes IC einfach zu hoch, das lohnt dann nicht mehr. Wenn du also nicht multiplexen willst, musst du eben die bereits genannten 74HC595 + ULN2803 dafür benutzen. Von dieser Kombination brauchst du eins für jede Stelle deiner Anzeige. Auf eine Platine musst du das ja sowieso irgendwie setzen, nun kannst du dir noch überlegen, ob du für jede Anzeigezeile eine Platine machen willst oder eine Platine für alles -- das ist im Wesentlichen eine Geschmacksfrage, insbesonder hängt halt die Länge der Drähte davon ab. Wenn du eins pro Zeile machst, kannst du die Platine ja für 5 Stellen entwerfen und dann dreimal bauen; bei den Zeilen, die nur 4 Stellen haben, lässt du einfach das jeweils letzte Paar weg.
Neugierige Frage: Was kostet denn so ein Display bei Forge Europa?
@Christian : Die Standard Ausführung siehe hier : http://de.farnell.com/forge-europa/fem-7902r0300gw/led-display-200mm-rot-gem-anode/dp/1200619 für die Outdoor habe ich noch keine Preisantwort ...
@Jörg : Danke für deine Erläuterungen. Habe aus einem anderen Beitrag hier den angehängten Schaltplan, könnte ich das aus so lösen ? MfG, Oliver.
Die von Dir vor 2 Beiträgen verlinkten Displays haben gemeinsame Anode - die in der Schaltung verwendeten gemeinsame Kathode. Otto
.... sorry, das kommt wenn der Unwissende nicht richtig schaut und nachdenkt.
macht nichts - im Prinzip must Du für gemeinsame Anode nur Spalten- und Segmenttreiber "vertauschen" - dass heisst, der ULN2803 treibt bei gemeinsamer Anode die Segmente der Displays (das sind die Kathoden) und der anderen Baustein die "Spalten" (das sind die gemeinsamen Anoden). Selbstverständlich muss das Programm (falls das dabei war) entsprechend angepasst werden.
Die Schaltung, die du ausgegraben hast, macht multiplex. Das willst du nicht. Die 74HC595 werden einfach hintereinander verkettet, das sind serielle Schieberegister mit parallelen Ausgängen. Jedes hat aber auch noch einen seriellen Ausgang, damit baust du die Kette zum nächsten auf. Alle Register einer Kette werden mit einem einzigen Takt getaktet, außerdem haben sie noch ein Freigabesignal, mit dem der Inhalt des Schieberegisters ins Ausgangsregister übernommen wird. Nachdem du alle Bits einer Kette durch das Schieberegister durch geschoben hast, gibst du einen Impuls auf dieses Signal, damit werden die Ausgänge dann auf den neuen Wert geschaltet. Die ULN2803 kommen dann an die Ausgänge dran und arbeiten als Segmenttreiber, der Kollektor jedes einzelnen Transistors geht dann an die Katode eines LED-Segments. Von der Anode des Segments brauchst du noch einen Strombegrenzungswiderstand (pro Segment!), mit dem geht's dann an +30 V (oder wieviel auch immer du als Versorgung nimmst).
Ich persönlich würde die schon bereits weiter oben genannte Vorgehensweise mit 74HC595 und ULN2803 bevorzugen, da bei 75mA pro Segment die max. zulässigen 500mA der Treiber überschritten werden.
@Jörg/Christian : Denke/rechne ich falsch ? Wenn ich mit Schieberegistern arbeite(74xx595/ULN2803)für jedes Segment kann ich mit 75mA belasten, wenn ich aber kombinierte Treiberbausteine für jede Zeile verwenden würde ( 2x je 4 Segmente, 1x 5 Segmente) und diese bis zu 500mA verkraften wo liegt dann der Nachteil bzw. die geringere Leistungsfähigkeit dieser Lösung ? Danke für eure Geduld im Voraus, Oliver.
Hallo Oliver, ich habe diesen Thread gerade entdeckt und habe ihn überflogen. Dabei interessierten mich diese Anzeigen von Forge Europa, da ich ähnliche Anzeigen schon gebaut habe. Wenn ich das Datenblatt richtig interpretiere, reden die bei dieser Anzeige von Helligkeiten im Bereich von einigen wenigen 100 mcd - ein typischer Wert für solche Großanzeigen. Bist Du dir sicher, das Du mit dieser Helligkeit glücklich wirst, gerade im Außenbereich? Meine Lösungen basieren immer aus Anordnungen von 'normalen' LEDs, weil ich bisher keine fertige Großanzeige gefunden habe, die die benötigte Outdoor-Helligkeit auch nur annähernd bringt. Hast Du da bereits Erfahrungswerte?
@Harald : siehe http://www.forge-europa.co.uk/pdfs/FEM-790HXX00GW.pdf hoffe das die ausreichen. Ich werde mir davon eine zum Probieren besorgen und die Erfahrungen hier posten. Ich habe nur bisher keinen Distributor gefunden wo ich diese Version bestellen kann und meine Anfrage an ForgeEuropa direkt ist noch unbeantwortet. MfG, Oliver.
Beim Multiplexing steuerst Du immer nur EINE Ziffer deiner Anzeige nach der anderen an. Dabei wechselst Du die Ziffern so schnell, dass es für das menschliche Auge flimmerfrei erscheint. Für den Betrachter leuchten also alle Ziffern quasi gleichzeitig. Das Problem hierbei ist, dass bei 5 Ziffern jede Ziffer natürlich nur 1/5 der Zeit leuchtet. Sie erscheint dem Betrachter dadurch wesentlich dunkler. Dem kann man nun entgegenwirken indem man den Strom für die Segmente der Ziffer erhöht. Laut Datenblatt kannst Du den Anzeigen bei einem Tastverhältnis von 1/10 noch einen Segmentstrom von 300mA zumuten. Da Du mit einem Tastverhältnis von 1/5 arbeiten würdest, solltest Du diesen auf 150mA beschränken (Frage an die Experten: Kann man das hier so einfach rechnen?). Zu Problemen wird es kommen, falls z.B. dein Programm abstürzt oder das Multiplexing aus irgendwelchen anderen Gründen versagt. Du hast dann auf einmal 150mA dauerhaft durch die Segmente einer einzigen Ziffer fließen. Pro Ziffer würdest Du bei 150mA Segmentstrom auf etwa 1,2A kommen. Ob die Treiber der oben gezeigten Schaltung diese bei einem Tatsverhältnis von 1/5 überhaupt aushalten müsste man mal im Datenblatt nachlesen. Kurz gesagt: + weniger Hardwareaufwand - mehr Aufwand bei der Programmierung - Gefährdung deiner Displays beim Versagen des Multiplexing - Evtl. Probleme mit obiger Schaltung wegen zu hoher Ströme für die Treiber Vielleicht bringt der folgende Artikel ja auch etwas mehr Licht ins Dunkle. http://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige
Hi, hier ist ein Bild von meiner Glühlampenanzeige (sorry, ist ein bischen unscharf). Die Ziffern sind ca. 26 cm hoch. Viele Grüße
Gibt es irgendwo einen Beispielschaltplan für mehrere 7-Segmente der die Lösung mit den 74HC595 und ULN2803 zeigt, würde mir beim Verstehen weiterhelfen :) MfG, Oliver.
Naja, sooo schwer ist das doch nicht. Fertig habe ich das auch nicht, aber ich habe in meiner Nixie-Uhr die Ansteuerung der einzelnen Stellen mit 74HC595 gemacht. Das hänge ich dir mal an. Hier eine einzelne Stelle. Entscheidend für dich ist die Beschaltung des 74HC595 selbst. /EN habe ich dauerhaft auf Masse, das schaltet die Ausgänge in den Tristate, wenn der Eingang high ist. Habe ich nicht gebraucht, du könntest das bei Bedarf benutzen, um per PWM eine Helligkeitssteuerung zu realisieren, falls die Anzeigen unter bestimmten Beleuchtungs- bedingungen zu hell sind. Auf der rechten Seite findest du die Ausgänge, die bei mir zur Buchse X10 weiter gehen (dort waren meine Nixie-Blöcke reingesteckt). Stattdessen müsstest du dann die ULN2803 anschließen. Diese sind weiter nichts als (Darlington-)Transistoren mit einem Basisvorwider- stand. Wenn sie ein high am Eingang sehen, dann schaltet der Transistor zwischen Kollektor und Emitter (Masse) durch. Vom Kollektor muss dann also über den bereits besprochenen Vorwiderstand das jeweilige Segment des Anzeigemoduls angeschlossen werden, Katode der LEDs in Richtung Kollektor+Widerstand, Anode an die Versorgungs- spannung von ~ 30 V. LATCH_CLK ist das Signal, mit dem der Inhalt des Schieberegisters in die Ausgangsstufen übernommen wird. (Bei NXP wird dieses Signal als ST_CP bezeichnet.) Dies erfolgt mit einer positiven Flanke. Alle Stellen einer Zeile bekommen dieses Signal verbunden, gesteuert wird es von einem Ausgang des Controllers. Dadurch kann man die Daten ,,im Hintergrund'' in das Schieberegister bit für bit reintakten, ohne dass sie bereits in der Anzeige (als ganz schnelles Flimmern) wirksam werden. SER_CLK (bei NXP als SH_CP bezeichnet) ist der serielle Takt. Das wirst du normalerweise mit dem SCK-Ausgang des SPI-Blocks deines Controllers verbinden. Nächstes Bild...
...zeigt die Zusammenschaltung der einzelnen Anzeigestellen bei mir. Hier siehst du, wie jeweils SER_IN einer Stelle von SER_OUT der vorhergehenden angesteuert wird. Das letzte SER_OUT bleibt frei, das erste SER_OUT wird mit MOSI des SPI-Blocks am Controller verbunden. DP sind bei mir die Dezimalpunkte, die nicht als Teil der Schiebe- registerkette ausgegeben werden, da ich alle 8 Bits für die Ansteuerung meiner Nixie-Module benötigt habe. Du könntest bei dir die Dezimalpunkte mit in die Schieberegister aufnehmen, wenn du willst. Die SPI-Leitungen (SER_CLK und SER_IN) aller drei Anzeigezeilen kannst du parallel an den Controller klemmen. Damit werden alle Informationen zwar in jede der drei Zeilen reingetaktet, aber am Ende entscheidet ja der Impuls am jeweiligen LATCH_CLK, welche der drei Zeilen die Information tatsächlich in die Ausgabe übernehmen. Du müsstest damit nur drei verschiedene Ausgänge am Controller für LATCH_CLK jeder der drei Zeilen vorsehen, der Rest wird gemeinsam benutzt. (Falls du einen AVR benutzen willst: dort muss der Pin /SS ein Ausgang sein, wenn man den SPI-Block im Master-Modus benutzen will. Damit bietet es sich an, dass einer der drei LATCH_CLK an /SS gelegt wird, die anderen beiden gehen dann wahlfrei an andere Ausgänge des Controllers.)
Hallo Oliver, ich arbeite seit längerem an einem ählichen System. Ich habe 8x 7-Segmet-Anzeigen im Multiplex-Betrieb laufen. Das Bild zeigt den schematischen Aufbau. Je Display habe ich einen PNP zum Anschalten der Versorgungsspannung an Common. Die Segmente (A1, A2, ... An; B1, B2,...)werden alle zusammengefasst über jeweils eine Konstantstromquelle geführt. Das hat den Vorteil, dass man nur noch die Displays über ein Flachbandkabel verbinden muss. Wenn ich später Zuhause bin, suche mal nach dem Plan. Grüße Quirk
@jörg: Danke für die Hinweise,ich denke Avr und Schieberegisterkette sind mir jetzt einigermaßen klar, ein Beispiel wie ich die ULN2803 anschließe wäre noch schön .... MfG, Oliver.
Oliver Müller schrieb: > ein Beispiel wie ich die ULN2803 anschließe > wäre noch schön .... Hmm, so schwer ist das doch gar nicht. Hast du dir denn die Innenschaltung mal angeguckt?
Habe ich das in dem angehängten Schaltplan jetzt richtig umgesetzt für das eine Segment ??? Thx, Oliver.
Oliver Müller schrieb: > Habe ich das in dem angehängten Schaltplan jetzt richtig umgesetzt für > das eine Segment ??? > Wenn der einsame Anschluss rechts die Versorgungsspannung sein soll und du dem Chip noch einen Masseanschluss spendierst: ja Ist doch ganz einfach: den ULN2803 kann man sich wie Schalter vorstellen, der seine Ausgänge mit Masse verbindet, wenn der zugehörige Eingang entsprechend steht.
Nein: - die Widerstände am Display hast Du alle überbrückt - der Reset gehört über einen Pull-Up an +5V - AVCC gehört an +5V - Alle GND der IC müssen mit einem GND-Symbol beschaltet werden - an der Versorgung jedes IC gehört ein 100nF
Hast Du Dir Gedanken darüber gemacht, wie Du die Schaltung aufbaust ? Soll es eine Lochraster-Platine oder eine Geätzte werden ? Sollen die Displays über Drähte angeschlossen werden ? Ist das Netzteil eine seperate Baugruppe ? Das solltest Du in Deinen Schaltplan einfliessen lassen.
Otto schrieb: > - an der Versorgung jedes IC gehört ein 100nF Wobei die ULN2803 in dem Sinne keine ICs sind, da hängen am Pin 10 nur die Freilaufdioden dran, die auf Grund der nicht vorhandenen induktiven Last hier egal sind. Man könnte den Pin auch komplett offen lassen. Aber der AVR sollte 2 solcher Kondensatoren bekommen (direkt neben das jeweilige Paar, also Vcc/GND und AVcc/GND) und jeder der 74HC595 ebenfalls. Die Segmentwiderstände müssen eine ausreichende Verlustleistung haben. War ich oben schon mal drauf eingegangen. Entweder für worst case mit relativ hoher Versorgungsspannung und großen Widerständen mit entsprechend viel Verlusten dimensionieren, oder die tatsächliche Flussspannung der LEDs messen und dann entsprechend aufbauen.
Pin 13 der 74HC595 (G oder /EN) müssen entweder an GND oder an einen Controller-Pin, falls eine Helligkeitssteuerung gewünscht wird (dann sollte das ein OCx-Pin sein). Pin 10 der 74HC595 (Reset) können fest an Vcc gelegt werden, diese Funktionalität braucht man nicht.
Danke für die Fehlerkorrekturen, was bewirken die Kondensatoren bzw. was würde/könnte passieren wenn sie nicht verwendet werden ? Nicht lachen, aber wie füge ich in Eagle das Groundsymbol ein, finde ich einfach nicht .... @Otto : Ja die weitere Vorgehensweise.... Zum Probieren/Testen dachte ich eigentlich an eine Lochrasterplatine und die 7 Segmente wollte ich aufgrund ihrer Größe entsprechend verkabeln und auch ersteinmal mit externen Netzteilen arbeiten. Wenn mal alles so funktioniert wie gedacht könnte man da ja auch noch einiges verbessern, aber ich als newb muss ja zuerst mal die ganze Sache ans Laufen bekommen und ich muss ja auch noch die serielle Datenübertragung vom PC zum MC und die Darstellung der gewünschten Daten auf dem Display erst einmal hinbekommen, das wird ja auch noch etwas dauern .... Aber wie gesagt,ich habe ja einen weit gesteckten Zeitrahmen und noch viel zu lernen ..... (und trotzdem schon 'spinnerte' Erweiterungspläne im Kopf) MfG, Oliver.
>Nicht lachen, aber wie füge ich in Eagle das Groundsymbol ein, finde ich
einfach nicht ....
Das findest Du in der supply1.lbr
> was bewirken die Kondensatoren bzw. was würde/könnte passieren wenn sie nicht verwendet werden ? Schau mal hier: http://www.rn-wissen.de/index.php/Abblockkondensator Ganz wichtig: Möglichst nahe an den entsprechenden Pins des IC legen.
So,ich habe einmal meinen nächsten Schaltplanversuch angefügt und würde mich über weitere Korrekturen und Hinweise freuen. Wie schließe ich die benötigten Kondensatoren bei den 74HC595 an ? Und noch ein paar Fragen bezüglich der Steuerung bzw. des Programmablaufes : (Ich habe zwar die entsprechenden Tutorials hier gelesen (UART,SPI), aber einiges ist leider immer noch offen...) Ich sende also vom PC via RS232 eine Zeichenfolge an den MC welche angibt welche der drei 7-Segmentzeilen ausgewählt werden soll und welcher Inhalt angezeigt werden soll und ein Abschlusszeichen. Durch den Empfang des Kommandos wird ein Interupt ausgelöst und je nach Auswahl soll der Inhalt per SPI an die entsprechende 7-Segment Zeile ausgegeben werden. Ich hoffe das ist gedanklich vom Ablauf her richtig. Gibt es irgendwo Beispiele für so eine 'Kombination' zwischen Kommandos via UART einlesen und Ausgaben via SPI durchführen ? Wenn ich das AVRStudio verwende (kann ich zur Zeit noch nicht runterladen,bin im Urlaub und habe nur einen OGO mit :( ), kann ich damit auch ohne angeschlossenen MC eine solche Testumgebung und meine Programmfunktionalität in der Emulation testen ??? Danke für eure Hilfe im Voraus, wird bestimmt nicht meine letzte Frage gewesen sein :) MfG, Oliver.
Ach du meine Güte, was ist den das für eine Hardwareschlacht um 7 Segmentanzeigen anzusteuern ? Von den Aufwänden bei eventuellen Erweiterungen gar nicht zu sprechen ... Google einfach mal nach UCN5841, oder dessen Nachfolger oder erweiterten Treibern und Dir wird hoffentlich ein (LED) Licht aufgehen. Ansonsten stirbst Du bei der Löterei an Bleivergiftung ;-). Das gekoppelt mit dem kleinsten AVR, ein bischen Software und Du bist fein raus..... D.S.
Dietmar S hat wahrscheinlich nicht den gesammten Thread gelesen..... vergiss es einfach....
Entschuldigung - Dietmar S hat recht - der UCN5842A wäre gut geeignet (siehe Applikation im Datenblatt) !
Dietmar S hat damit schon mehrere "professionelle" Großanzeigen für große Sporthallen gebaut und damit über Jahre ne Menge Erfahrungen gesammelt ;-) Schick mal Deine Mailadresse und sende Dir den Sourcecode nebst Schaltbild. Aber der Hersteller hat mittlerweile glaube ich noch besser Alternativen im Programm.... Die Lösung ist die trivialste, stabilste und preiswerteste, believe me !
Otto schrieb: > Entschuldigung - Dietmar S hat recht - der UCN5842A wäre gut geeignet > (siehe Applikation im Datenblatt) ! Ist halt nur schade, dass er damit jetzt erst ankommt, wenn unser Kandidat allmählich die 74HC595 + ULN2803-Lösung in der Tasche hat. Von der inneren Logik her ist der UCN5842A nicht viel anders als eine Kombination aus '595 und ULN2803, man spart also die Hälfte an ICs, dafür muss man gucken, wo man den Allegro-Kram überhaupt kaufen kann. Eine Hardwareschlacht bleibt letztlich beides, aber das ist den gewünschten Strömen geschuldet und der Tatsache, dass ein Multiplexbetrieb aus diversen Gründen abgewählt worden war.
Sorry, aber ich hatte das schon mehrfach hier vor längerer Zeit als Lösung gepostet, sogar Anfangs schon in diesem Thread. Übrigens spart man unter anderem eventuell auch das ganze Platinengedrösel. Den Ucn kann man auch mit der Heißklebepistole hinten auf die Anzeige kleben und verdrahten. Von Anzeige zu Anzeige dann einfach nur STROBE CLOCK und DATA schleifen nebst +/-. Die Versorgungsspannung habe ich pro IC über einen 78L05/12 erzeugt. Bei der Direktversogung gabs Probleme. Die "neueren" Bausteine (auch in 32 BIT o.ä.) haben auch eine current loop Steuerung, so daß man hier auch bequem die Helligkeit regeln kann und die Vorwiderstände ggf. obsolet werden. Bei der Beschaffung hatte ich keine Probleme, Samples haben die auch rausgerückt. Die 7 Segmentanzeigen habe ich von Hand auf eine Platine mit ca. 250 Hochleistungs-leds aufgebaut. Das ind die fertigen Anzeigen vielleicht eine gute Alternative D.S.
Hier ist eine Schaltung für die serielle Ansteuerung von kaskadierbaren 7Segment- LED. Die Anbieterseite ist: http://www.sureelectronics.net/goods.php?id=136
@ Klaus das ist der Hammer !!! http://www.sureelectronics.net/pdfs/DE-DP029~033_Ver1.0_EN.pdf schaut euch mal die Dinger an .... für unter 40 € das ist ne Tapete von über 25 mal 50 cm !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Ich glaub davon bestelle ich mal 4 Stück ! So billig gibts noch nicht mal die Einzelteile in Summe Klasse
Naja, in so eine Direkt-Verklebe-Methode hätte ich nicht das rechte Langzeitvertrauen. Die Anzeige, die du zuletzt rausgekramt hast, ist natürlich wirklich nett für jemanden, der sowas vorhat.
@all : Danke für die neuen Informationen, werde ich erst einmal sichten und versuchen zu verarbeiten. @Dietmar : Habe dir meine Mailadresse gesendet und warte auf deine Antwort,Danke schon einmal im Voraus. MfG, Oliver.
oliver, habe bisher keine mail erhalten. gib deine mal "verschlüsselt" hierüber bekannt.
Zum Schaltbild: Der 7824 ist natürlich hoffnungslos überlastet. Hier fließen wesentlich höhere Ströme. Zudem sind 24 Volt zu wenig. Die Segmente haben eine Forward Voltage von bis zu 26,4V. Da solltest Du auf jeden Fall drüber liegen. Ich persönlich würde mich hier mal auf die Suche nach einem Schaltnetzteil mit einer stabilisierten Ausgangsspannung von mind. 30V begeben.
@chris : Danke für die Korrekturen. Wenn ich ja wüsste ob diese 7-Segmente hier hell genug sind, dann wären sie ja optimal, integrierte Schieberegister und Treiber, per SPI ansteuerbar : http://www.sureelectronics.net/goods.php?id=721 und preislich auch konkurenzlos günstig. @dietmar : warte 'sehnsüchtig' auf deine mail :) MfG, Oliver.
Tja, eine Angabe hierzu scheint nicht im Manual zu stehen. Kann man ja auch mal anfragen. Zur Not muss man eben je eine Anzeige von beiden Bestellen und schauen wie hell sie jeweils sind. Bedenke, dass bei einer Lieferung aus China Einfuhrumsatzsteuer beim deutschen Zoll fällig wird (auch auf die Versandkosten).
@Oliver Viel Spaß. Der Code funktioniert wie geschmiert!!! '( Diese Software steht unter GPL Copyright (C) [2006] [Dietmar Steiner] 'This program is free software; you can redistribute it and/or modify it 'under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>. ') $regfile = "m8def.dat" ' specify the used micro $crystal = 8000000 ' used crystal frequency $baud = 38400 Config Portb.0 = Output Config Portb.3 = Output Config Portb.4 = Output Config Portb.5 = Output Alarm_out_pin Alias Portb.0 Data_out_pin Alias Portb.3 Clock_out_pin Alias Portb.4 Strobe_out_pin Alias Portb.5 Set Strobe_out_pin Reset Data_out_pin Reset Clock_out_pin Alarm_out_pin = 0 '( In Bascom ist es möglich, ein und denselben SRAM-Platz mit mehreren Variablen zu belegen. Wir können z.B. anweisen, daß unsere String-Variable auf Adresse &H60 gesetzt werden soll. Gleichzeitig können wir ein Feld mit n Bytes dimensionieren, das auf der gleichen Adresse liegen soll. (ein n Byte langer String benötigt n+1 Bytes Platz). Damit können wir ganz einfach und effizient über völlig verschiedene Methoden auf denselben Speicher zugreifen. Der String wird auf Adresse &H60 im AVR abgelegt. Dies ist die Adresse des ersten Bytes im SRAM .Da der AT90S2313 über 128 Bytes SRAM vefügt, ist die höchste SRAM-Adresse &HDF. Quasi "darüber", also auf die selbe Adresse, legen wir ein Feld, das genauso lang wie der String ist. Das ist alles. Der Trick ist nur, daß wir beim Füllen des Strings in unserem Anwendungsfall am effizientesten mit einem Feld arbeiten können, während in anderen Fällen die Arbeit mit einem String günstiger sein kann. Welche Wege man in der Praxis gehen will, hängt natürlich immer von der Anwendung ab. Die Anwendung des Overlay-Tricks kostet weder zusätzlichen Code, noch SRAM. ') Dim S As String * 16 At &H60 Dim B(15) As Byte At &H60 Overlay Dim Shift_string As String * 16 Dim A(15) As Byte Dim N As Byte Dim I As Byte Dim Ausgabe As Byte Dim Newstring As Bit Dim Frame_complete As Bit Dim Dummy As Byte Dim Delay_1 As Byte Frame_complete = 1 Newstring = 0 N = 1 'Array beginnt bei 1 Delay_1 = 50 Dim Index As Byte On Urxc Onrxd Enable Urxc Enable Interrupts Bkz_zehner_weiss Alias B(1) Bkz_einer_weiss Alias B(2) Hkz_minute Alias B(3) Hkz_sek_zehner Alias B(4) Hkz_sek_einer Alias B(5) ' Bkz_zehner_blau Alias B(6) Bkz_einer_blau Alias B(7) Strafe_blau Alias B(8) Wazaari_blau Alias B(9) Yuko_blau Alias B(10) Koka_blau Alias B(11) Strafe_weiss Alias B(12) Wazaari_weiss Alias B(13) Yuko_weiss Alias B(14) Koka_weiss Alias B(15) '*********************************************************************** '* Zuordnung Bit zu Segment * '* * '* 2 A BIT|SEGMENT * '* ----------- * '* --------- 1 | b----> (LSB) * '* | | 2 | a * '* | | 3 | c * '* 8 f | | 1 b 4 | -----> frei * '* | | 5 | g * '* | 5 g | 6 | d * '* --------- 7 | e * '* | | 8 | f----> (MSB) * '* | | * '* 7 e | | 3 c * '* | | * '* | | * '* --------- * '* 6 D * '* * '* ____ * '* | | * '* DATA | | * '* ________| |__________________________ * '* ____ * '* | | * '* CLOCK | | * '* ____________| |______________________ * '* ____ * '* | | * '* STROBE | | * '*______________________| |_____________ * '* * '* * '*********************************************************************** 'Wenn: 1 MSB shifted out first when clock_out_pin goes high 'Segment zu BIT fedg-cab ' |||||||| '1= &B00000101 '=1 '2= &B01110011 '=2 '3= &B00110111 '=3 '4= &B10010101 '=4 '5= &B10110110 '=5 '6= &B11110110 '=6 '7= &B00000111 '=7 '8= &B11110111 '=8 '9= &B10110111 '=9 '0= &B11100111 '=0 'S= &B10110110 '=S 'U= &B11100101 '=U 'A= &B11010111 '=A 'E= &B11110010 '=E (Error) 'H= &B11011101 '=H 'h= &B11100100 '=h 'd= &B01110101 '=d 'b= &B11110000 '=b 'L= &B11100000 '=E 'o= &B01110010 '=o 'r= &B11010010 '=F 'P= &B11010011 '=P Segment_a Alias &B00000010 ' Segment_b Alias &B00000001 ' Segment_c Alias &B00000100 ' Segment_d Alias &B00100000 ' Segment_e Alias &B01000000 ' Segment_f Alias &B10000000 ' Segment_g Alias &B00010000 ' Do If Frame_complete = 1 Then For Index = 1 To 15 A(index) = B(index) Next I Frame_complete = 0 End If For Index = 1 To 15 Ausgabe = A(index) Select Case Ausgabe Case Asc( "1") : Ausgabe = &B00000101 '=1 Case Asc( "2") : Ausgabe = &B01110011 '=2 Case Asc( "3") : Ausgabe = &B00110111 '=3 Case Asc( "4") : Ausgabe = &B10010101 '=4 Case Asc( "5") : Ausgabe = &B10110110 '=5 Case Asc( "6") : Ausgabe = &B11110110 '=6 Case Asc( "7") : Ausgabe = &B00000111 '=7 Case Asc( "8") : Ausgabe = &B11110111 '=8 Case Asc( "9") : Ausgabe = &B10110111 '=9 Case Asc( "0") : Ausgabe = &B11100111 '=0 Case Asc( "S") : Ausgabe = &B10110110 '=S Case Asc( "s") : Ausgabe = &B10110110 '=s Case Asc( "U") : Ausgabe = &B11100101 '=U Case Asc( "u") : Ausgabe = &B11100101 '=U Case Asc( "A") : Ausgabe = &B11010111 '=A Case Asc( "a") : Ausgabe = &B11010111 '=a Case Asc( "E") : Ausgabe = &B11010111 '=E Case Asc( "e") : Ausgabe = &B11010111 '=e Case Asc( "H") : Ausgabe = &B11011101 '=H Case Asc( "h") : Ausgabe = &B11100100 '=h Case Asc( "o") : Ausgabe = &B00101110 '=o Case Asc( "F") : Ausgabe = &B11000011 '=F Case Asc( "b") : Ausgabe = &B00111111 '=b Case Asc( "d") : Ausgabe = &B01110101 '=d Case Asc( "L") : Ausgabe = &B00000111 '=L Case Asc( "r") : Ausgabe = &B01010000 '=r Case Asc( "P") : Ausgabe = &B11010011 '=P 'Case Asc( "(") : Ausgabe = &B01000111 '=[ 'Case Asc( ")") : Ausgabe = &B11100100 '=] 'Case Asc( "-") : Ausgabe = &B00001000 '=- 'Case Asc( "_") : Ausgabe = &B11010011 '=_ 'Case Asc( "=") : Ausgabe = &B00000100 '= = 'Case Asc( "P") : Ausgabe = &B11010011 '=P 'Case Asc( "P") : Ausgabe = &B11010011 '=P 'Case Asc( "P") : Ausgabe = &B11010011 '=P Case 0 : Ausgabe = &B00000000 'Leerzeichen Case 32 : Ausgabe = &B00000000 Case Else Ausgabe = &B11110010 '=E Error End Select Shiftout Data_out_pin , Clock_out_pin , Ausgabe , 1 ' [ , 8 , 1 ] Next Index Set Strobe_out_pin Waitms 1 Reset Strobe_out_pin Loop '********************************************* '* * '* Interrupt Service Routinen * '* * '********************************************* Onrxd: If Udr = "+" Then Alarm_out_pin = 1 End If If Udr = "-" Then Alarm_out_pin = 0 End If If Newstring = 1 Then B(n) = Udr 'Print N 'Print B(n) Incr N If N > 15 Then N = 1 Frame_complete = 1 Newstring = 0 End If End If If Udr = "*" Then Newstring = 1 End If Return '( Zeigean: For Index = 1 To 15 Ausgabe = B(index) Select Case Ausgabe Case Asc( "1") : Ausgabe = &B00000101 '=1 Case Asc( "2") : Ausgabe = &B01110011 '=2 Case Asc( "3") : Ausgabe = &B00110111 '=3 Case Asc( "4") : Ausgabe = &B10010101 '=4 Case Asc( "5") : Ausgabe = &B10110110 '=5 Case Asc( "6") : Ausgabe = &B11110110 '=6 Case Asc( "7") : Ausgabe = &B00000111 '=7 Case Asc( "8") : Ausgabe = &B11110111 '=8 Case Asc( "9") : Ausgabe = &B10110111 '=9 Case Asc( "0") : Ausgabe = &B11100111 '=0 Case Asc( "S") : Ausgabe = &B10110110 '=S Case Asc( "s") : Ausgabe = &B10110110 '=s Case Asc( "U") : Ausgabe = &B11100101 '=U Case Asc( "u") : Ausgabe = &B11100101 '=u Case Asc( "A") : Ausgabe = &B11010111 '=A Case Asc( "a") : Ausgabe = &B11010111 '=a Case Asc( "E") : Ausgabe = &B11010111 '=E Case Asc( "e") : Ausgabe = &B11010111 '=e Case Asc( "H") : Ausgabe = &B11011101 '=H Case Asc( "h") : Ausgabe = &B11100100 '=h Case Asc( "o") : Ausgabe = &B01110010 '=o Case Asc( "F") : Ausgabe = &B11010010 '=F Case Asc( "b") : Ausgabe = &B11110000 '=b Case Asc( "d") : Ausgabe = &B01110101 '=d Case Asc( "L") : Ausgabe = &B11100000 '=L Case Asc( "r") : Ausgabe = &B01010000 '=r Case Asc( "P") : Ausgabe = &B11010011 '=P Case 0 : Ausgabe = &B00000000 'Leerzeichen Case 32 : Ausgabe = &B00000000 Case Else Ausgabe = &B11110010 '=E Error End Select Shiftout Data_out_pin , Clock_out_pin , Ausgabe , 1 ' [ , 8 , 1 ] Next Index Set Strobe_out_pin Reset Strobe_out_pin Return ') End
Och nö, Code inline, nicht einmal mit pre-Markierungen versehen, geschweige denn als Attachment... Ganz davon abgesehen, ob der OP auch Bascom hat?
Chris schrieb: > Tja, eine Angabe hierzu scheint nicht im Manual zu stehen. Kann man ja > auch mal anfragen. Zur Not muss man eben je eine Anzeige von beiden > Bestellen und schauen wie hell sie jeweils sind. > > Bedenke, dass bei einer Lieferung aus China Einfuhrumsatzsteuer beim > deutschen Zoll fällig wird (auch auf die Versandkosten). Das ist absoluter Quark... Du mußt lediglich dem Verkäufer in China mitteilen, das er die Ware als MusterExemplare sendet... Mit DHL/UPS absolut kein Problem und ich bekomme pro Woche 2-4 Sendungen aus China... Sollte das Paket wirklich mal am Zollammt hängen (mir mal ganz am Anfang passiert) mußte lediglich beim Zollbeamten deklarieren Das Du ne Firma bis die ware zum importieren sucht und DERZEIT nur Musterexemplare bestellt (also kein eigentlicher Import) welche AUSSCHMLIESSLICH Firmenintern zund NICHT ZUM VERKAUF bestimmt sind. Außerdem funktioniert das auch als Student, indem Du deklarierst, das entsprechende Produkte in DE/EU nicht verfügbar sind und Du für ne Studien-Arbeit das Material benötigst. Ne Freundin von mir an der FH-Offenburg hatte 1.000 HBLED's so eingekauft...
Hallo Dietmar, welche VERSION der GPL? 2 oder 3? Grüße Michelle
Michelle Konzack schrieb:
> welche VERSION der GPL? 2 oder 3?
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.
@ Oliver, hallo, kommst Du klar mit dem Code und dem HW-Design ? Die Ansteuerung über ein VB Programm ist damit trivial. Dietmar
@dietmar : Danke für das Codebeispiel, ich nutze zwar kein Bascom aber ich denke ich sollte es umsetzen können. (hoffe ich :) ) MfG, Oliver.
@dietmar : Danke noch mal für dein Code-Beispiel, aber anscheinend bin ich noch nicht fit genug, dieses nach C zu portieren, wenn also jemand Lust hätte mir zu helfen ... :) MfG, Oliver.
@Dietmar : So,ich denke von der Programmierung habe ich das inzwischen umgesetzt (natürlich nur durch Mithilfe hier im Forum), aber wie es aussieht sind die von mir angedacchten 7-Segmente von SureElectronic nicht wirklich tageslichttauglich (nach Aussage eines Users dort im Forum). Du hattest einmal in einem anderen Beitrag hier Leerplatinen für ca. 25cm 7-Segmente angeboten,besteht diese Möglichkeit noch ??? Wäre nett wenn du dich meldest (code51"at"mr-moto"dot"net) Danke im Voraus, Oliver. (Ich hatte auch schon überlegt eine Anzeige zum Testen zu ordern,aber 25$ Versandkosten für einen Versuch scheue ich dann doch :) )
>> aber wie es aussieht sind die von mir angedacchten 7-Segmente von >> SureElectronic nicht wirklich tageslichttauglich Das denke ich auch, hab' 6 Stück hier, bei direkter Sonneneinstrahlung selbst mit Filterscheibe wird m.E. nix mehr zu lesen sein. Ansonsten sind die ideal, sehr sauber verarbeitet und alles drauf zur einfachen Ansteuerung und Stromversorgung. Für Outdoor aber nur bedingt geeignet.
@MWS : Danke für die Info. Kannst du eine Angabe machen (ca.) bis wieviel Meter sie bei 'normalen' Tageslicht ohne Sonneneinstrahlung zu lesen sind ? Danke,Oliver.
Oliver, hab' Dir gerad' mal ein Bild gemacht, also bei einsetzender Dämmerung, 25m Entfernung. Weiter hab' ich's noch nicht getestet, denn bei mir wird's etwas für Innen, und dafür ist die Leuchtstärke sicher ausreichend. Katze leuchtet nur, weil sich der Blitz mit eingeschaltet hat, natürlich ohne Wirkung auf's sonstige Bild bei der Helligkeit und Entfernung.
Hallo, ich habe von den Platinen noch welche da. Auch von den Allegro IC's. darauf werden 5 mm superhelle LEDS verlötet (ca. 250 Stück). Das Display ist "heller" als die Sonne ;-). Eine Anzeige steht direkt in einer großen Sporthalle vor der riesiegen Fensterfront. Die Zuschauer beschweren sich über Blendprobleme, habe danach die Anzeige dimmbar gemacht (über die Versorgugsspannung...)
@Dietmar : Dann würde ich mich doch über eine Mail von dir bzgl. Zahlungs- und Lieferbedingungen freuen :) MfG, Oliver.
So,der Anfänger nochmal in seiner Ahnungslosigkeit .... Als ich mir das Projekt so am Anfang durchdacht habe, wollte ich zur Stromversorgung der Displays ein Universal Notbooknetzteil verwenden, einfach und billig eben dachte ich. Nun sieht es ja aber so aus, das ich bei 13 Displays mit Steurung doch eine ganze Menge Strom benötige, ca. 8,5 A. Wie versorge ich am kostengünstigsten die Displays mit ca. 36V und max. 8,5A ? Bin für jede (anfängergerechte) Hilfe/Hinweise dankbar :) MfG, Oliver
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.