Forum: Mikrocontroller und Digitale Elektronik Perfekte Zeiten einhalten


von CU (Gast)


Lesenswert?

Ich hab mir überlegt und auch etwas herumgespielt mit 7-Segment 
anzeigen.
Wenn ich die jetz multiplexen möchte also ein par transis und nen mega, 
was dann die perfekten zeiten sind, welche dafür nötig sind, dass keil 
flackern auftritt, und die segmente nicht "nachläuchten" also immer noch 
ein bisschen läuchten obwohl auf dem segment nix zu sehen ist.

Ich hoff jemand hat da etwas erfahrung gesammelt.

Grüße

von Jens G. (jensig)


Lesenswert?

Wenn da was "nachläuchtet" (schreibt man übrigens nicht mit ä), dann ist 
die Multiplexsteuerung falsch programmiert.
Perfekte Zeiten? 100Hz und mehr. (aber nicht zu hoch in den kHz-Bereich 
gehen, sonst führen evtl. die Schaltzeiten von Transistor & Co. evtl. 
dann doch wieder zum "nachläuchten")

von Dussel (Gast)


Lesenswert?

Deutsch oder Englisch bitte.
Damit kein Flackern auftritt, sollte es so schnell wie möglich sein. Ich 
würde aber sagen 50Hz müssten reichen.

von MaWin (Gast)


Lesenswert?

50Hz reichen nicht, 100 schon. Die obere Grenze ergibt sich meist aus 
den EMV Anforderungen, das Ding soll ja andere Geräte nicht stören, und 
bei Multiplexanzeigen fliessen recht hohe Ströme. Daher legt man bei 
kommerziellen Anzeigen wert auf langsamen Ansteig und Abfall der Ströme, 
das bremst.

Ist die Multiplexanzeige bewegt, kann man mehr als 100Hz benötigen.

von Peter D. (peda)


Lesenswert?

100Hz * Digitanzahl

Nachleuchten ist meistens ein SW-Fehler oder Transistoren in 
Emitterschaltung. Daher besser in Kollektorschaltung oder FETs.


Peter

von CU (Gast)


Lesenswert?

hab in meinem Programm jetzt halt 450 mikrosekunden wo die an ist, und 
dann schalt ich die wieder aus und die nächste wieder an und isgesammt 
halt 5 stück.
Ich werds mir nacher mal durchrechnen, aber dankeschonmal.

CU

P.S.: 50 und 100 Hz sind bei den fernsehern doch auch der fall gell ;)

von Reinhard R. (reirawb)


Lesenswert?

Oberhalb 100 Hz Wiederholfrequenz flackert nichts mehr, ich nehme immer 
Werte so zwischen 120 und 150 Hz. An den Prozessortakt angepasst und auf 
gute Teilbarkeit optimiert.
Nachleuchten vermeidest Du, indem Du beim Wechsel zuerst den 
Digittreiber abschaltest, dann die neue Segmentinformation an die 
Anzeige ausgibst und am Schluß den nächsten zugehörigen Digittreiber 
wieder einschaltest.
Also nicht bei aktivem Digittreiber die Segmenansteuerung wechseln, das 
sieht man.

Reinhard

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Ich werds mir nacher mal durchrechnen ...
Vorher durchrechnen wäre auch eine Möglichkeit   :-/

von CU (Gast)


Lesenswert?

Jo vorher würde ich machen, aber das war eins meiner ersten projekte und 
das fand ich echt schon gut ;) naja okay das nächste mal dann.

Das mit der übergabe daran hab ich gar nicht gedacht, ich mach mir grad 
das layout für ein 5 stelliges display so wie ein LCD nur mit 7-Seg, da 
werd ich mir dann mehr mühe machen ;)

von Jens G. (jensig)


Lesenswert?

das hat nix mit Layout zu tun, sondern etwas mit dem Timing beim 
ansteuern der Segmente und Digits ....

von Vlad T. (vlad_tepesch)


Lesenswert?

wie MaWin schon sagte:
100 Hz reichen nicht unbedingt.

Beim Fernseher fällt es nicht auf, da das Bild bewegt ist und (bei 
röhren) leicht nachleuchtet.
wenn du eine LED mit 100Hz und geringem Duty-Cylce pulst und deinen Kopf 
bewegst (oder die LED) hast du so einen Perlenschnur-Eeffekt.
Das kann ganz schön unangenehm sein.


Edit:
>das hat nix mit Layout zu tun, sondern etwas mit dem Timing beim
>ansteuern der Segmente und Digits ....

würd ich auch vermuten.
Zb, dass du erst den einen Port umschaltens, dann den anderen. -> die 
falschen LEDs gehen erst mal ganz kurz an.
um das zu beheben must du den anderen Port erst ausschalten, dann den 
einen an und dann den anderen wieder mit dem neuen Wert.

von CU (Gast)


Lesenswert?

