Forum: Mikrocontroller und Digitale Elektronik LED-Segmente durch Multiplex zu dunkel


von Bis U. (bis0uhr)


Lesenswert?

Hallo,

Habe jetzt das erste mal eine 5-Stellige LED 7-Segmentanzeige über mein 
ATMEGA128 angesteuert. Leider ist die Anzeige eindeutig zu dunkel. Komme 
ich da nicht drum rum einen Treiber zwischen Port und Anzeige zu 
schalten?
Leider habe ich kein Datenblatt von der Anzeige aber bei 10mA DC 
leuchten sie kräftig auf. Da ich ja nun pulse (100us pro Digit) und 5 
Stück versorgen muß bleiben nur noch 1/5 also 20% der Leuchtkraft.
Wie man es nun von LED´s her kennt kann ich im Pulsbetrieb auch höheren 
Strom fahren aber was sagt der uc dazu? Das Datenblatt dazu habe ich 
auch schon etliche male durchgelesen aber nix gefunden. Kann mir auch 
nicht vorstellen das ich die Ports mit mehr als 20mA Normal belasten 
kann.
Also bleibt doch nur der Griff zur externen Elektronik oder habe ich da 
was übersehen?

Gruß bis0uhr

von Adam A. (adam)


Lesenswert?

guck mal bei den "electrical characteristics" hinten im datenblatt. da 
steht was über die pin-belastung.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Gesammtbelastung der VCC/GND Pins soweit cih weis 200 mA

von Emperor_L0ser (Gast)


Lesenswert?

die atmegas können 20 mA pro port, aber alle zusammen dürfen 200 mA 
nicht überschreiten, also kleineren widerstand rein und es sollte 
ordentlich leuchten

von Jadeclaw D. (jadeclaw)


Lesenswert?

@ 0Uhr: Lass die einzelnen Stellen mal etwas länger leuchten.
100µsec ist da was kurz, jeweils 1 msec eingeschaltet lassen, bevor auf 
die nächste Stelle weitergeschaltet wird. Damit wird es schon merklich 
heller.

Gruss
Jadeclaw.

von Rolf Magnus (Gast)


Lesenswert?

> die atmegas können 20 mA pro port, aber alle zusammen dürfen 200 mA
> nicht überschreiten,

Das kann man pauschal nicht sagen. Wenn sich z.B. der Reset mit einem 
Port einen Pin teilt, ist dieser in der Regel weniger belastbar. Die
pauschal 200 mA gesamt gelten meistens nur für die kleineren AVRs. Bei 
den größeren ist es meist komplizierter. So steht dann im Datenblatt des 
Atmega128:

1] The sum of all IOL, for all ports, should not exceed 400 mA.
2] The sum of all IOL, for ports A0 - A7, G2, C3 - C7 should not exceed
   100 mA.
3] The sum of all IOL, for ports C0 - C2, G0 - G1, D0 - D7, XTAL2 should
   not exceed 100 mA.
4] The sum of all IOL, for ports B0 - B7, G3 - G4, E0 - E7 should not
   exceed 100 mA.
5] The sum of all IOL, for ports F0 - F7, should not exceed 100 mA.

und:

1] The sum of all IOH, for all ports, should not exceed 400 mA.
2] The sum of all IOH, for ports A0 - A7, G2, C3 - C7 should not exceed
   100 mA.
3] The sum of all IOH, for ports C0 - C2, G0 - G1, D0 - D7, XTAL2 should
   not exceed 100 mA.
4] The sum of all IOH, for ports B0 - B7, G3 - G4, E0 - E7 should not
   exceed 100 mA.
5] The sum of all IOH, for ports F0 - F7, should not exceed 100 mA.

von Bis U. (bis0uhr)


Lesenswert?

Hallo und Danke für die schnellen Antworten.

@  Emperor_L0ser: Einen kleineren Widerstand rein machen? Gut der ist 
jetzt genau auf 10mA dimensioniert also könnte ich bis max 14mA gehen 
damit ich die Gesamtbelastung von 100mA nicht übersteige (Bei mir sind 
sie Segmente A0-A6 IOH benutzt) nach der Tabelle von Rolf. Aber ob das 
mehr bringen soll? Wird sich kaum bemerkbar machen.

@ Jadeclaw: Die Idee die Segmente länger aufleuchten lassen 1ms statt 
0,1ms. Ich werde es heute Abend mal probieren aber vorstellen kann ich 
mir auch nicht das es mehr Gewinn bringt. Aber Versuch macht klug.

Gruß bis0uhr

von Bis U. (bis0uhr)


Lesenswert?

Hallo, ich bin ein ganz schneller :-)
Habe es doch noch schnell ausprobiert und den Digit 1ms spendiert. Das 
Resultat ist aber ernüchternd. Keine sichtbare Änderung.
Also nach nochmaliger Überlegung geht ohne mehr Strom nix und da ich 
nicht mehr zur Verfügung stellen kann war es das. Im Prinzip habe ich ja 
jetzt eine PWM :-)
Mich wundert nur das noch niemand im Forum diese Problem hatte. 
Vielleicht sollte ich auch effektivere Anzeigen nehmen und nicht solche 
alten Dinger von der Pollin "Wundertüte" lol

