www.mikrocontroller.net

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


Autor: Bis Uhr (bis0uhr)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Adam Adam (adam)
Datum:

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

Autor: Hauke Radtki (lafkaschar) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gesammtbelastung der VCC/GND Pins soweit cih weis 200 mA

Autor: Emperor_L0ser (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bis Uhr (bis0uhr)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bis Uhr (bis0uhr)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bis Uhr (bis0uhr)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bis Uhr (bis0uhr)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: StefanK. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Keks (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.


Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

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

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: StefanK. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jadeclaw Dinosaur,

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

Gru? Stefan

Autor: PeterL (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und wenns richtig hell sein soll, nimm sowas in der Art MAX7221

Peter

Autor: Bis Uhr (bis0uhr)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bis Uhr (bis0uhr)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hopser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfacher Widerstand zw. B und E, und es geht auch in Emitterschaltung.

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.