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?
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?
:
Bearbeitet durch User
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
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.
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.
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...
Lothar M. schrieb: > 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... Bei statischer Ansteuerung entfällt dieses Problem gänzlich.
m.n. schrieb: > Für eine 5-stellige 10 mm Anzeige im Multiplex-Betrieb, ginge folgende > Schaltung Schrottschaltung. Der niedrige Strom reicht höchstens für 2mA Dunkelanzeigen.
595 sind so billig das sich multiplexen nicht lohnt. Goenn einfach jeder Stelle ein Schieberegister. Die "elektromagnetische" Umwelt wird es Dir danken.
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.
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 Die Versorgungsspannung der Segmente von 7,4 V hast Du offensichtlich nicht beachtet. Steuer die Anzeigen statisch an mit je 5 x 4094 + ULN2803.
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.
Solche Monsteranzeigen würde ich statisch ansteuern, Platz hast Du ja genug auf der Platinenrückseite. Also je Anzeige ein 74HC595 und ein Widerstandsarray (8*330R). Die Anzeigenspannung auf 10V stabilisieren, dann reichen die 5V Hub des 74HC595 völlig aus (die Dezimalpunkte brauchen noch ne Z-Diode 3,9V in Reihe).
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.
Hallo Fabian, siehe Dir mal den Chip TPIC6B595 an. Wie oben schon geschrieben benötigen die Displays > 7 Volt. Die Anoden deiner Displays legst Du fest auf 8 bis 10 Volt und die Kathoden über entsprechende Vorwiderstände an die Ausgänge der TPIC6B595. Du benötigst 5 Stück, also für jede Stelle einen.
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.
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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.