PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATMega8 wird heiss (ohne erkennbaren Grund)



Jaecko
07.03.2007, 11:47
Moin.

Hab hier nen ATMega8 der als "Uhrwerk" einer Binäruhr dient. Nur wird der nach kurzer Betriebszeit schon relativ heiss (1 Min: > 45°C).
Zuerst war ein zu hoher Stromfluss durch die LEDs in Verdacht. Darum wurde das Programm etwas geändert, dass die LEDs einzeln gepulst werden. Dabei war festzustellen, dass der AVR schon allein im ISP-Programmer relativ warm wurde.
Weiterer Test: Der AVR bekam nur eine Stromversorgung (5V/Masse) und wurde dort wieder warm.
Das aufgespielte Programm funktioniert jedoch problemlos.

Stromverbrauch im "Normalbetrieb" (Nur jeweils 1 LED an) mit Versorgung von 12V über 7805-Regler: 180 mA.

Kann es sein, dass der ATMega8 durchs Rechnen allein so heiss wird?
Oder hat der nen Schuss und geht bald hops?


MfG
S.C

bL1nK
07.03.2007, 11:59
naja hört sich schon krass an, da is schon irgendwie was im busch.

ich würd die pins eh nicht extern 'belasten' nimm sie halt als 'steuerausgänge' mit denen du über nen Transistor die LEDs an- bzw. ausschaltest.

Michael
07.03.2007, 12:02
Hallo Jaecko,
so einen Mega8 hatte ich auch mal.
Wenn alle Ports auf Eingang standen, blieb er kalt.
Ein Portpin (von PortD) hatte sich verabschiedet.

Gruß, Michael

linux_80
07.03.2007, 12:05
Hallo,
bei einem AVR kann es eigentlich nur an der Verkabelung liegen, wenn der heiss wird. (sofern kein interner Fehler vorliegt).

Welche Widerstände sind vor den LEDs, und welche LEDs wurden verwendet ?

Per Software ist es eigentlich nicht direkt möglich die Temperatur zu beeinflussen, abgesehen davon Ports zu schalten und evtl. einen Kurzschluss o.ä. zu verursachen.
Der AVR läuft immer mit 100% CPU-Leistung. Einen Stromsparmodus müsste man selber per Software einleiten.

Jaecko
07.03.2007, 12:07
Angesteuert werden die ja zum Teil über nen Transistor.

Ausgang für Reihen: AVR-Pin => Vorwiderstand 270 => LED => BC547 => Masse; der BC547 wird dann von einem Pin geschaltet (für die einzelnen Spalten).

Edit: Als LEDs werden die SLH 56 (Reichelt) verwendet

Bei nem anderen "Projekt" klappts so auch, nur dass dort der AVR eben die selbe Temperatur behält wie die Leiterplatte, also "kalt".

linux_80
07.03.2007, 12:22
Wie hast Du dir den Vorwiderstand ausgerechnet, ich bin da zwar nicht der Profi in den Elektrischen sachen, aber mir scheint dieser zu klein für den AVR zu sein.
Der AVR verkraftet pro Pin zwar 20mA, aber es muss die Summe aller Pins beachtet werden, dann kann es schon sein, das er warm wird.

Wenn ich richtig gerechnet habe, sind es knapp 16mA pro Pin, bei 270Ohm und 5V Ausgangsspannung. :-k

SIGINT
07.03.2007, 13:19
@Jaecko:
Kannst du mal den gesamten Schaltplan als Bild posten... es ist definitiv nicht in Ordnung, daß der AVR so warm wird. Selbst wenn du an jeden Ausgang eine LED packst dürfte der eigentlich noch nicht so warm werden.

Gruß,
SIGINT

bL1nK
07.03.2007, 13:21
@ linux:

bei Ic = 20mA -> Hfe = 200 -> Ib = 100nA, also da bist weit weg ;)

Jon
07.03.2007, 13:25
Ich hatte mal einen ATMega, der heiß geworden ist. Da war der Widerstand zw. VCC und GND zu klein (100Ohm). Der sollte normalerweise bei nen paar MegaOhm liegen.
Kannst du ja mal nachmessen.

Achtung, soweit ich weiß, verträgt der ATMega maximal 20mA pro Port. Pro Pin ist es dann deutlich weniger. Ich hoffe, das stimmt so.

jon

