5 Stellen 7 Segment Stopuhr mit 2 Schieberegistern Ansteuern

Gast #4711108
Lesenswert?

Hallo oh allwissendes Forum,

Ich probiere und überlege jetzt schon ne ganze Weile rum, finde aber 
einfach keinen gescheiten Ansatz...

Ich habe 5 7-Segment tafeln. Jede mit 10 pins,  a-g DP und 2x common 
Anode. Über Transistoren und Widerstände angeschlossen an +5V und 0V.

Ich habe 2 in reihe geschaltete 74HC595N Schieberegister die ich dann 
mit 3 Pins vom yC beschreibe. Ich habe also ein 16 Bit Muster.

die ersten 8 Bit sind für die 5 Anoden gedacht (Anzeige kann somit für 
spätere Zeiten auf bis 8 Stellen erweitert werden), die zweiten 8 bit 
für die einzelnen Segmente.

Ich möchte jetzt eine Funktion schreiben in C die mir die Uhrzeit 
hochzählt und auf der 5dig 7segment Anzeige ausgibt. Man soll also sehen 
können wie die Uhr "rennt".
Dabei stehen die Stellen für Minute, Sekundex10, Sekunde, 
Millisekundex100, Millisekundex10

ist es besser wenn ich jede einzelne Stelle einzeln ausgeb oder immer 
zeilenweise alle 5 Stelen bediene?
Kann mir vielleicht auch jemand einen kleinen Anschupser geben?
Angehängte Dateien:
#4711127
Lesenswert?

Fabian schrieb:

> ist es besser wenn ich jede einzelne Stelle einzeln ausgeb oder immer
> zeilenweise alle 5 Stelen bediene?

a) der Plan ist sehr schlecht lesbar
b) die Verschaltung der Segmente scheint fehlerhaft zu sein

Zu Deiner Frage: Jedes Stelle einzeln ausgeben > multiplexen. Das ergibt 
sich schon aus der Schaltung.

Welche 7-Segment Anzeigen verwendest Du?
#4711184
Lesenswert?

Ich würde, auch wenn man ihn jetzt nicht braucht, den letzten 
Dezimalpunkt auch anschließen. Der eine Draht mehr erhöht den Aufwand 
nicht wesentlich, und wenn die Software später mal weiterentwickelt 
wird, was bei Bastelprojekten nicht unüblich ist, kann man ihn nutzen.

Mit freundlichen Grüßen - Martin
Gast #4711185
Lesenswert?

Fabian schrieb:
> ist es besser wenn ich jede einzelne Stelle einzeln ausgeb

Ja. 1:5 Multiplex ist besser als 1:7. So ist auch deine Schaltung.

Willst du jetzt den Code von uns ? Selber schreiben, kombiniere 
Schieberegister statt 8 bit Portausgabe und 5 Stellen Multiplex z.B. per 
2/1000 Sekunden Timer.
Gast #4711698
Lesenswert?

Fabian schrieb:
> Kann mir vielleicht auch jemand einen kleinen Anschupser geben?

Für eine 5-stellige 10 mm Anzeige im Multiplex-Betrieb, ginge folgende 
Schaltung: http://mino-elektronik.de/fmeter/fm_software.htm#bsp13

Für 13/14 mm Anzeigen eignet sich eine statische Ansteuerung der 
Segmente: http://mino-elektronik.de/7-Segment-Variationen/LCD.htm#led1

Da die Routinen für die Ansteuerung schon vorhanden sind, ist die 
Zählfunktion für eine Uhr kein großes Thema. Bei Bedarf könnte ich Dir 
Leerplatinen für beide Anzeigen anbieten.
Moderator (Firma: Titel) Persönliche Seite #4711732
Lesenswert?

Fabian schrieb:
> zwei_SchiebeRegister_7_Segment_Schaltplan.jpg
Probiers das nächste Mal, den Screenshot wie vorgeschlagen mit einem 
verlustlosen Komprimierverfahren zu posten...

> ist es besser wenn ich jede einzelne Stelle einzeln ausgeb oder immer
> zeilenweise alle 5 Stelen bediene?
Es ist besser, das Multiplexverhältnis niedrig zu halten, weil man dann
1. keine so hohe Multiplexfrequenz braucht  und
2. der Impulsstrom für die selbe wahrgenommene Helligkeit kleiner ist.

Für einen mittleren Strom von 10mA brauchst du beim Multiplexen der 7 
(mit Punkt sogar 8) Segmente einen Strom von 70..80mA. Beim 
segmentweisen Multiplexen brauchst du nur 50mA für den selben mittleren 
Strom.

Und der Witz ist: wenn du dein Programm debuggst und zufällig die PWM 
anhältst, dann können dir mit 80mA schon mal Segmente abfackeln, wo bei 
50mA evtl. noch nchts passiert wäre...
Angehängte Dateien:
Gast #4713102
Lesenswert?

ich weiß dass ich mit der millis() Funktion meine zeit bekomme.
ich will keinen fertigen Code hier geschrieben bekommen, aber einen 
hinweis vielleicht. Also ich schreibe jedes mal ein 16 Bit muster in 
mein Schieberegister: 00010000 00000011 würde dann bedeuten Stelle 5 
zeigt eine 1, oder?

Jörg R. schrieb:
> b) die Verschaltung der Segmente scheint fehlerhaft zu sein

Die Verschaltung ist bewusst so gewählt. Die Stelle 2 und 4 stehen auf 
dem Kopf. Dadurch stehen die Dezimalpunkte übereinander und es sieht wie 
ein Doppelpunkt aus (dadurch ändert sich die Segmentreihenfolge).
Durch den leicht geneigten winkel der Anzeigen passt das hoffentlich. 
Die Anzeigen sind bestellt, aber noch nicht da.

