Forum: Mikrocontroller und Digitale Elektronik Atmega8 7-Segment


von kroller (Gast)


Lesenswert?

Hi Leuts habe vor drei 7-Segment Anzeigen mit einem Atmega8 in Assembler
anzusteuern. Benutze ziemlich große 7-Segment LED's und multiplexe das
ganze vom Mikrocontroller aus. Meine 7-Segment Anzeigen haben eine
gemeinsame Anode.Funzt auch alles Softwaretechnisch :
Problem: Welche Transistoren soll ich zum Multiplexen der gemeinsamen
Anoden verwenden.Bis jetzt habe ich die einfach so an die Pins des
Mikrocontroller gehängt.Das Problem dabei ist, dass die 7-Segment
Anzeigen dann einfach zu dunkel sind.Weiß jmd.was ich da benutzen kann?

Oder liegt es vielleicht daran, dass ich zu kurz und in falschen
Zeitabständen die 7-Segmente ansteuere?
Bis jetzt habe ich jede Mikrosekunde eine fuer eine mikrosekunde
leuchten lassen.

Wäre voll Super wenn mir jmd. eine Tip geben könnte!!!!!

von ...HanneS... (Gast)


Lesenswert?

Ich habe BC327 genommen (pnp 0,5A),
allerdings am AT90S1200 mit 3 7-Segment-LED-Displays.

von kroller (Gast)


Lesenswert?

Danke Hannes!
Was meinst Du Hannes sollte ich besser den IC von Maxim benutzen habe
die Nummer jetzt nicht im Kopf ist aber ziemlioch teuer das Ding!
Ist es schwer mit I2C anzusteuern habe noch keine Erfahrung damit!!!
Danke im vorraus fuer eine Antwort!!!

von crazy horse (Gast)


Lesenswert?

der heisst MAX7219 und lohnt sich für 3 Digits wirklich nicht.
Wie gross sind "grosse Anzeigen"? Bei >20mm sind meist mehrere LEDs
pro Segment verbaut, mit 5V kommt man dann nicht mehr hin. Und wird die
Anzeige mit höherer Spannung als der AVR betrieben, wird die Ansteuerung
der Anoden etwas aufwändiger.
1µs ist auch kein guter Wert, unnötig klein, Prozessorlast steigt,
Schaltverluste auch. Nimm was in der Grössenordnung 1-5ms.

von Jens123 (Gast)


Lesenswert?

hi kleine idee
74 46 mein ich BCD zu 7Segment decoder der hat schon Treiber mit drin
dann noch 3 Transistoren um jeweils das gerade anzusteuernde Segment
auszuwaehlen

da sollte dann auch ein kleiner BC irgendwas dicke reichen

von Horst (Gast)


Lesenswert?

Hallo Jens,

habe gerade mal im Datenblatt geschaut der 74LS46 packt gerade mal 20mA
am Ausgang ist gerade mal genug für eine LED im Dauerbetrieb.
Ich würde lieber den ULN2003 bzw. ULN2803 nehmen und für die Anode
jeweils einen Treibertransistor.
Zur not tun es auch 7x BC547 in den Kathoden. Aber das muß jeder selbst
wissen.

Horst

von Jens123 (Gast)


Lesenswert?

Yap
ich wuerde fuer mich 9 Transistoren nehmen, die ich mit dem 74 46
Ansteuer

aber gut zu wissen, das mich mein Kopf nach 4 Jahren noch daran
erinnert, wie der Decoder genau hiess =)

Gruss Jens

von ...HanneS... (Gast)


Lesenswert?

Hi...

- Es war vom Multiplexen der gemeinsamen Anoden die Rede. Das
  erfordert high-side-driver.
- Das Display lief schon direkt, kommt also mit den 5V des AVRs und
  den Kathodenströmen zurecht, wobei die Anodenströme den AVR
  überlasten und auf Dauer schädigen.

Also werden für die High-side Transistoren benötigt, einfache billige
NPN-Transistoren, die mit (7*20) 140mA belastet werden. Die Auswahl ist
groß, ich nahm BC327 weil die billig, robust und zuverlässig sind und
etwas Leistungsreserve haben.

Wiso man für diesen Zweck (3-Kanal-high-side-driver) einen
7-Segment-Decoder oder einen ULN2003/8003 (low-side-driver) einsetzen
sollte, kann ich irgendwie nicht nachvollziehen.

Guten Rutsch...
...HanneS...

von Horst (Gast)


Lesenswert?

