Forum: Mikrocontroller und Digitale Elektronik 7 Segment mit 4 Stellen - Schieberegister und Multiplexing


von Orhan E. (orhan)


Angehängte Dateien:

Lesenswert?

Hallo an alle,

bin relativ neu in dem gebiet µController und wollte für mein erstes 
kleineres Projekt nachfragen.

Zu meinem anliegen:

Ich möchte eine 4-Stellige 7 Segment Anzeige ansteuern. Durch das 
Tutorial auf dieser Seite habe ich einmal das Multiplexing gesehen und 
einmal die Lösung mit dem Schieberegister. Nun wollte ich mit möglich 
wenig Pins auskommen.

Im anhang habe ich eine Schaltung gelegt. Wäre dieser Aufbau so möglich? 
Ich würde natürlich auch noch vorwiederstände nutzen für die einzelnen 
Segmente.

Folgende überlegungen habe ich mir für das Programm gemacht:

1. Muster von dem ersten Digit in das Schieberegister laden und ausgeben
2. Transistor von dem ersten Digit durchschalten und ausschalten
3. Muster von dem zweiten Digit in das Schieberegister laden und 
ausgeben
4. Transistor von dem zweiten Digit durchschalten und ausschalten
usw.

Würde das so funktionieren?

von MaWin (Gast)


Lesenswert?

> Wäre dieser Aufbau so möglich?

VCC gehört nicht an den Kollektor der BC547

> Ich würde natürlich auch noch vorwiederstände nutzen für die einzelnen
> Segmente.

War das Einzeichnen jetzt so schwierig und die Angabe,
welche Displays mit welchen Kenndaten es sind ?
Denn mit so mangelhaften Angaben kann es dir niemand ausrechnen.

Offiziell verträgt der 74HC595 nur 70mA durch VCC,
also 10mA pro Segment. Da ein Segment nur 1/4 der zeit an ist, führt das 
zu einer Helligkeit als ob die Anzeigen mit 2.5mA dauerhaft durchflossen 
werden. Nicht besonders viel.

Immerhin verträgt der 74HC595 bis 35mA aus einem Ausgang, man könnte 
also 8.75mA durchschnittlich durch die LEDs fliessen lassen wenn man den 
Strom durch VCC mit 254mA zulässt. So lange kein Ausgang des 74HC595 
wieder in andere Logikbausteine geht, ist diese Überlastung 
normalerweise tolerabel.

Deine BC547 müssten diese 254mA dann auch nach Masse ableiten können. 
Offiziell vertragen die aber nur 100mA. Korrekterweise müsste man also 
BC337 nehmen. Um 254mA gut durchzuschalten, braucht man 12 bsi 24mA 
Basisstrom, also 220 Ohm Basisvorwiderstand.


Software funktioniert so.

von Orhan E. (orhan)


Lesenswert?

MaWin schrieb:
> VCC gehört nicht an den Kollektor der BC547

Müsste ich dann dort anstatt Vcc z.B. eine externe Batterie anschließen?

MaWin schrieb:
> War das Einzeichnen jetzt so schwierig und die Angabe,
> welche Displays mit welchen Kenndaten es sind ?

Es wurde sehr unübersichtlich deshalb habe ich es nicht eingezeichnet. 
Vorwiederstände würde ich 330 Ohm nehmen. Die Wiederstände an der Basis 
1 kOhm, diesen Wert habe ich aus dem Tutorial. Wechsle jedoch dann die 
Transistoren zu den vorgeschlagenem BC337.

Die Displays sind: SA 08-11 RT von Kingbright

von Karl H. (kbuchegg)


Lesenswert?

Orhan E. schrieb:
> MaWin schrieb:
>> VCC gehört nicht an den Kollektor der BC547
>
> Müsste ich dann dort anstatt Vcc z.B. eine externe Batterie anschließen?


Das würde nix ändern.

SA 08-11 RT sind 7-Segment mit gemeinsamer Anode.

Der der Strom immer von der Anode zur Kathode fliesst, bedeutet das, 
dass du über den Transistor diesen Anschluss mit Vcc verbinden müsstest. 
In diesem speziellen Fall kannst du dir den Transistor wie einen 
Schalter vorstellen, der, wenn er gedrückt ist, den A-Anschluss mit Vcc 
verbinden muss.

Dein Transistor macht das aber nicht. Wenn dein Transistor 
durchschaltet, dann verbindet er Vcc direkt mit GND und sowas nennt man 
im Allgemeinen einen Kurzschluss.

Hast du aber 7-Segment mit einer gemeinsamen Kathode, dann müssste der 
Transistor diesen Ausgang nach GND durchverbinden.

Welche der beiden Schaltungsvarianten notwendig sind, kann man aber ohne 
Kentnis des konkreten Typs von 7-Segment nicht sagen.


>> War das Einzeichnen jetzt so schwierig und die Angabe,
>> welche Displays mit welchen Kenndaten es sind ?
>
> Es wurde sehr unübersichtlich deshalb habe ich es nicht eingezeichnet.

