Hallo, ich bräuchte bitte eure Hilfe. Ich muss für die FH ein Projekt machen. Dabei bekommen wir ein Altium Live Design Board. Ich möchte eine 7x6 Duo LED Matrix ansteuern um dann Vier Gewinnt darauf zu programmieren. Ist es besser, zwei MAX7219 Displaytreiber dafür zu verwenden oder das Multiplexing Softwaretechnisch zu regeln, da ja 36 I/O´s vorhanden sind? Wenn ich die MAX7219 verwende, muss ich dann die gemeinsamen Kathoden an beide Treiber anschließen oder wie ist dann der Ablauf? Wenn ich die LED´s direkt betreibe reichen ja Transistoren vor allen Reihen und Spalten. Aber auf was muss ich dann bei der Programmierung achten? Vielen Dank Patrick
Patrick schrieb: > Ist es besser, zwei MAX7219 Displaytreiber dafür zu verwenden oder das > Multiplexing Softwaretechnisch zu regeln, da ja 36 I/O´s vorhanden sind? Soso softwaretechnisch also... hmmm... Warum willst du diese schnuckelige kleine Matrix nicht einfach direkt als VDHL-Beschreibung ins FPGA machen? > Aber auf was muss ich dann bei der Programmierung achten? Dass du eine Hardware beschreibst. Mit welcher Sprache eigentlich? Oder willst du einen Softcore verwenden? Ich schlage vor, du malst einfach mal ein Bildchen, wie du dir das vorstellen könntest...
Was hast Du denn für Duo-LEDs? Welche mit gemeinsamer Kathode bzw. Anode oder Antiparallel geschaltet? Duke
Danke für die schnellen Antworten, Die Matrix besteht aus Duo LEDs mit gemeinsamer Kathode. Programmiert wird in vhdl. Wie kann ich denn die Matrix über die Ausgänge definiert werden? Dann muss doch auch gemultiplext werden oder?
Patrick schrieb: > Wie kann ich denn die Matrix über die Ausgänge definiert werden? Wie nochmal? Da stimmt was orthografisch nicht... Es ist doch so, dass du eine Matrix hast, bei der z.B. die Kathoden von jeweils 7 LED gemeinsam in den 6 Zeilen hängen. Damit hast du eine 14x6 Matrix und damit auf dem FPGA 20 Ausgänge. Etwas weniger Ausgänge brauchst du, wenn du jeweils 6 Kathoden pro Spalte zusammenfasst: 12+7 = 19. > Dann muss doch auch gemultiplext werden oder? Ja klar, eine Matrix muss gemultiplext werden... Mal eine grundlegende Frage: Was hast du mit VHDL bisher gemacht?
Du hast geschrieben, warum ich es nicht als vhdl-Beschreibung mache. Und genau das war ja meine frage. Ob es so besser ist oder ob ich die beiden displaytreiber nehmen soll. Ich habe nur die Grundlagen von vhdl drauf. Wir sind aber eine Gruppe mit mehreren, die programmieren können. Ich versuche derzeitig nur, das Projekt auf die eine zu stellen und möglichst viele fragen zu klären. Und ich entschuldige mich für meine Unprofessionalität Ausdrucksweise aber ich stehe eben noch am Anfang der microcontroller und fpga Programmierung
Patrick schrieb: > Du hast geschrieben, warum ich es nicht als vhdl-Beschreibung mache. > Und genau das war ja meine frage. Du hast ja z.B. ein FPGA-Board bekommen. Damit ist klar, dass du die Aufgabe mit einem FPGA lösen sollst. Hat dir dein Prof da nicht noch ein paar Hinweise gegeben, wie er es gerne möchte? Hast du in dem Fach, in dem die Projektarbeit verfasst wird, eher was mit "Programmieren" oder eher was mit "Hardware" zu tun? Denn du könntest 1. das alles mit VHDL auf ein FPGA packen, oder du könntest 2. einen Mikrocontroller aufs FPGA klatschen und das alles in Software machen, oder du könntest 3. die Displayansteuerung in Hardware mit VHDL machen und den Algorithmus in Software.
Wir sollen mit Hilfe des Boards ein Spiel programmieren. Eine sehr offene Aufgabenstellung also. Ok, unter deinen genannten Bedingungen handelt es sich dann wohl um die Nummer 1 bei der wir das Programm in vhdl aufs fpga klatschen und damit unsere Matrix ansteuern. Also vor die Reihen und Spalten Widerstände und Transistoren löten. Und vhdl technisch die Matrix ansteuern?
Patrick schrieb: > Also vor die Reihen und Spalten Widerstände und Transistoren löten. > Und vhdl technisch die Matrix ansteuern? Jepp. Den teuren MAX7219 kannst Du Dir sparen. Der ist nur was, wenn Du nicht genug I/Os am Mikrocontroller hast. Duke
Patrick schrieb: > Also vor die Reihen und Spalten Widerstände und Transistoren löten. > Und vhdl technisch die Matrix ansteuern? Das wird wohl die Absicht sein. Und so würde ich das auch machen. Und dann kommt die Frage: Und wie gebe ich meine Züge ein? Wer SPIELT das Spiel? Mensch gegen Mensch auf dem LED-Speilbrett, oder auch Mensch gegen FPGA? Denn wenn das FPGA auch nocht die Spiellogik abhandeln muss, dann wirds knackiger...
Die Züge werden mit Tastern unter jeder Spalte gesetzt. Gespielt wird im Zweispieler Mensch gegen Mensch Modus immer abwechselnd.
Patrick schrieb: > Die Züge werden mit Tastern unter jeder Spalte gesetzt. Also: 7 Eingänge entprellen und Flankenerkennung. Zurücksetzen könnte man ein Spiel dann z.B. über das gleichzeitige Betätigen der äusseren beiden Taster. > Gespielt wird im Zweispieler Mensch gegen Mensch Modus Musst du dann im FPGA den Gewinner ermitteln, oder macht du nur eine simple Anzeige?
Müssen die Taster hardwareseitig entprellt werden? Zum Zurücksetzen haben wir einen 8. Taster eingeplant. Und sobald eine Viererreihe erkannt wurde blinkt die Viererreihe abwechselnd in der Spielsteinfarbe und der Mischfarbe Gelb.
Es ist am einfachsten, Taster direkt ans FPGA anzuschließen und dort drin die "Hardware"-Entprellung zu machen. Und die Gewinnauswertung ist auch nicht so kompliziert, weil sich ja nur rings um den zuletzt gemachten Zug was abspielen kann.
Patrick schrieb: > Wie kann ich denn die Matrix über die Ausgänge definiert werden? Dann > muss doch auch gemultiplext werden oder? Ich weiss nicht, was Dir an HW zur Verfügung steht. Und was Du für Duty Cycles Du einhalten musst, um die LED's des Displays mittels multiplexing sinnvoll zum Leuchten zu bringen weiss ich ebenfalls nicht. Aber wie wäre es, wenn Du ein SPI-Register einsetzt und jede LED statisch ansteuerst?
Hallo, ich habe jetzt einen Schaltplan erstellt. Ist der in Ordnung oder habe ich einen Fehler gemacht? Ich habe auch die Vorwiderstände der Reihen berechnet: Nennstrom: 20mA Vorwärtsspannung: rot 2,0V / grün 2,2V Spalten: 1:7 Zeilen: 12 Zeilenstrom: 140mA Spaltenstrom: 1680mA Vorwiderstand: rot 11,43 Ohm / grün 10 Ohm Verlustleistung: rot 224W / grün 196W Die LED´s vertragen aber nur einen Pulsstrom von 150mA. Wie muss ich die Werte verstehen und was muss ich an meiner Schaltung ändern? Und 200W als Verlustleistung der Widerstände ist auch komisch oder? Könnt ihr mir auch sagen ob man das Platinenlayout so machen kann? Danke für eure Hilfe Patrick
Patrick schrieb: > Die LED´s vertragen aber nur einen Pulsstrom von 150mA. Wie muss ich die > Werte verstehen und was muss ich an meiner Schaltung ändern? Das bedeutet, dass keine einzelne Led im Pulsbetrieb mehr als 150mA abbekommen darf. > Und 200W als Verlustleistung der Widerstände ist auch komisch oder? Das ist entweder Bedenklich oder Falsch. Hoffentlich das Zweitere... > Vorwiderstand: rot 11,43 Ohm / grün 10 Ohm Zum Glück: falsch... > Ich habe auch die Vorwiderstände der Reihen berechnet: > Zeilenstrom: 140mA Es steht nirgends, dass eine LED mit 20mA betrieben werden muss. > Spaltenstrom: 1680mA Wie kommst du auf diese Werte? Zeig mal deinen Rechenweg... Als Tipp: du wirst niemals alle LEDs einer Zeile gleichzeitig ansteuern. Die Beschaltung der Transistoren für die Zeilen solltest auch noch mal überdenken. Überleg mal, welche IO-Spannung das FPGA hat, und wie gut oder schlecht damit diese Transistoren angesteuert werden können...
Ich habe mir den LED Matrix Artikel schon mehrmals durchgelesen und habe nach gegebener Rechnung folgende Werte für Rot erreicht: Izeil=Inenn*N=20mA*7=140mA Ispl=Inenn*N*S=20mA*7*12=1680mA Rv=U/I=(Vcc-Usat-Ube-Uf)/(Inenn*N)=(5V-0,7V-0,7V-2,0V)/(20mA*7)=11,43Ohm Pv=Ispl²*Rv=140mA*140mA*11,43Ohm=224,03W Was meinst du mit überdenken, der Zeilenbeschaltung? Das FPGA schaltet 5V an den I/O Pins. Verstehe leider nicht auf was du raus willst und vorallem welche Werte ich erreichen, berechnen muss Danke Patrick
Patrick schrieb: > Pv=224mW Ok, das passt jetzt. Deine Annahmen stimmen soweit, nur die Leistung war um den Faktor tausend zu hoch. > Das FPGA schaltet 5V an den I/O Pins. Bist du sicher? Wie geht das. Heutige FPGAs haben bestenfalls noch 3,3V am IO-Pin. Wenn das FPGA z.B. nur 3,3V ausgibt, dann bleiben nach dem Zeilentransistor gerade noch 2,8V und dann nicht mehr viel für die grüne LED...
Lothar Miller schrieb: > Bist du sicher? Wie geht das. > Heutige FPGAs haben bestenfalls noch 3,3V am IO-Pin. Wenn das FPGA z.B. > nur 3,3V ausgibt, dann bleiben nach dem Zeilentransistor gerade noch > 2,8V und dann nicht mehr viel für die grüne LED... Habe im Datenblatt nachgelesen. Das FPGA Board hat einen Spartan 3 von Xilinx und schaltet 4,4V. Ich habe den Schaltplan jetzt geändert. Nur die Widerstandswerte muss ich noch richtig berechnen. Ist der Schaltplan dann so korrekt? Welche Basiswiderständen benötigen die Spaltentreiber dann? Danke Patrick
Patrick schrieb: > Das FPGA Board hat einen Spartan 3 von Xilinx und schaltet 4,4V. Ein Spartan3 kann keine 4,4V am Ausgang treiben. > Habe im Datenblatt nachgelesen. Wo? > Ich habe den Schaltplan jetzt geändert. Uups, das ist schon gewagt, einem FPGA-Pin direkt die 150mA zuzumuten. Da war die Lösung mit den Zeilentreibern nicht schlechter (evt. sogar in Emitterschlatung mit pnp-Transistoren). Nur müsste da noch ein Pegelwandler dazwischen, um von den 3,3V auf 5,5V zu kommen. Mit normalen CMOS Invertern ist da viel zu machen....
Wenn ich doch Transistoren verwende kann ich die 5V der Spannungsversorgung verwenden. Was ist denn der Nachteil meiner ersten Schaltung mit den NPN Transistoren? Wie viele mA kann denn ein Ausgang des Spartan 3 treiben und vorallem wie viel insgesamt?
Patrick schrieb: > Wie viele mA kann denn ein Ausgang des Spartan 3 treiben und vorallem > wie viel insgesamt? Was steht denn im Datenblatt? > Was ist denn der Nachteil meiner ersten Schaltung mit den NPN > Transistoren? Nachteil: unnötiger Spannungsabfall über den Zeilentransistoren. Vorteil: schnelleres Schaltverhalten durch den linearen Betrieb.
Ich habe folgende Werte als wichtig empfungen im Datenblatt?! Absolute Maximum Ratings: Vcco(Output driver supply voltage relative to GND)= 3.75V Iik(Input clamp current per I/O pin)= +-100mA General Recommended Operating Conditioins: Vcco(Output driver supply voltage relative to GND)= 3.465V
Patrick schrieb: > Ich habe folgende Werte als wichtig empfungen im Datenblatt?! > Absolute Maximum Ratings: Die sind für die Entwicklung an sich unwichtig. Sie dürfen nur niemals erreicht oder überschritten werden! > General Recommended Operating Conditioins: > Vcco(Output driver supply voltage relative to GND)= 3.465V Das ist die Empfehlung. Aber die Gretchenfrage ist: was hast du beim Nanoboard an Vcco tatsächlich? Denn maximal diese Spannung wird am IO-Pin herauskommen können.
Ich weiß nicht woher ich den Wert bekommen soll. Ich weiß dass es ein Livedesign Evaluation Board ist. Aber in der ANleitung finde ich irgendwie nicht den passenden Wert
Patrick schrieb: > Aber in der ANleitung finde ich irgendwie nicht den passenden Wert Du musst im Schaltplan des Livedesign Boards suchen... http://www.altium.com/community/nanoboard-resources/livedesign-evaluation-boards/en/livedesign-evaluation-boards_home.cfm Beim Xilinx-Board ist Vcco = 3,3V: http://www.altium.com/files/livedesign/livedesign_eb_schematics-xilinx_spartan.pdf
Ok, danke Das heißt, dass nicht genug Spannung für die Dioden übrig bleiben wird, wenn ich Bon Transistoren für die Zeilen verwende?! Wäre es eine gute Lösung, meinen v1.1 Schaltplan zu verwenden und den Zeilenstrom auf 100mA zu begrenzen? Welche Spaltentransistoren muss ich verwenden? Die müssen ja dann 1,2A schalten. Danke Patrick
Transistorengrab weglassen und ein SPI-Schieberegister benutzen immer noch kein Thema?
Patrick schrieb: > Wäre es eine gute Lösung, meinen v1.1 Schaltplan zu verwenden und den > Zeilenstrom auf 100mA zu begrenzen? Du erwartest wirklich, dass 100mA aus einem FPGA-IO rauskommen??? Such doch einfach mal nach LED-Matrix hier im Forum. Es gibt hunderte Beiträge die sich mit dem gleichen Problem beschäftigen. Ob es nun ein µC-IO oder ein FPAG-IO ist - bei normalen LEDs reicht der Strom nicht aus um eine komplette Zeile zu betreiben. Gruss Christoph
Ok, und wenn ich an den Zeilen die npn Transistoren verwende und am Kollektor die 5V vom Board anschließe?
Patrick schrieb: > Welche Spaltentransistoren muss ich verwenden? Die müssen ja dann 1,2A > schalten. Nimm n-Kanal-Mosfets... Ich würde Zeilentreiber so machen:
1 | 5V 5V |
2 | o o |
3 | | | |
4 | 10k Rv (22R) |
5 | | | |
6 | | |< |
7 | o----| pnp |
8 | | |\ |
9 | FPGA --4k7---|<----' '-------->> Zeile |
10 | 0/3,3V Led rot (Uf=1,5V) |
Die rote LED nimmt quasi die "Pegelwandlung" vor... ;-) > Wäre es eine gute Lösung, meinen v1.1 Schaltplan zu verwenden und den > Zeilenstrom auf 100mA zu begrenzen? Wenn dir die Helligkeit dann noch ausreicht.... Peter K. schrieb: > Transistorengrab weglassen und ein SPI-Schieberegister benutzen Wenn man ein FPGA mit sehr vielen freien IO-Pins hat?
Patrick schrieb: > Ok, und wenn ich an den Zeilen die npn Transistoren verwende und am > Kollektor die 5V vom Board anschließe? Lothar Miller schrieb: > Heutige FPGAs haben bestenfalls noch 3,3V am IO-Pin. Wenn das FPGA z.B. > nur 3,3V ausgibt, dann bleiben nach dem Zeilentransistor gerade noch > 2,8V und dann nicht mehr viel für die grüne LED... Wenn an der Basis 3,3V anliegen und über die Basis-Emitter-Diode ~0.6V abfallen kannst du am Kollektor 5V, 7V, oder 12V anschliessen - die Spannung am Emitter bleibt immer gleich! Es gibt auch noch andere Transistoren als NPN! Gruss Christoph
Ok, danke Lothar für deine Hilfe. Kann man statt der roten LED auch was anderes für die pegelwandlung machen?
Patrick schrieb: > Kann man statt der roten LED auch was anderes für die pegelwandlung > machen? Du kannst 3 Stück 1N4148 in Reihe schalten. Aber rote LEDs sehen da cooler aus... ;-)
Der Aufwand für zusätzliche Beschaltung ist schon groß. Wenn ich doch die 3,3V verwende? Dann hat die LED 3,3V-0,7V-0,7V=1,9V Funktionieren würde es ja dann trotzdem oder?
Patrick schrieb: > Dann hat die LED 3,3V-0,7V-0,7V=1,9V > Funktionieren würde es ja dann trotzdem oder? Wie denn, wenn die erst bei 2,5V leuchtet... Und vor Allem: LEDs werden nicht mit Spannung betrieben. Eine Spannung stellt sich nur ein, weil ein bestimmter Strom durchgeschickt wird. > Dann hat die LED 3,3V-0,7V-0,7V=1,9V Die zweiten 0,7V sind bezogen auf deinen ersten Plan mit npn-Transen nicht vorhanden. Der Fehler war schon oben in der Rechnung mit drin... > Der Aufwand für zusätzliche Beschaltung ist schon groß. Von nix kommt nix. Wenn du den LED-Strom auf 10mA reduzierst, dann kannst du die Zeilentransistoren auch ganz weglassen. Die Anzeige wird dann halt hübsch schummerig...
Weiß nicht ob ich das jetzt richtig verstanden habe: Wenn die zweiten 0,7V falsch sind dann reicht die Spannung doch oder? Wie viel mA kann denn der Controller direkt ausgeben?
> Wir sind aber eine Gruppe mit mehreren, die programmieren können.
programmieren hilft hier nicht, kann sogar verwirrend sein.
Digitaltechnik wäre besser.
Uwe schrieb: > Digitaltechnik wäre besser. LEDs und Transistoren sind sogar analoge Bauteile... Patrick schrieb: > Wenn die zweiten 0,7V falsch sind dann reicht die Spannung doch oder? Für was reicht die Spannung? Sie muss für einen halbwegs konstanten Strom reichen, wenn die sich LED-Spannung z.B. zwischen 2,5 und 2,8V (z.B. wegen der Temperatur) ändert... > Wie viel mA kann denn der Controller direkt ausgeben? Was sagt das Datenblatt zum FPGA?
> Wäre es eine gute Lösung, meinen v1.1 Schaltplan zu verwenden und den > Zeilenstrom auf 100mA zu begrenzen? Etwas Elektronik Kenntnisse wären auch von Vorteil. RTFM ! Datenblätter lesen vom FPGA bzw. Handbuch und Schaltpläne vom Board !
Lothar Miller schrieb: > Peter K. schrieb: >> Transistorengrab weglassen und ein SPI-Schieberegister benutzen > Wenn man ein FPGA mit sehr vielen freien IO-Pins hat? Der Einwand ist berechtigt, allerdings ist so ein Mux mit "analoger Endstufe" auch nicht ohne, wie man sieht. ;-)
Vielleicht versucht Ihr Euch erstmal an einer kleineren Matrix (z.B. 4x4)? Die ist schnell aufgebaut und umgeändert, wenn doch mal was nicht so geht wie berechnet. Außerdem: Das was Ihr dort an Erfahrung sammelt, könnt Ihr dann in die große Matrix einfließen lassen. Duke
Hallo, ich habe jetzt einen Versuchsaufbau mit 2 Duo LED´s gemacht. mit Vcc 5V und den 3,3V am Ausgang des Evaluation Board funktioniert es eigentlich super.
Könnt ihr mir sagen, ob die Schaltung so funktionieren wird? Wäre echt super danke Patrick
Patrick schrieb: > Könnt ihr mir sagen, ob die Schaltung so funktionieren wird? Sie wird genausogut wie deine 2x2 Martix funktionieren. Aber trotzdem: Widerstände um 18..20 Ohm wären mir viel zu niederohmig. Als Hintergrund: eine ideale Stromquelle hat einen unendich großen Innenwiderstand (und LEDS sollten aus einer Stromquelle versorgt werden).
Mit der Kollektorschaltung der NPN Transistoren an den Anoden der LEDs bekommst du aber höchstens 2.7 Volt an deine LED.
Die Zeilentransistoren haben wir schon durchgekaut. Patrick will es einfach mal so probieren... :-/
Ok jetzt hab ichs probiert und weiß was ihr meint. Habe die Schaltung aufgebaut und ein bisschen rumgemessen. ...deswegen habe ich 2,5V an Kollektor Emitter? Aber wie verhalten sich die Spaltentransistoren dann? Da werden doch auch die 3,3V-0,6V an den Emitter geschaltet, welcher auf GND liegt?
Patrick schrieb: > Da werden doch auch die 3,3V-0,6V an den Emitter geschaltet, welcher auf > GND liegt? Nein, es wird ein Strom in Höhe von (3,3V-0,6V)/3,3k = ca. 0,8mA in die Basis geschickt. Der Transistor verstärkt diesen Strom theoretisch um den Faktoer 300. Und schaltet damit so gut wie möglich durch. Fazit: der Kollektor (an dem ja die LED hängt) kommt (je nach Übersteuerung) bis auf 100mV an GND ran (Stichwort: Ucesat)...
Nach meinen bisherigen Berechnungen habe ich festgestellt, dass ich ein externes Netzteil benötige. Kann ich ein 5V Netzteil einfach mit Stecker anschließen oder müssen noch Kondensatoren/ Spulen zur Stabilisierung verbaut werden? Danke Patrick
Für den Ausgang des FPGAs ist es unerheblich, wie sauber die Spannung ist. Trotzdem sollte sie stabil genug sein. Die DCDC Wandler haben Datenblätter, wie man das dimensionieren muss. Das passt dann schon. Für Deine Matrix empfehle ich einen billigen FPGA mit gekoppelten Ausgängen als Teiber: Ein Spartan 3A 50 hat genug Ausgänge, um die gesamte Matrix zu treiben. Nimm einfach 2 Ausgänge parallel. Die Ausgänge halten das locker aus, weil sie nur 5mA treiben (bei 10mA je LED). Der FPGA packt das bei 64 LEDs auch noch - gfs mit Kühlkörper.
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.