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...
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...
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 alleLEDs 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
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
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
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
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.
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).
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.