Naja ganz einfach der Mega8 schafft laut Datenblatt auch nur 20mA und
der Kathodenstrom der 3 Anzeigen, die gemuxt werden ist garantiert
höher als 20mA. Es kann sein, das dies einige Stunden sogar Wochen
gutgeht aber verlassen würde ich mich nicht darauf. Wenn die Port Pins
knapp sind halt nen LS46 / LS47 + Transistoren oder wenn man 3
Leitungen zusätzlich frei hat kann man die Transistoren direkt auf die
Ports schalten oder halt nen ULN2003 der packt soviel ich weiß 100mA
pro Kanal (bin mir aber nicht sicher hab auch kein Datenblatt)

Grüße
Horst

von ...HanneS... (Gast)


Lesenswert?

@Horst:

Auf der Low-Seite (einzelne Kathoden) fließt über je einen
Kathodenwiderstand jeweils der Strom für ein Segment, also 20mA gegen
GND. Dafür ist der Mega8 gebaut und das tut er.

Auf der High-Seite sind die 3 zusammengefassten Anoden, in die jeweils
der Strom von 0 bis 7 Segmenten, also 0...140mA fließen müssen. Dies
ist zuviel für einen AVR-Port und wird ihn auf Dauer schädigen. Hier
müssen also Treiber rein.
Da es nur 3 Stellen sind, tun es einfache PNP-Transistoren.
Sie sind weder durch ULN2x03 noch durch BCD-7-Segment-Decoder zu
ersetzen. Wenn die Portpins knapp wären, dann wäre das sicher
angesprochen worden, also kann ich davon ausgehen, dass die Portpins
ausreichen.

Würde das (große) LED-Display eine höhere Spannung als der AVR brauchen
und noch einen höheren Strom als der AVR kann, dann würde ich auf der
Low-Seite einen ULN2003 (2803, falls Dezimalpunkt benutzt wird)
vorschlagen und für die High-Seite drei High-side-switch (Sense-HexFETs
BTSxxx von Infineon, billig bei Pollin zu haben). Damit wären die
Probleme erschlagen, denn der ULN2x03 kann 0,5A je Kanal, die BTSxxx
mehrere A und Spannungen bis weit über 20V. Wennman die
Multiplexfrequenz nicht unnötig hoch wählt, sind die BTSxxx auch
schnell genug.

Einen 7-Segment-Decoder würde ich nur einsetzen wenn es nicht anders
geht. Denn er verkompliziert die Platine unnötig. Es ist schon traurig
genug, dass oftmals die leere Platine teurer wird als die Teile, die
dann draufgelötet werden...

Guten Rutsch...
...HanneS...

von kroller (Gast)


Lesenswert?

Hallo Leuts Hannes hat geschrieben!

Ich habe BC327 genommen (pnp 0,5A),
allerdings am AT90S1200 mit 3 7-Segment-LED-Displays.

Heißt (pnp 0,5A)  Ic Max 0,5 Ampere?

Hilfe und Danke für die vielen Antworten!

von Horst (Gast)


Lesenswert?

@ Hannes

mit den Platinen muß ich Dir leider recht geben... War eben grad im
Elektronkik Laden 5€ für ein Stückchen Epoxydharz. Naja egal.

Habe vor einigen Jahren auch mal was mit einer gemuxten Anzeige gemacht
(8-Stellig) und festgestellt, wenn ich die Segmente mit ca. 15mA brennen
lasse kaum was sehe.

Die Segmente in unserem Beispiel bekommen den Strom ja auch nicht
Permanent, sondern 3x pro Zeiteinheit und wenn ich 20mA/3 nehme, so
würde jedes Segment bloß noch 7 mA bekommen. Also jagt man den Strom,
der durch die einzelnen Segmente fließt nach oben, bis der Eindruck
entsteht sie sind wieder gleich hell. Das wären in underem Fall
45-60mA. Im Datenblatt einiger 7-Segmentanzeigen ist sogar der Maximale
Pulsstrom pro Segment angegeben (bis 100mA).

Habe das schon bis 8 Stellen gemacht und hatte einen Strom von ca. 90mA
pro Kathode und über 500mA auf der + Leitung, die die LED's versorgte.

Viele Grüße
Horst

von ...HanneS... (Gast)


Lesenswert?

Ein Datenblatt meint ICmax 0,5A, ein anderes Transistordatenbuch
schreibt ICmax 1A.

Du brauchst nicht über 200mA je Stelle, also bist du weit weg vom
Limit.

BC327 (PNP) und BC337 (NPN) sind meine Standard-Typen für kleinere
Sachen. Mit ihnen hatte ich (seit vielen Jahren) noch keine Probleme.

...HanneS...

von Zotteljedi (Gast)


Lesenswert?