Jaecko
07.03.2007, 13:33
Den Vorwiderstand für die LEDs hab ich einfach mit R = U/I = 5V / 0,02A = 250 errechnet; Nächst kleinerer vorhandener war dann der 270er. Und mehr als 1 LED gleichzeitig brennt ja nie, also sollte da garnicht zu viel Strom gezogen werden


EDIT:
Schaltplan hier im Anhang.
Hoffe dass ich alles so richtig nachgezeichnet und nichts vergessen hab.
Die Kontakte "Reihe" und "Spalte" gehen zur LED-Matrix.

Edit: Anhang aus Platzgründen entfernt

Jon
07.03.2007, 14:17
Ich wäre mir nicht so ganz sicher, ob R3 bis R6 richtig dimensioniert sind. Wäre eine mögliche Fehlerguelle.
Ob der Widerstand mit 4,7kOhm richtig ist kann ich aber nicht sagen, da ich das immer experimentell ermittle :)

jon

linux_80
07.03.2007, 14:23
Vorher hab ich gedacht, der 270er ist an der Basis, dann hätte die Rechnung oben doch gepasst.
So schauts dann wieder besser aus (1mA bei den Pins die den Transistor ansteuern ).
Interessant wäre doch jetzt noch was zwischen Reihe und Spalte ist.

SIGINT
07.03.2007, 14:32
@Jon: Bei 4,7k fließen etwas mehr als 900µA über die Basis... das sollte schon passen. Der AVR merkt da nix von... der kann meines Wissens nach 20mA pro Pin... und nicht mehr als 200mA gesamt (oder waren es mehr?).

@Jaecko: Die LEDs fehlen in deinem Schaltbild... und hast du den Festspannungsregler (IC2 soll doch einer sein?) wirklich ohne Kondensatoren verbaut? Wenn ja, dann könnte dieser schwingen und dadurch die Schaltung stören... normalerweise wird der dann aber selbst relativ warm. Ansonsten sehe ich jetzt keinen Fehler der die Wärmeentwicklung erklärt.

Gruß,
SIGINT

P.S.: Die 270Ohm Widerstände packst du besser in den Reihe_n Zweig... ist mir gerade so aufgefallen

Jon
07.03.2007, 14:36
@Jon: Bei 4,7k fließen etwas mehr als 900µA über die Basis...
Wie hast du das errechnet??


Der AVR merkt da nix von... der kann meines Wissens nach 20mA pro Pin...
Ich dachte immer, das sich das auf jeden Port bezieht und nicht auf jeden Pin. Wo steht das denn im Datenblatt?


P.S.: Die 270Ohm Widerstände packst du besser in den Reihe_n Zweig... ist mir gerade so aufgefallen
Warum??

jon

SIGINT
07.03.2007, 15:18
So, ich hab mal im Datenblatt gesucht:
DC Current per I/O Pin ............................................... 40.0 mA
DC Current VCC and GND Pins................................ 300.0 mA
Seite 242

Den Basisstrom hab ich so errechnet:
Ib= Uout-Ub/R
Ib= 5V-0,7V/4,7kOhm =ca. 900µA

Die Widerstände packst du besser in die Reihen Zweige, da du eventuell mehrere LED einschalten möchtest.
Wenn du den Widerstand in den Spalten-Zweig legst hängt die Helligkeit der LEDs von der Anzahl der eingeschalteteten LEDs ab... das ist sehr schlecht.
Das liegt daran, daß sich die Ströme der LEDs im Spaltenzweig addieren... und somit der Spannungsfall über den Widerstand von der anzahl der leuchtenden LEDs abhängt.

Gruß,
SIGINT

Jaecko
07.03.2007, 15:24
Also zwischen je einer "Reihe n" und einer "Spalte m" liegt je eine LED; Anoden jeweils als "Reihe", Kathoden als "Spalte". (aus Platzgründen/Übersichtlichkeit weggelassen)
Werden also PC2 sowie PB3 auf High geschaltet, leuchtet die LED in Reihe 2, Spalte 3.

Der IC2 ist ein 7805-Festspannungsregler (5V, 1A, Positiv).

Edit: wieder zu langsam geschrieben und den neuesten Beitrag nicht gesehen *g*. ALso wie gesagt, wenn sowieso nur immer 1 LED leuchten soll, bleibts ja egal wo die R sind.