Okay habs jetzt mal soweit verbessert, und zuerst das neue zeichen 
"angelegt" und dann die masse  durchgeschalten. funktioniert perfekt! 
DANKE!
Aber jetzt nochmal zu der frequenz, wenn ich da jetzt immer 1ms warte 
pro segment, dann macht das mich pro durchlauf eines Taktes ja immer 5 
ms also geht mir da ziemlich die rechenleistung verloren.

wenn ich jetzt nicht alzu lang warte, dann werden die segmente dunker -> 
auch doof...

irgendwie muss es da doch eine andere lösung geben oder???

Guten abend noch

von Peter D. (peda)


Lesenswert?

CU schrieb:
> Aber jetzt nochmal zu der frequenz, wenn ich da jetzt immer 1ms warte
> pro segment, dann macht das mich pro durchlauf eines Taktes ja immer 5
> ms also geht mir da ziemlich die rechenleistung verloren.


Nö, Multiplexen ist Standard, kostet unter 1% CPU-Zeit (in C).

Du muß ja im Timerinterrupt nur 3 Ausgabebefehle machen, das schafft man 
schon.
Für 5 Digits brauchst Du im SRAM 5 Byte als "Bildspeicher" und ein Byte 
zum Zählen, welches Digit grad ausgegeben werden soll.


Peter

von Falk B. (falk)


Lesenswert?

@  CU (Gast)

>Aber jetzt nochmal zu der frequenz, wenn ich da jetzt immer 1ms warte
>pro segment, dann macht das mich pro durchlauf eines Taktes ja immer 5
>ms also geht mir da ziemlich die rechenleistung verloren.

Nöö, wenn man sich mal über das Thema LED-Matrix und Interrupt 
informiert, ist das alles ganz einfach.

>irgendwie muss es da doch eine andere lösung geben oder???

Nicht das Rad neu und viereckig erfinden, NACHLESEN wie es MILLIONEN vor 
dir gemacht haben.

MFG
Falk

von Karl H. (kbuchegg)


Lesenswert?

CU schrieb:

> Aber jetzt nochmal zu der frequenz, wenn ich da jetzt immer 1ms warte
> pro segment,


Musst du nicht.
Du musst nur dafür sorgen, dass dein Interrupt alle 1ms kommt. Bei jedem 
Interrupt schaltest du um 1(!) Stelle weiter. Also nicht alle 5 in einem 
ISR Durchgang.

EDIT: Bisher war ja von Interrupt noch gar nicht die Rede, sehe ich 
gerade. Sollte es aber. Am einfachsten legt man das Multiplexing in eine 
ISR.

von Rolf Magnus (Gast)


Lesenswert?

> wenn du eine LED mit 100Hz und geringem Duty-Cylce pulst und
> deinen Kopf bewegst (oder die LED) hast du so einen Perlenschnur-
>Eeffekt. Das kann ganz schön unangenehm sein.

Sieht man auch ab und zu bei den Rücklichtern und Tagfahrlichtern von 
neueren Autos. Da werden die LEDs auch gerne mal zu niedrig getaktet.

von Peter D. (peda)


Lesenswert?

Karl heinz Buchegger schrieb:
> EDIT: Bisher war ja von Interrupt noch gar nicht die Rede

Wer Multiplexanzeige ohne Interrupts macht, muß extremst Langeweile 
haben.


Peter

von Falk B. (falk)


Lesenswert?

@  Peter Dannegger (peda)

>Wer Multiplexanzeige ohne Interrupts macht, muß extremst Langeweile
>haben.

In Zeiten der Wirschaftskrise muss auch für Mikrocontroller ABM her ;-)

MFG
Falk

von Jens G. (jensig)


Lesenswert?

>Wer Multiplexanzeige ohne Interrupts macht, muß extremst Langeweile
>haben.

zumal dann die Anzeige ständig flackert, wenn der µC mal mehr, mal 
weniger zu tun hat (sieht man noch schön bei alten/einfachen TV-Geräten, 
wenn man eine Taste drückt - da war also offensichtlich auch schon ABM 
angesagt ;-)

von MaWin (Gast)


Lesenswert?

> Sieht man auch ab und zu bei den Rücklichtern und Tagfahrlichtern von
> neueren Autos. Da werden die LEDs auch gerne mal zu niedrig getaktet.

Es spart eine Spule im Wert von 12 ct.
Das ist bei den Preisen von Premium-Autos mit LED Rücklichtern natürlich 
absolut wichtig, dieses Geld einzusparen, um den Reibach-Koeffizienten 
hoch genug zu halten.

Das kann man problemlos zu Lasten aller anderen Verkehrsteilnehmer 
machen, schliesslich hat man den TÜV-Prüfer mit hundertausenden EUR 
bestochen.

von Jens G. (jensig)


Lesenswert?

wenn auch die Bremslichter zu niedrig getaktet sind, liegt es vielleicht 
auch an der zu niedrigen "Stotterbremsfrequenz" des Fahrers ;-)

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.