Ich hatte ein ähnliches Problem, und BC 547 (npn) verwendet (diese
Spezies hatte in meiner Bastelkiste gerade die höchste Population).
Kollektor an VCC, Basis über 1,2 kOhm an den AVR-Ausgang, Emitter an
gemeinsame Anode, die einzelnen Segmente über 470 Ohm an weitere
AVR-Ausgänge.

Ist bei der pnp-Variante irgendwas besser? Die verringerte Spannung an
den 7-Segment-Anzeigen ist ja nicht problematisch, die brauchen ja nur
ca. 2 Volt um anzuspringen.

von ...HanneS... (Gast)


Lesenswert?

@Horst:

- 4,8V (4 NiCd-Zellen),
- AT90S1200,
- 3-stelliges LED-Display mit gemeinsamer Anode je Stelle in grün
  (2V Spannungsabfall),
- 3 BC327 mit Basiswiderstand 1k je Stelle (Anode)
- 7 mal 220 Ohm Segmentwiderstand vom AVR-Pin zur Kathode
- Multiplex mit 1/4 Zeit je Stelle, da im 4/4 noch eine
  Matrixtastatur 3x4 abgefragt wird

Das Display bekommt also nur knapp 15mA bei 25% ED. Und das Display ist
recht gut zu erkennen, obwohl ich noch lange nicht am Limit des AVR bin.

Falls Deine Displays viel mehr Strom brauchen, dann hast du vielleicht
einen Typ mit schlechtem Wirkungsgrad gekauft.

Was Platinen betrifft, ich nehme nur Epoxyd, aber für meine kleinen
Projekte reichen die Abfälle von Pollin, das Kilo zu 3,50. Ich fräse
dann mit einer ganz einfachen rechnergesteuerten Fräse Isolierlinien,
die ich mittels Eagle-Demo erstelle. Da ich einen 1mm-Speerbohrer zum
Fräsen einsetze, muss ich mich an das Zehntelzollraster halten, feiner
wird dann Murks. Und da achte ich nunmal panisch darauf, dass die
Platine nicht komplizierter wird als unbedingt erforderlich. Nur so
bleibt die Platine billiger als das was drauf kommt.
Ich mach das aber nicht gewerblich sondern nur als Hobby. Und fast alle
Platinen sind "Testplatinen" (Prototypen) und damit Einzelstücke.

Guten Rutsch...
...HanneS...

von ...HanneS... (Gast)


Lesenswert?

@Zotteljedi:

Kollektorschaltung geht natürlich auch, hat aber (wegen Ube) einen
weiteren Spannungsabfall von etwa 0,5...0,8V am Transistor, der die am
Segmentwiderstand abfallende Spannung reduziert. Damit kann man den
Segmentstrom nicht mehr so genau mit dem Widerstand einstellen.
Schwankungen der Betriebsspannung wirken sich stärker auf den
Segmentstrom aus. Aber es geht, keine Frage (erspart sogar die
Basiswiderstände)...

Guten Rutsch...
...HanneS...

von AxelR. (Gast)


Lesenswert?

Hi Leute, tach zusammen,
ich hab' da noch 'ne abgefahrene Idee.
Besorge Dir bei ebay oder so ein CB-Funkgerät der Marke DNT SCANNER40.
Der Vorgänger von der "Carat", glaube ich.
Dort ist die Kanalanzeige mit einem I2C-Schaltkreis mit dem
Hauptprozessor verbunden. Habe ich damals eine Platine extra besorgt,
um ein abgesetztes Display im Handmikrofon zu bauen. Habe ich aber
nicht mehr, ist ja auch 10Jahre lange her... (Kinder, wie die Zeit
vergeht)
Gruß
Axel

von Horst (Gast)


Lesenswert?

@HanneS

Ich möchte ja garnicht bestreiten, das man nix sieht, wenn man es so
macht. Durch die 220Ohm R's kann der Strom ja auch nicht höher werden
als 12mA. Also passiert dem AVR auch nix. Nur wenn die
Lichtverhältnisse wirklich schlecht sind dann würd ich die LED's bis
kurz vor die Grenze treiben. Denn dafür sind diese wiederum gebaut. Man
muß halt manchmal abwägen und einen gesunden Mittelweg für sein Projekt
finden.

Bezüglich Platinen muß ich sagen: Einzelstücke mache ich meistens mit
Teflondraht auf Epoxydharz bzw. wenn die Schaltung (Röhrenschaltungen)
es zulässt die Freiverdrahtung und Lötstützpunkte.
Vom Ätzen bin ich weggekommen der Ärger mit der Freundin war mir doch
zu groß (Zerfressene Klamotten, Handtücher im Bad). Wenn eine Schaltung
zu 100% Funzt und ich was ordentliches will, dann bezahl ich halt die
50€ und geh zu PCP-Pool.


Viele Grüße,
Horst

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.