Jörg R. schrieb:
> Welche 7-Segment Anzeigen verwendest Du?

Hier der Link dazu:
https://www.conrad.de/de/7-segment-anzeige-rot-1012-mm-74-v-ziffernanzahl-1-kingbright-sa40-19surkwa-1050581.html

Jörg R. schrieb:
> Zu Deiner Frage: Jedes Stelle einzeln ausgeben > multiplexen. Das ergibt
> sich schon aus der Schaltung.

Dass ich nicht die ganze Zeile auf einmal ansteuern kann ist mir gestern 
auch wenig später klar geworden. Sonst würde ja jede stelle die gleiche 
Ziffer anzeigen.
Gast #4713126
Lesenswert?

Fabian schrieb:
> Die Stelle 2 und 4 stehen auf dem Kopf. Dadurch stehen die
> Dezimalpunkte übereinander und es sieht wie ein Doppelpunkt aus

Nicht wirklich. Es sieht eher doof aus. Das Grad für Grad 
Celsius/Fahrenheit jann man so machen.

Fabian schrieb:
> Hier der Link dazu:
> 
https://www.conrad.de/de/7-segment-anzeige-rot-1012-mm-74-v-ziffernanzahl-1-kingbright-sa40-19surkwa-1050581.html

Mit denen wird deine Schaltung nicht funktionieren, zu hoher 
Spannungsbedarf.
Gast #4713160
Lesenswert?

Peter D. schrieb:
> Solche Monsteranzeigen würde ich statisch ansteuern,

Na ja.

Aber statt Vorwiderstände besser Konstantstromsenken, wie PCA9626, der 
kann 100mA (= 5 x 20mA) und auch höhere Spannungen ab.

Bleibt das Schalten der 700mA Anoden, vielleicht per UDN2981, der 
schaltet offiziell zwar nur 500mA, da aber nur 1 Kanal zu einer Zeit 
aktiv ist, könnte man auch mit 700mA durchkommen.
Gast #4714030
Lesenswert?

Jörg R. schrieb:
> siehe Dir mal den Chip TPIC6B595 an.

Welche Schieberegister/Treiber man verwendet, ist im Prinzip egal. Man 
sollte sie nur einfach beschaffen und innerhalb ihrer Grenzwerte 
betreiben können.
Der HC595 ist daher etwas grenzwertig. Im Fehlerfall kann eine 
Überspannung auch den µC erreichen und beschädigen.

Entscheidener ist die statische Ansteuerung, die die o.g. Probleme und 
potentiell hohe Störausstrahlung vermeidet.
Gast #4714169
Lesenswert?

m.n. schrieb:
> Entscheidener ist die statische Ansteuerung, die die o.g. Probleme und
> potentiell hohe Störausstrahlung vermeidet.

Entscheidend ist das aber nur für diejenigen, die mit der Auslegung von 
Multiplexanzeigen überfordert sind. Da soll es ja Einige geben. Alle 
anderen nutzen die Bauelementeeinsparung gerne.
Gast #4716505
Lesenswert?

so langsam sind alle Klarheiten beseitig.

Also die 7 Segmentanzeigen werde ich über Transistoren ansteuern. Daher 
sollte es mit dem 74HC595 wohl keine Probleme geben, oder?

Wenn ich statt 2 5 Schieberegister nehme habe ich halt ein 40 Bitmuster, 
anstelle von 16.

Wenn ich jetzt aber eine Zeitfunktion habe die im 1/100 sek. Bereich 
hoch zählt und die Uhr mitläuft, wie Schreibe ich das dann in meine 
Schieberegister?

ich weiß wohl wie ich eine bestimmte Zahl ausgebe über das Bitmuster, 
aber ich verstehe noch nicht so ganz wie ich das hinbekomme, dass die 
Uhrzeit automatisch in mein 16 oder eben 40 Bit Muster umgebwandelt und 
ausgegeben wird.
Gast #4716561
Lesenswert?

Fabian schrieb:
> ich weiß wohl wie ich eine bestimmte Zahl ausgebe über das Bitmuster,
> aber ich verstehe noch nicht so ganz wie ich das hinbekomme, dass die
> Uhrzeit automatisch in mein 16 oder eben 40 Bit Muster umgebwandelt und
> ausgegeben wird.

Weiter oben habe ich einen Link für die statische Ansteuerung einer 
6-stelligen Anzeige gegeben. Da findest Du auch ein Programm zur 
Ansteuerung (http://mino-elektronik.de/progs/avr/Digit_6/Digit_6LED.c), 
welches zwar keine Zeitanzeige erzeugt, aber beispielhaft eine Zahl bis 
999999 permanent hochzählt und und beim Überlauf wieder bei -99999 
beginnt.
Es müßte auch auf einem Arduino laufen.

Fabian schrieb:
> Also die 7 Segmentanzeigen werde ich über Transistoren ansteuern. Daher
> sollte es mit dem 74HC595 wohl keine Probleme geben, oder?

Wenn Du bipolare NPN Transistoren nehmen willst, nimm besser 4094 
Schieberegister oder beim ..595 einen 1k Widerstand in Reihe zur Basis. 
Beim ULN2803 brauchst Du keine zusätzlichen Bauteile, wobei ich 
Abblockkondensatoren als selbstverständlich voraussetze.
Gast #4717236
Lesenswert?

Fabian schrieb:
> aber ich verstehe noch nicht so ganz wie ich das hinbekomme, dass die
> Uhrzeit automatisch in mein 16 oder eben 40 Bit Muster umgebwandelt und
> ausgegeben wird.

Nun, du musst die Ziffernwerte (0-9) eben durch 7-Segment Codes 
ersetzen, und dann seriell raussenden, und das jede 1/100 Sekunde neu.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren