 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 19.12.2008, 21:22 Titel: LED Matrix multiplexen |
|
|
Das Thema hatten wir zwar schon mal gehabt,
jedoch wollte ich jetzt eine LED Matrix folgendermasen gestalten:
- 8 Zeichen darstellbar
- 1 Zeichen = 5 * 7 = 35 Leds
Folgendermasen sollte es gemultiplext werden:
5 Spalten = eine Spannung anlegen
1 Zeile = Spannung zu Masse ziehen.
Natürlich verwende ich noch 8 Bit Schieberegister und das 6 Stück an der Zahl.
Nun meine Frage:
Welche Bauteile benötige ich noch?
Wenn ich ein Ausgangsstrom anlegen will "bei den Spalten", dann muss ich Tranistoren schalten.
Welche Transistoren werden benötigt.
Spannungsversorgung Leds:
Der Strom der bei den Transistoren geschaltet wird, sollte vom PC Netzteil sein.
Welche Ader soll ich hier entwenden und was für einen Widerstand benötige ich um auf die Spannung der LEd zu kommen "Standart LEd".
Sind glaub ich 3,3 Volt.
Wenn ich die 5 Spalten zur Masse der Zeile 1 ziehen soll, welchen Transistor sollte ich hier verwenden.
Ich hoffe, dass ihr mir helfen könnt und das versteht, was ich meine.....
Ich bräuchte auch dringenst Hilfe, da ich morgen in der Stadt die Bauteile kaufen möchte.
Hier der Programmiercode "Ansteuerung seriell müsst ihr mir noch helfen":
Code: |
'LED MATRIZE
'Benötigt werden 280 Leds
'Ein Buchstabe setzt sich aus 5 * 7 Leds zusammen.
'Insgesamt werden 8 Zeichen dargestellt.
'Es werden 6 Ausgangserweiterungen benötigt.
'1 Ausgangserweiterung kann 8 Ausgangsströme schalten.
'40 Ausgänge werden benötigt um einen Transistor zu schalten. Dieser Transistor schaltet eine Spannung.
'7 Ausgänge werden benötigt um einen Transistor zu schalten, so dass die andere Spannung nach Masse zieht.
Dim text as string
Dim laenge (1 to 1) as single
Dim a (1 to 7) as string
Dim i as single
Dim i1 as single
Dim i2 as single
Dim links(1 to 2) as string
Dim rechts(1 to 2) as string
Dim t As String
do
cls
t = TIME
'Hier wird die Laenge der Zeit festgestellt.
'z.B. 10:12:34
'Also 10 Stunden, 12 Minuten u. 34 Sekunden
'laenge(1) = 8
laenge(1) = len(t)
'Variabelen a(1) - a(7) werden gelöscht
a(1) = ""
a(2) = ""
a(3) = ""
a(4) = ""
a(5) = ""
a(6) = ""
a(7) = ""
'Hier werden die Variabelen der Schleifen wieder auf 0 gesetzt
i = 0
i1 = 0
i2 = 0
'Schleifenanfang
'pro Schleifendurchlauf, wird die Variabele i um 1 erhöht
'Die Schleife geht von 1 - 8
for i = 1 to laenge(1)
'Hier wird von links nach rechts pro Schleifendurchlauf der entsprechende Buchstabe der Zeit analysiert.
links(1) = left(t, i)
rechts(1) = right(links(1),1)
'Wenn der entsprechende Buchstabe rechts= 0 ist, werden den Variabelen Werte zugewiesen
if rechts(1) = "0" then
a(1) = a(1) + "01110"
a(2) = a(2) + "10001"
a(3) = a(3) + "10011"
a(4) = a(4) + "10101"
a(5) = a(5) + "11001"
a(6) = a(6) + "10001"
a(7) = a(7) + "01110"
end if
if rechts(1) = "1" then
a(1) = a(1) + "00100"
a(2) = a(2) + "01100"
a(3) = a(3) + "00100"
a(4) = a(4) + "00100"
a(5) = a(5) + "00100"
a(6) = a(6) + "00100"
a(7) = a(7) + "01110"
end if
if rechts(1) = "2" then
a(1) = a(1) + "01110"
a(2) = a(2) + "10001"
a(3) = a(3) + "00001"
a(4) = a(4) + "00010"
a(5) = a(5) + "00100"
a(6) = a(6) + "01000"
a(7) = a(7) + "11111"
end if
if rechts(1) = "3" then
a(1) = a(1) + "11111"
a(2) = a(2) + "00010"
a(3) = a(3) + "00100"
a(4) = a(4) + "00010"
a(5) = a(5) + "00001"
a(6) = a(6) + "10001"
a(7) = a(7) + "01110"
end if
if rechts(1) = "4" then
a(1) = a(1) + "00010"
a(2) = a(2) + "00110"
a(3) = a(3) + "01010"
a(4) = a(4) + "10010"
a(5) = a(5) + "11111"
a(6) = a(6) + "00010"
a(7) = a(7) + "00010"
end if
if rechts(1) = "5" then
a(1) = a(1) + "11111"
a(2) = a(2) + "10000"
a(3) = a(3) + "11110"
a(4) = a(4) + "00001"
a(5) = a(5) + "00001"
a(6) = a(6) + "10001"
a(7) = a(7) + "01110"
end if
if rechts(1) = "6" then
a(1) = a(1) + "00110"
a(2) = a(2) + "01000"
a(3) = a(3) + "10000"
a(4) = a(4) + "11110"
a(5) = a(5) + "10001"
a(6) = a(6) + "10001"
a(7) = a(7) + "01110"
end if
if rechts(1) = "7" then
a(1) = a(1) + "11111"
a(2) = a(2) + "00001"
a(3) = a(3) + "00010"
a(4) = a(4) + "00100"
a(5) = a(5) + "01000"
a(6) = a(6) + "01000"
a(7) = a(7) + "01000"
end if
if rechts(1) = "8" then
a(1) = a(1) + "01110"
a(2) = a(2) + "10001"
a(3) = a(3) + "10001"
a(4) = a(4) + "01110"
a(5) = a(5) + "10001"
a(6) = a(6) + "10001"
a(7) = a(7) + "01110"
end if
if rechts(1) = "9" then
a(1) = a(1) + "01110"
a(2) = a(2) + "10001"
a(3) = a(3) + "10001"
a(4) = a(4) + "01111"
a(5) = a(5) + "00001"
a(6) = a(6) + "00010"
a(7) = a(7) + "01100"
end if
if rechts(1) = ":" then
a(1) = a(1) + "00000"
a(2) = a(2) + "01100"
a(3) = a(3) + "01100"
a(4) = a(4) + "00000"
a(5) = a(5) + "01100"
a(6) = a(6) + "01100"
a(7) = a(7) + "01100"
end if
if i = 8 then
a(1) = a(1) + "1000000"
a(2) = a(2) + "0100000"
a(3) = a(3) + "0010000"
a(4) = a(4) + "0001000"
a(5) = a(5) + "0000100"
a(6) = a(6) + "0000010"
a(7) = a(7) + "0000001"
end if
next
'Schleifenende
'Hier muss die serielle Schnittstelle angesteuert werden.
'Schleifenanfang
'Hier wird die Variabele i2 pro Schleifendurchlauf um 1 addiert.
'Notwendig um die Daten pro Zeile reinzubekommen
for i2 = 1 to 7
'Schleifenanfang
'Hier wird die Variabele i1 pro Schleifendurchlauf um 1 addiert.
'Notwendig um die Daten pro Spalte reinzubekommen, als auch zum aktivieren der Zeile
for i1 = 1 to 47
links(2) = left(a(0+i2), i1)
rechts(2) = right(links(2),1)
if rechts(2) = "1" then
'Datasignal = 1
'Clocksignal = 1
'Clocksignal 0
'Datasignal 0
else
'Clocksignal = 1
'Clocksignal = 0
end if
next
'Schleifenende
'Hier wird jetzt die entsprechende Zeile geschaltet, so dass die Spalten nach Masse ziehen.
'Strobesignal = 1
'Strobesignal = 0
next
'Schleifenende
loop |
|
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 20.12.2008, 09:04 Titel: |
|
|
(Klick = Grosses Bild)
Bitte ACHTE UNBEDINGT auf die Portleitungen vom PC!! .. Wenn deine Leitungen nicht geschützt sind, dann solltest du die untere Variante nutzen. Andernfalls kannst du die obere Nutzen.
Der Port bzw. der Treiber sollte auch fehig sein pro Pin 20mA (0.02A) zu liefern! Wenn er das nicht kann, dann nimm lieber die untere Schaltung.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 20.12.2008, 11:46 Titel: |
|
|
Danke für die schnelle Antwort.
Hattest du schon mal sowas aufgebaut gehabt?
Achso, auf dem Schieberegister steht:
CD74HC4094E
Ist ein 8 Bit Schieberegister "dürfte dieser mit der Schaltung funktionieren?"
Dann noch eine Frage:
Ist es genormt, wieviel Power aus dem seriellen Port kommt und zerstört er nicht die Schieberegister "Ich meine das Clock, Data und Strobesignal".
5 Volt "also vom PC Netzteil sollen dann an den Schieberegister gelegt werden "zur Spannungsversorgung" oder |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 20.12.2008, 12:22 Titel: |
|
|
Andy19312 hat Folgendes geschrieben: | Hattest du schon mal sowas aufgebaut gehabt? | Nein
Zitat: |
Achso, auf dem Schieberegister steht:
CD74HC4094E |
Datenblatt: http://www.datasheetcatalog.org/datasheets/320/491711_DS.pdf
Zitat: | Ist ein 8 Bit Schieberegister "dürfte dieser mit der Schaltung funktionieren?" | Eventuell ja ... laut datenblatt ist pro pin 20mA (maximum: 25mA) zu treiben. wird also eng, aber könnte noch ausreichen.
Zitat: | Dann noch eine Frage:
Ist es genormt, wieviel Power aus dem seriellen Port kommt und zerstört er nicht die Schieberegister "Ich meine das Clock, Data und Strobesignal". | Ja, das ist genormt. Und, Nein, der Port wird nicht zerstört, wenn du ihn an das Schieberegister klemmst. Für solche dinge sind solche Bauteile gedacht (TTL bzw HC / HCT / ... Bausteine). Sie sollen Leitungen teilweise untertützen, so das man etwas mehr strom aus dem system ziehen kann. Will man noch mehr strom ziehen, sollte man einen "Treiber" wie z.B. eine ULN2803 / 2703 oder ähnliches einsetzen. Alternativ kann man das auch über Transistoren lösen. Sie erfüllen den Selben zweck wie ein Darlington-array (ULN...). Man kann geringe Ströme in den ULN / Transistor geben, und dieser "verstärkt" das quasi soweit, das man damit LED's, Motoren, oder sonstige leistungshungrige Komponenten schalten / steuern kann. Je nach leistungsverbrauch kann man dann entsprechend andere Transistoren verwenden, die mehr oder weniger abkönnen. Was dann natürlich auch eien Preisfrage ist.
Aber, wenn du es so aufbaust, wie du es geplant hast, und das schieberegister dazwischen ist, kannst du im grunde beide schaltungsvarianten verwenden. Bist du dir nicht sicher, und hast noch ein paar transistoren rumliegen (kosten ja nicht viel), dann kannst du sichergehen, udn die untere schaltung aufbauen.
Zitat: | 5 Volt "also vom PC Netzteil sollen dann an den Schieberegister gelegt werden "zur Spannungsversorgung" oder | Ja. Der 4094 braucht eine Versorgungsspannung von 3 bis 6V. also sidn 5V ideal. wenn du die untere schaltung aufbaust, musst du für die oberen Transitoren auch 5V anlegen, damit diese den strom für die LEDs schalten. Sie fungieren heir als "Leistungsverstärker" welche aus einem relativ schwachen steuersignal, ein relativ kräftiges signal machen, das man an die LEDs weiterreichen kann, ohne das das steuersignal dadurch beeinträchtigt wird, oder gar der port selbst vom PC oder dem Schieberegister zerstört wird.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 20.12.2008, 12:29 Titel: |
|
|
Zizat vom Kumpel "ICQ":
beim unteren Schaltplan muessen die transistoren Q15 bis Q19 PNP typen sein. eingezeichnet sind NPN typen.
Stimmt das so?
R13-R17, wie hoch soll der Widerstand sein "ich beziehe mich auf den unteren Schaltplan".
Da ich nur 470 Ohm Widestände habe, werde ich zwei in Reihe schalten, da komme ich doch auf 940 Ohm "stimmt das so".
Wiegesagt, habe ich mit Elektronik wenig am Hut "zumindestens jetzt".
Trotzdem noch mal vielen Dank für die Hilfe |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 20.12.2008, 12:43 Titel: |
|
|
Nein .. die Transistoren sind richtig. PNP typen wären nur dann nötig, wenn die Basisspannung ein umgekertes Verhältniss zur Emiterspannung al bei einem NPN aufweisen würde, was hier nicht der Fall ist.
Das Schaltungskonzept der oberen Transistoren nennt sich "Emiterschaltung" und das Konzept der unteren bzw. rechten Transistoren "Collectorschaltung".
Zitat: | Stimmt das so?
R13-R17, wie hoch soll der Widerstand sein "ich beziehe mich auf den unteren Schaltplan".
Da ich nur 470 Ohm Widestände habe, werde ich zwei in Reihe schalten, da komme ich doch auf 940 Ohm "stimmt das so". | Ja .. das ist richtig. jedoch sind sie nicht passend. Ausgerechnet habe ich (für beide Pläne) einen wert (siehe oben) von 150 Ohm .. wenn du 940 Ohm verwendest, dann würden die wohl garnicht Leuchten. nichtmal glimmen. Und, wenn du dann noch das Matrixverfahren auf die schaltung anwendest, dann würden sie nichtmal versuchen zu leuchten.
Bedenke: Du gibst nur für einen bruchteil eriner sekunde spannugn auf jede LED die leuchten soll. (Das ist das prinzip einer maxtixschaltung). dadurch wird der optische eindruck beeinträchtigt. Du siehst das lciht nur kurz aufleuchten, nimmst es daher nur als glimmen wahr. Wenn du dann noch höhere widerstände verwendest, dann siehst du garnichts mehr davon. 150 Ohm ist "eigentlich" schon etwas zuviel, aber man ist (vorallem bei experimenten) auf der sicheren seite. Wenn deine Software funktioniert, dann kannst du zur not (wenn dir das zu dunkel erscheint) auch 130 Ohm wiederstände einbauen, oder noch etwas weniger. DANN JEDOCH darfst du unter KEINEN umständen die LEDs länger leuchtne lassen, als ein paar ms, da sie sonst beschädigt werden. Das mag man zwar im ersten augenblick nicth sehen, das die eienn "knack ab haben", allerdings merkt man das auf dauer, da sie wohl nach einigen wochen / monaten den geist aufgeben werdne, oder sehr viel schwächer leuchten.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 20.12.2008, 16:23 Titel: |
|
|
Ok, alles verstanden.
Nochmal danke |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|