Frage zur 7-Segment-Schalltung

  • Hallo Liebes Forum und Bastler

    Hab eine Frage zur LED Namenschilder, jeder buchstabe aus LED`s....

    Hier mal ein Bild sehe unten

    Da sind zu sehen Buchstaben aus LED`S mit je ein wiederstand an jede LED! alles soweit ok gut weiter.
    der name soll BEN-LUKAS sein angesteuert werden die einzelne Buchstaben Von einen ATtiny2313 angesteuert sehe bild unten

    möchte gern das es wie eine matrix angesteuert wird nur die frage wie?
    wist ihr wie es man es machen könnte oder mir tipps geben vielen dank


    Viele Grüße Thorsten Sch.

    3D LED-CUBE - Finde ich mega Cool.......
    PS: soory hab etwas mit der Schreib weise Soory...........

    2 Mal editiert, zuletzt von Thorsten Sch. (25. Mai 2012 um 20:58)

  • Hi Thorsten,

    fast verstehe ich die Frage nicht. Dieses Forum ist doch voll von Matrix-Schaltungen. Schon mal die Suchfunktion benutzt?

    Weil in Deinem Schaltplan was von 12V steht, habe ich Dir mal ein Bild einer 7x10 Matrix für den Betrieb an 12V angehängt, wo in jedem der 70 Kanäle je zwei LEDs in Reihe geschaltet sind.
    Angesteuert wird die Matrix über nur vier Steuersignale, die Dein ATtiny locker bereit stellt.

    Natürlich kann man das vereinfachen. Wenn sowieso ein AVR zum Einsatz kommt, kann man z.B. bequem die ICs 28 und 29 wegrationalisieren.
    Den ULN2803 eigentlich auch, wenn die LED-Ströme gering genug sind.

    Hat man einen AVR mit genügend Portpins, also 7+10=17 Portpins, kann man sogar alle ICs wegrationalisieren und nur 'nen AVR nehmen, sofern man mit der Spannung und dem Strom auskommt.

    Auch die etwas umständliche Realisierung mit vielen diskreten Bauteilen, für die Anpassung an 12V in meiner Schaltung, kann man vereinfachen, indem man highside-Treiber, wie den A2982 einsetzt (wollte der Kunde nicht, weiß auch nicht warum).

    Und natürlich gibt es ICs, die direkt dafür gedacht sind, 'ne Matrix zu treiben. Z.B. der MAX6954.
    Das wäre dann eine Lösung mit zwei ICs, ohne großartig diskrete Bauteile: Ein AVR, der mit nur vier Portins den MAX ansteuert plus den MAX selbst, als eigentlichen Matrixtreiber (der kann bis zu 128 LEDs ansteuern!)
    Allerdings läuft der MAX6954 nicht mit 12V.


    Das Prinzip der in meiner Schaltung gezeigten Matrix, die mit Standard-CMOS auskommt, ist jedenfalls, dass der Spaltentreiber (IC 29 und 30) immer nur eine Spalte zur Zeit aktiviert, während der Zeilentreiber (hier mit den ICs 27 und 28 realisiert) hier ein Muster von 10 Bit Breite parallel ausgibt.

    Weil die beiden Schieberegister vom Typ 74HC595 zwar 16 Bits ausgeben KÖNNTEN, wovon für die 10 Zeilen aber nur 10 Bit benötigt werden, wurden in dieser Schaltung drei der "überflüssigen" Schieberegister-Ausgänge dazu verwendet, einen 3-zu-8 Decoder anzusteuern, der also jeweils eine der 7 Spalten zur Zeit ansteuert (ein Ausgang bleibt also ungenutzt).

    Das wurde hier so gemacht, weil der Programmierer sich nicht in komplexere ICs eindenken wollte. Er wollte einfach nur jeweils zwei Bytes in Schieberegister schreiben und dann die Ausgangsregister clocken.
    Und das Ganze 7 mal hintereinander (dann sind alle Spalten einmal durch, also die gesamte Matrix).


    Nachteil an 'ner Matrix ist übrigens der, dass jeweils nur eine LED-Spalte zur Zeit an ist. Man muss also mit genügend hoher Frequenz arbeiten, um das flimmerfrei zu kriegen.
    Jedoch leuchten die LEDs dunkler als bei permanenter Ansteuerung, man wird daher die LEDs mit höheren Strömen betreiben, als bei Permanentansteuerung möglich.
    Das birgt das Risiko, dass etwas durchbrät, wenn der AVR mal hängt.

    Auch der Fall, wo der AVR resettet (oder geflasht) wird, muss bedacht werden.
    Bei Reset schaltet der seine Portpins ja hochohmig, was problematisch ist, wenn der mit nachgeschalteten MOSFETs statt Transistoren direkt die Matrix ansteuert, ohne die hier gezeigte CMOS-Logik.

  • in so nem Fall helfen Pull-Down-Widerstände am Gate.... ;)

    was mir nicht ganz klar ist: lt. Layout oben leuchtet immer der komplette Buchstabe - es soll also nicht jede LED einzeln ansteuerbar sein, sondern nur jeder Buchstabe...? - so wie's da ja heisst "der name soll BEN-LUKAS sein angesteuert werden die einzelne Buchstaben"

    das wären hier 9, da wäre ne Matrix arg übertrieben, die kann man ja "direkt" mit 9 Pins schalten, wie im Plan drunter ja schon gezeichnet... das passt doch alles so, wozu ne Matrixansteuerung..?

    oder verstehe ich hier wieder mal was komplett falsch...? ?(

    It's only light - but we like it!

    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Hallo Forum Und Bastler
    Habe wie aus den 1 beitratg das Namenschild Fertig Gestellt Jeder einzelne Buchstabe wird Angesteuert mit einen ATtiny2313 als Transisitor habe ich einen BD433 Genommen Sehe Bild

    habe folgende Wiederstände und LED´s von R....t Bestellt. LED Wiederstand ........

    Nur bei Aufleuchten jeder Buchstabe werden die Wiederstände seher heis.....

    Ich betreibe die schaltung mit 12 Volt trotzdem werden die seher heis man kan sie kaum anfassen, woran kann das liegen...


    Bitte Um rat
    Freudliche Grüße
    Thorsten Sch.

    3D LED-CUBE - Finde ich mega Cool.......
    PS: soory hab etwas mit der Schreib weise Soory...........

  • Wenn der Vorwiderstand heiss wird, wird er eindeutig über seiner

    Belastbarkeit betrieben.


    kannst du dem Strom messen der durch die led's fließt es
    sollte nicht mehr als 20mA betragen.

    Einmal editiert, zuletzt von MrKaschi (13. Mai 2012 um 10:58)

  • Ist ja schon alles verlötet,,,leider habe aber noch ein paar led buchstaben vohr mir....
    lieben gruß
    Thorsten Sch.

    3D LED-CUBE - Finde ich mega Cool.......
    PS: soory hab etwas mit der Schreib weise Soory...........

  • Wenn du jeder LED einen einzelnen Vorwiderstand spendiert hast, wird halt doch einiges an Leistung verbraten.
    Wenn ich das mal grob ausrechne wird der Widerstand auch mit etwas mehr als einem Viertel Watt belastet.
    Und selbst wenn es weniger wäre, irgendwo muß die verbratene Leistung ja hin, warm werden die Dinger immer werden.

    Solltest schon mindestens 0,5W Widerstände nehmen, am besten Metalloxid, die sind etwas robuster als Kohleschicht-Widerstände.

  • Hallo Gast

    das ist gut hab bis jetzt immer diese Wiederstände genommen und wahr alles ok nur diesmal hab ich sie kleich auf eine Platine gelötet!?
    was oder wie kann man das noch verringern die last von den leds????

    Hab Mal eine LED genommen und 1/4W 470Ohm an 12 volt und gemessen, raus kammen 0,02A ist das zu viel?

    Bitte um rat

    Mit Freundlichen Grüßen
    Thorsten Sch.

    3D LED-CUBE - Finde ich mega Cool.......
    PS: soory hab etwas mit der Schreib weise Soory...........

    Einmal editiert, zuletzt von Thorsten Sch. (13. Mai 2012 um 13:59)

  • hi Dgoersch habes im beitrag 4 Hinterlegt was für led und wiederstände es sind schau bitte nach bin echt am überlegen wie man es noch beheben könnte....
    Gruß Thorsten Sch.

    3D LED-CUBE - Finde ich mega Cool.......
    PS: soory hab etwas mit der Schreib weise Soory...........

  • Hallo Forum Nutzer und Bastler

    Habe hier eine 4x 7 segmend anzeige auf den ein name stehen soll buchstaben werden angezeigt aber da erscheinen immer auf alle 4 segemnd anzeigen die gleichen buchstaben.
    hier mal der code


    so verleicht kann mir jemand da ein tipps oder rat geben wie oder wo da man wa ändern kann...
    hier wie es angeschlossen ist am ATtiny2313


    Portbelegung Lucy Anzeige Mit 7 Segemend anzeige
    Pin1 = reset
    Pin2 = Seg1
    Pin3 = Seg2
    Pin4 = nc.
    Pin5 = nc.
    Pin6 = Seg3
    pin7 = seg4
    Pin8 = nc.
    Pin9 = nc.
    pin10 = GND
    Pin11 = nc.
    Pin12 = a
    Pin13 = f
    Pin14 = g
    Pin15 = dp
    Pin16 = c
    Pin17 = d
    Pin18 = e
    Pin19 = b
    Pin20 = 5Volt


    ich Bitte um rat oder tipps
    Mit Freundlichen Grüßen Thorsten Sch.

    3D LED-CUBE - Finde ich mega Cool.......
    PS: soory hab etwas mit der Schreib weise Soory...........

    Einmal editiert, zuletzt von Thorsten Sch. (25. Mai 2012 um 19:48)

  • Der Fehler liegt in der Sub Licht.
    Da schaltest Du nacheinander die Ports D0 bis D3 ein, lässt sie aber eingeschaltet.
    In Wahrheit willst Du doch sicher immer nur einen davon zur Zeit an haben, oder?
    Dann muttu die anderen jedesmal ausschalten.

  • Ich betreibe die Schaltung mit 12 Volt trotzdem werden die sehr heiß. Man kann sie kaum anfassen. Woran kann das liegen?

    Hallo,
    Wie jetzt. Hast du die LED alle einzeln an 12V hängen? Wenn ja, warum machst du das so?

    Entweder du betreibst jeweils ca. 8 rote LED in Reihe oder
    du nutzt als LED-Spannungsversorgung eine sinnvolle Spannung (z.B. 2V...3V)
    Gruß Uwi

  • hallo forum und bastler
    habe 4 x 7 segmend anzeige auf dennen ich 4 buchstaben anzeigen lassen möchte, sie sollten aber nicht nur anzeigen sie sollen wie eine laufschrieft anzeige durchlafen ich hänge irgendwie fest kann mir jemand dabei helfen bin am suchen im internet aber nicht das passene gefunden ich bitte um rat oder hilfe.

    hier die daten noch mal wie ich das am ATtiny 2313 verlötet habe...
    PB7= b / PB6=e / PB5=d / PB4=c / PB3= dp / PB2=g / PB1=f / PB0=a
    PD0= Seg1 / PD=1 Seg2 / PD2=Seg3 / PD4=Seg4


    Bitte um hilfe im post NR.11 hab ich schon mal was propiert mit einen code aber vergebens
    Gruß Thorsten Sch.

    3D LED-CUBE - Finde ich mega Cool.......
    PS: soory hab etwas mit der Schreib weise Soory...........

  • Hallo Thorsten,

    ändere die Sub Licht mal so um:

    Code
    Sub Licht
    Portd = &b00000001 : Portb = &B01100010 : Waitms 600   'L
    Portd = &b00000010 : Portb = &B11110010 : Waitms 600   'U
    Portd = &b00000100 : Portb = &B01100011 : Waitms 600   'C
    Portd = &b00001000 : Portb = &B10110110 : Waitms 600   'Y
    End Sub


    Was mich noch wundert ist dieser Teil Deines Programms:

    Code
    If Pind.6 = 0 Then Gosub Licht
    If Pind.6 = 1 Then Gosub Licht1

    Denn der beißt sich IMHO hiermit:

    Portbelegung Lucy Anzeige Mit 7 Segemend anzeige

    Pin1 = reset
    Pin2 = Seg1
    Pin3 = Seg2
    Pin4 = nc.
    Pin5 = nc.
    Pin6 = Seg3
    pin7 = seg4
    Pin8 = nc.
    Pin9 = nc.
    pin10 = GND
    Pin11 = nc.
    Pin12 = a
    Pin13 = f
    Pin14 = g
    Pin15 = dp
    Pin16 = c
    Pin17 = d
    Pin18 = e
    Pin19 = b
    Pin20 = 5Volt

    Also der Pind.6 ist nach meinem Datenblatt entweder Pin 9 oder Pin 11, je nach Gehäuse. Bei Dir steht da "nc." also "not connected".
    Doch im Programm wertest Du diesen Pin aus.

    Oh, nochwas:

    Code
    Ddrd = &B11110000
    
    
    Config Portb = Output
    Config Portd.0 = Output
    Config Portd.1 = Output
    Config Portd.2 = Output
    Config Portd.3 = Output
    Config Portd.6 = Input
    Portd.6 = 0

    - Da passt die erste Zeile nicht zu dem drunter liegenden. Einsen und Nullen in der ersten Zeile falsch rum.
    - Außerdem doppelt gemoppelt. DDRD bewirkt das Gleiche wie Config Port.
    - Um die Pullups kümmerst Du Dich jedoch gar nicht.
    - Und die letzte Zeile beißt sich mit der vorletzten.

    Bei mir würde der Block so aussehen (natürlich Geschmackssache):

    Code
    '         76543210
    PortB = &B00000000      'Pullup AUS
    DdrB =  &B11111111      'Portpins sind Ausgänge.
    '         76543210
    Portd = &B01000000      'Pullup AUS, bis auf D.6
    Ddrd =  &B10111111      'Portpins sind Ausgänge, bis auf D.6
    '         76543210


    Edit: Uff, nooooch waaas:

    Code
    Sub Licht1
    Portd = 1 : Portb = &B0000100
    Waitms 200
    
    
    End Sub

    Also ich weiß jetzt nicht, was der rot markierte Teil tatsächlich tun soll.
    Entweder willst Du den kompletten PortD auf 1 haben, oder nur ein Bit, dann hast Du sowas hier vergessen: ".0"

    Wenn der ganze PortD auf 1 soll, dann würde ich das so schreiben:
    PortD = &hFF
    oder meinetwegen so:
    PortD=&b11111111

    Aber bei "PortD=1" bekomme ich Fragezeichen auf der Stirn, ob der Programmierer wusste was er da tat, oder schlicht 'nen Fehler gemacht hat.

  • so habe es mal versucht so sieht der code aus, ach ja an PD6 sollheisen es ist nichts drann ( nc. ) meher nicht verleicht kommt da ein taster ran.

    so hier der code den ich habe, meher danach....

    so jetzt gehen je anzeige an hier beispiel ( - - - - ) die triche sind die anzeigen...
    L - - -
    - U - -
    - - C -
    - - - Y
    da werden nur die buchstaben angezeigt ich möchte auch dabei das der name da komplett da steht wie oder was muss man da machen bitte um rat.....
    Mit Freundlichen Grüßen
    Thorsten Sch.

    3D LED-CUBE - Finde ich mega Cool.......
    PS: soory hab etwas mit der Schreib weise Soory...........

  • Ach so meinst Du das mit Laufschrift. OK, kapiert.

    Dann gibt es also 8 mögliche Einzelbilder (das Leerbild mitgezählt), die nacheinander dargestellt werden sollen.

    Habe es nicht überprüft, einfach hier im Webeditor getippt. Daher ist der Quelltext auch nicht hübsch formatiert.
    Es ist zwar nicht der Gipfel der Eleganz, sollte aber funzen. Und es erspart Dir die komplizierten Geschichten mit Timerinterrupt und so, die in solchen Fällen eigentlich sinnvoll wären.

    Nachteil der primitiven Masche: Das Programm macht genau das was es tut und könnte gar nicht auf den Schalter reagieren, den Du irgendwann vielleicht mal anschließen willst. Weil es gnadenlos so lange in Sub Licht festhängt, bis die äußere Bild-Schleife einmal voll durchgelaufen ist.
    Aber wenn es soweit ist, dass Du den Schalter brauchsts, kannst Du das bestimmt selbst anpapassen.

  • hi zusammen und bastler ( forum )
    hier mal der code so wie es irrlicht geschrieben hat hat in zeile 34 Fehler ich weis es inmoment nicht.

    bitte um rat oder hilfe was es sein kann....

    Mit Freundlichen Grüßen
    Thorsten Sch.

    3D LED-CUBE - Finde ich mega Cool.......
    PS: soory hab etwas mit der Schreib weise Soory...........

  • Füge in die Zeilen 30 und 31 das hier ein, dann sollte es laufen:

    dim Bild as Byte
    dim j as Byte


    Edit:
    Und um es noch besser zu machen, die Deklarationen außerhalb der Sub.
    Hier der vollständige Quelltext:

  • Füge in die Zeilen 30 und 31 das hier ein, dann sollte es laufen:

    dim Bild as Byte
    dim j as Byte

    Ja es läuft vielen dank irrlicht es lauft
    Lieben gruß
    Thorsten

    es ist abgeschlossen das tehma danke nochmal

    3D LED-CUBE - Finde ich mega Cool.......
    PS: soory hab etwas mit der Schreib weise Soory...........