Das ist kein Grund. Man kann das alles auch so zeichnen, dass es eben 
nicht unübersichtlich wird. Dazu darfst du dann eben nicht beim ersten 
Entwurf stehen bleiben, sondern musst dir ein wenig überlegen, welche 
Bausteine du ein wenig verschiebst, so dass du auf der Zeichnung den 
Platz bekommst um die Leitungen kreuzungsfrei und mit allen Bauteilen 
einzuzeichnen. Mit der Eagle Gruppen-Funktion ist es gar nicht mal 
besonders schwer, einen ganzen Bereich inklusive Veschaltung auszuwählen 
und gemeinsam zu verschieben. Nur tun muss man es!

von Orhan E. (orhan)


Angehängte Dateien:

Lesenswert?

Karl Heinz Buchegger schrieb:
> Welche der beiden Schaltungsvarianten notwendig sind, kann man aber ohne
> Kentnis des konkreten Typs von 7-Segment nicht sagen.

Ich habe auf jeden Fall eine gemeinsame Anode.

Eine neue Version ist im Anhang. Diese ist von der Anordnung her 
bestimmt sehr verbesserungswürdig aber ich finde es schon 
übersichtlicher als vorher.

Jetzt dürfte es doch funktionieren oder?

von MaWin (Gast)


Lesenswert?

> Jetzt dürfte es doch funktionieren oder?

Versuch's jetzt aber mit PNP BC328 wenn du schon "umpolst".

von Uwe (de0508)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe letzte Woche einen erfolgreichen Test mit einer 4-fach LED 
Anzeige mit gemeinsamer Anode und einem atTiny2313 ohne weitere 
Außenbeschaltung gemacht.

Die LED-Anzeige wird mit 1000Hz gemultiplext, so dass jede der 4-Stellen 
mit 250Hz ein 'update' erhält.

Über den seriellen Eingang lassen sich mit 9.600 Baud,8,N,1 einfach 
Zeichenketten in die Anzeige schreiben.

Beispiel:
"Hallo Welt heute ist der 27.09.2011\r"

Ist der Text länger als 4 Zeichen, so wird die Text der Anzeige 
automatisch nach links gescrollt, also das Sichtfenster nach rechts.

Der atTiny2313 wird im Grenzbereich betrieben ! und ein Unschönheit soll 
auch nicht verschwiegen werden, eine "1" ist heller als eine "8".
D.h. je mehr Segmente der LED-Anzeige leuchten, desto dunkler sind 
diese, somit ist der Strom über ein I/O Pin begrenzt ist.

Die übersetzte FW als HEX-Datei kann ich zusenden.


.

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Hallo,

ich habe die ganze Diskussion nicht durchgelesen. Hast du mal über die 
Verwendung eines MAX7219 nachgedacht? Das ist ein IC zur Ansteuerung von 
bis zu acht Sieben-Segment-Anzeigen.

Gruß,
Alex

von Uwe (de0508)



Lesenswert?

Hallo,

noch ist noch ein vollständiger Schaltplan einer 8-stelligen 
LED-Anzeige.

Daraus solltest Du das für dich nötige ableiten können.

Da ich auch einige Platinen angefertigt habe, kann ich auch ein Bild, 
ein PDF mit den Bauteilen und den Bauteilwerten beisteuern.

.

von Karl H. (kbuchegg)


Lesenswert?

Uwe S. schrieb:
> Hallo,
>
> ich habe letzte Woche einen erfolgreichen Test mit einer 4-fach LED
> Anzeige mit gemeinsamer Anode und einem atTiny2313 ohne weitere
> Außenbeschaltung gemacht.

Wenn du das für dich privat machst, so ist das deine Sache. Aber bitte 
propagier sowas nicht in einem Forum.

Du empfiehlst ja einem Fahranfänger auch nicht, mit 160km/h 
unangeschnallt durch den Wald zu brettern, nur weil dir nichts passiert 
ist.

Danke.

von Timo S. (kaffeetas)


Lesenswert?

Uwe S. schrieb:
> Da ich auch einige Platinen angefertigt habe, kann ich auch ein Bild,
> ein PDF mit den Bauteilen und den Bauteilwerten beisteuern.

Bist Du sicher auch die im Schaltpaln angegebenen Werte bestückt zu 
haben? Zumindest die Vorwiderstände sehen für mich nicht nach 330 Ohm 
aus!

Grüße
 Timo

von Uwe (de0508)


Lesenswert?

Hallo Timo,

danke fürs genaue hinsehen.

im Original haben die Widerstände die Farbringe:

orange-orange-schwarz-schwarz-braun

Das ist also 330 Ohm 1%

"Rechner für 5 (6) Farbringe"

http://www.dieelektronikerseite.de/Tools/Widerstandsrechner.htm

Mit dem Ohmmeter habe ich dies in der Schaltung überprüft.

.

von Falk B. (falk)


Lesenswert?

Oder kurz und knapp. LED-Matrix.

von Timo S. (kaffeetas)


Lesenswert?

Uwe S. schrieb:
> im Original haben die Widerstände die Farbringe:
>
> orange-orange-schwarz-schwarz-braun
>
> Das ist also 330 Ohm 1%