Gruß bis0uhr

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Zur Not nimm doch Ausgangstreiber á la ULN2803, die können 500mA pro 
Zweig. Für Deine Anzeige reicht das dicke. Hast Du eigentlich jetzt in 
den gemeinsamen Anoden (oder Kathoden, je nach Modell) der Anzeigen 
Transistoren drin? Weil 7*20mA kommen dort zu tragen und das schafft 
kein PortPin alleine.

von Bis U. (bis0uhr)


Lesenswert?

Ja habe Transistoren an der gemeinsamen Kathode dran.

Ausgangstreiber wollte ich zwar vermeiden aber beim ULN2803 hält sich 
das noch in Grenzen. Werde ich so machen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Guck auch mal, ob die Transistoren an den Kathoden in der Sättigung 
sind, wenn Du sie durchsteuern läßt, damit sie auch voll leiten und 
keine Leistung verloren geht.

von Bis U. (bis0uhr)


Lesenswert?

An das hatte ich schon nicht mehr gadacht :-)
Also ich habe 5Volt Bertiebsspannung und die Transistoren PNP (Emitter 
auf GND und Basis über 1,2 KOhm an PortPin Kollektor an Kathode) daraus 
ergibt sich ein Basisstrom von ca. 3,5mA. Die Transistoren haben einen 
hohen Verstärkungsfaktor von ca. 1000 somit sollten sie voll 
durchsteuern.

von StefanK. (Gast)


Lesenswert?

Hi Bis Uhr,

also den ATMEGA kenne ich jetzt nicht im Detail, aber den maximalen 
Strom pro Port dürfte der wie die meisten Prozessoren nur im 
SINK-Betrieb schaffen, d.h. wenn die Ports auf LOW sind. Übrigens meinst 
Du hoffentlich NPN-Transistoren für die Kathoden?
Ich kenne das eigentlich nur mit Common Andode-LED. Die einzelnen 
Segmente gehen auf die Ports, die gegen Masse schalten und die Anoden 
werden über PNP-Transistoren gegen Plus geschaltet. Das funktioniert 
tadellos.

Gruß Stefan

von Keks (Gast)


Lesenswert?

10mA sind zu wenig, du kannst (mußt) die Leds ruhig für 1ms mit 100mA 
ansteuern, das sind dann grob gesagt 1mA/s.


von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

3,5mA Basis-Strom reichen völlig. Sicher meintest Du _npn_-Transistoren.

von Jadeclaw D. (jadeclaw)


Lesenswert?

@StefanK: Das war mal. Die ersten Serien wie der AT90S1200 waren so, 
alles spätere wie die ATTiny und ATMega sind da absolut symmetrisch, 
d.h. 20mA geht in beiden Richtungen.

Für 100mA Impulsleistung sind aber externe Treiber notwendig.

Gruss
Jadeclaw.

von StefanK. (Gast)


Lesenswert?

@Jadeclaw Dinosaur,

danke, habe inzwischen auch einen Blick ins Datenblatt 
geworfen...interessant, interessant.

Gru? Stefan

von PeterL (Gast)


Lesenswert?

und wenns richtig hell sein soll, nimm sowas in der Art MAX7221

Peter

von Bis U. (bis0uhr)


Lesenswert?

Ups mein Fehler natürlich habe ich NPN-Transistoren weiß auch nicht wie 
ich auf PNP kam.
@Keks: 100mA klingt gut so war auch mein Plan aber dann nur mit externen 
Treiber wie z.B. den angesprochenen ULN2803.

So nun stelle ich mir schon vor das dann alles funktioniert, dann könnte 
man auch schon an das Dimmen denken. Dazu brauche ich dann nur die 
Digits über PWM pulsen oder gibt es eine bessere Lösung. Die Teile von 
Maxim sind mir aber zu teuer.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Das Problem beim Dimmen ist, daß die Dimmfrequenz (also das PWM) zum 
einen synchron zur Umlauffrequenz der Digits sein muß und zum anderen 
muß diese noch um ein Vielfaches schneller sein. Sonst kommt es zu 
unschönem Flimmern oder noch häßlicheren Laufeffekten. Dabei kommt Dir 
aber die maximale Schaltfrequenz der Kathodentransistoren und auch des 
ULNs in die Quere, so daß Du Geistersegmente durch Verwischungseffekte 
sehen wirst. Du wirst einen Kompromiß zwischen Funktionalität und 
Tastgeschwindigkeit für die Digits wählen müssen, sonst bekommst Du 
Augenkrebs.

von Jadeclaw D. (jadeclaw)


Lesenswert?