Ok dann täuscht das Bild. Ich hatte das jetzt für braun - braun - 
schwarz ..... gehalten, also 110 Ohm.

Grüße
 Timo

von Uwe (de0508)


Lesenswert?

Hallo Timo,

ja Braun sind Orange sind sich sehr änhlich.

Ich habe gerade in die atTiny2313 4-fach LED-Anzeige 68Ohm 
Reihenwiderstände eingebaut.

Somit ist der atTiny nicht mehr im Grenzbereich.

Beitrag "Re: 7 Segment mit 4 Stellen - Schieberegister und Multiplexing"

von Orhan E. (orhan)


Angehängte Dateien:

Lesenswert?

Hallo nochmal,

habe nun die Schaltung aufgebaut und versucht mal mit zwei Stellen zu 
probieren. Im Anhang ist das Programm, welches ich geschrieben habe für 
die zwei Stellen.

Jedoch ist es nun so, das bei der 1. Stelle die 2. Stelle erahnt werden 
kann. Also die 2. Stelle ist schwächer leuchtend in der 1. Stelle zu 
sehen. Woran kann das liegen?

von Karl H. (kbuchegg)


Lesenswert?

Du musst den Aufruf von qAusgabe solange verzögern, bis keine Anzeige 
mehr freigeschaltet ist.


    while(1)
    {
    //Erste Stelle ausgeben
    schreibe1();
    PORTB &= ~(1<<DigitII); //DigitII ausschalten

----> hier Aufruf von qAusgabe

    PORTB |= (1<<DigitI);   //DigitI einschalten
    //Zweite Stelle ausgeben
    schreibe2();
    PORTB &= ~(1<<DigitI);  //DigitI ausschalten

----> hier Aufruf von qAusgabe

    PORTB |= (1<<DigitII);  //DigitII einschalten

    }


ansonsten reagiert die jeweils falsche Stelle bereits auf die Ausgabe 
vom Schieberegister.


Aber im Endeffekt wird das alles sowieso nicht so bleiben, sondern in 
eine Timer-ISR ausgelagert.

von Karl H. (kbuchegg)


Lesenswert?

Ähm.
Ich hoffe jetzt aber ganz stark für dich, dass du jetzt keine

schreibe1()
schreibe2()
schreibe3()
...
schreibe9()
schreibe0()

Funktionen machst. Das ist der falsche Weg. Du brauchst eine einzige 
Ausgabefunktion, der du ein Byte übergibst und die dieses Byte Bit für 
Bit an das Schieberegister raustaktet. Welche Segmente dann leuchten 
sollen bestimmt der Bytewert, der an diese Funktion übergeben wird.

von Max (Gast)


Lesenswert?

Ich habe immer einen MAX7219 für 6€ 
http://www.maxim-ic.com/datasheet/index.mvp/id/1339 verwendet. Alles ist 
drin und man braucht nur SPI Steurung. Sogar die Helligkeit ist 
steuerbar.

von Orhan E. (orhan)


Angehängte Dateien:

Lesenswert?

Hallo,

bin erst seit gestern wieder an meinem kleinen Projekt dran. Vielen dank 
für den tipp mit dem einen Byte welches ich einfach raustakte.

Habe aber seit gestern mit einem anderen Problem zu kämpfen. Ich habe 
nun die Schaltung erstmal so aufgebaut, das die gemeinsamen Anoden der 
vier Stellen einfach an der Versorgung sind. Ich schalte also nicht mit 
den Transistoren, die Stellen müssten alle die selbe Zahl anzeigen. Die 
Stellen A bis G + Dp habe ich an dem 74HC595.

Leider ist es so das ich nichts an meinem Siebensegment Anzeige sehe. Es 
klingt komisch, aber wenn ich mit meinem Finger den 74HC595 berühre, 
dann leuchten meine Stellen auf. Was kann das sein? Im Anhang ist der 
derzeitige Quellcode. Vielen dank.

von MaWin (Gast)


Lesenswert?

> aber wenn ich mit meinem Finger den 74HC595 berühre,
> dann leuchten meine Stellen auf

Es weiß natürlich niemand, welche Schaltung du nun aufgebaut hast, aber 
vielleicht solltest du mal alle Eingänge des 74HC595 anschliessen, so 
auch G.

von Hummel (Gast)


Lesenswert?

Tach auch,

eigentlich wollte ich keine Antwort auf die Ursprüngliche Frage liefern,
mir widerstrebt es aber, für meine Frage ein extra Beitrag zu erstellen.

Ich prinzip habe ich das selbe vor wie der TE.
Nur benötige ich lediglich 3 * 7 Segmentanzeigen.

Kann man diese Schaltung so übernehmen:
Beitrag "Re: 7 Segment mit 4 Stellen - Schieberegister und Multiplexing"  ?
Es ist nicht 100% zuortbar, warum da noch eine ganze Weile gemeckert 
wurde.
Im Prinzip sehe ich da kein Fehler und würde es genauso machen.
Oder passt da was nicht?

Ich würde mich auf eure Antworten freuen :)

LG Hummel.

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
Noch kein Account? Hier anmelden.