Ich habe das mit dem Dimmen anders gemacht:
Daten für die Stelle ins Ausgangsregister,
Stelle eingeschaltet,
eine Verzögerungsschleife ablaufen lassen
(dabei ggf. anderes erledigt),
Stelle ausgeschaltet,
eine zweite Verzögerungsschleife ablaufen lassen,
... nächste Displaystelle ...
Das Zeitverhältnis zwischen Hellschleife und Dunkelschleife
ergibt dann den Helligkeitseindruck.
Wichtig ist nur, dass das Display mindestens 80 mal pro Sekunde komplett 
durchlaufen wird, sonst flimmert es.
Den PWM, respektive den dazugehörigen Portpin kann man dann für 
Sinnvolleres verwenden.

Gruss
Jadeclaw.

von Bis U. (bis0uhr)


Lesenswert?

Ja das klingt doch gut und gibt keinen Augenkrebs :-)

Schaltzustände pro Digit:

  100 200 300 400 500 600 700 800 900 1000 uS
  ----------------------------------------
  L   H   H   H   H   H   H   H   H   H    10us aus 90us an = 90%
  L   L   H   H   H   H   H   H   H   H    20us aus 80us an = 80%
  L   L   L   H   H   H   H   H   H   H    30us aus 70us an = 70%
  L   L   L   L   H   H   H   H   H   H    40us aus 60us an = 60%
  L   L   L   L   L   H   H   H   H   H    50us aus 50us an = 50%
  L   L   L   L   L   L   H   H   H   H    60us aus 40us an = 40%
  L   L   L   L   L   L   L   H   H   H    70us aus 30us an = 30%
  L   L   L   L   L   L   L   L   H   H    80us aus 20us an = 20%
  L   L   L   L   L   L   L   L   L   H    90us aus 10us an = 10%
  L   L   L   L   L   L   L   L   L   L    aus :-)

Da ich vorher die Anzeige mit 100us laufen lies und es funktioniert hat 
sollte es so gehen.

@Travel: Also der Transistor ist schon schneller als das menschliche 
Auge lol und der ULN2803 hat eine Schaltzeit von 1 us Turn-on Delay 
Time und 1 us Turn-off Delay Time das dürfte dann auch nicht ins Gewicht 
fallen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>>@Travel: Also der Transistor ist schon schneller als das menschliche
>>Auge lol und der ULN2803 hat eine Schaltzeit von 1 us Turn-on Delay
>>Time und 1 us Turn-off Delay Time das dürfte dann auch nicht ins Gewicht
>>fallen.

Das ist schon richtig und um den ULN mach´ich mir da keine Sorgen, aber 
probier´s doch einfach, Du wirst schon sehen, daß Du ohne 
zwischenzeitliches Dunkeltasten der Segmentpins die Segmente des 
vorhergehenden Digits auf der jeweils nachfolgenden Stelle mitglimmen 
siehst. Ein Effekt des "langsamen" Digit-Transistors. Desweiteren kommt 
dazu, daß der Transistor bis herunter auf 0.6V an der Basis leitet, 
somit also bis an den unteren Rand der Flanke der digitalen 
Steuersignale.

von Peter D. (peda)


Lesenswert?

Travel Rec. wrote:

> Dabei kommt Dir
> aber die maximale Schaltfrequenz der Kathodentransistoren und auch des
> ULNs in die Quere, so daß Du Geistersegmente durch Verwischungseffekte
> sehen wirst.

Das liegt aber nicht am Transistor, sondern an der falschen Schaltung 
(Emitterschaltung mit ihrer Miller-Kapazität).

Genau deshalb nehme ich lieber die Kollektorschaltung fürs Multiplexen, 
da kannste auch mit 100kHz einwandfrei schalten.


Peter

von Peter D. (peda)


Lesenswert?

Travel Rec. wrote:
> Das Problem beim Dimmen ist, daß die Dimmfrequenz (also das PWM) zum
> einen synchron zur Umlauffrequenz der Digits sein muß und zum anderen
> muß diese noch um ein Vielfaches schneller sein. Sonst kommt es zu
> unschönem Flimmern oder noch häßlicheren Laufeffekten.


Jau, da nimm doch einfach den Timeroverflowinterrupt zum Multiplexen und 
den Compareinterrupt zum Dunkeltasten.

In der Codesammlung (Jumbo-LED) wird das genau so gemacht.


Peter

von Hopser (Gast)


Lesenswert?

Einfacher Widerstand zw. B und E, und es geht auch in Emitterschaltung.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

@Peter: Ich habe meine LED-Anzeigen immer noch problemlos hinbekommen, 
danke für die Tips, aber ich wollte nur Hinweise geben, welche Probleme 
auftauchen können. Die Kollektorschaltung habe ich allerdings noch nicht 
ausprobiert.

@Hopser: Bedingt. Die maximal erreichbare Helligkeit des gesamten 
Displays nimmt dadurch merklich ab.

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.