Forum: Mikrocontroller und Digitale Elektronik ATmega8 überhitzt - simple Schaltung


von Jan H. (jan_he)


Angehängte Dateien:

Lesenswert?

Hallo liebe Experten,

ich habe mir von einigen Tagen meinen ersten Mikrocontroller, den 
ATmega8, gekauft.
Nach stundenlangem Einlesen in das komplexe Thema Mikrocontroller habe 
ich meine ersten Schritte gewagt.
Um variable zu bleiben, habe ich den ATmega8 auf einer Steckplatine 
platziert und mit Hilfe von Steckverbindungen den 10pin-Stecker des 
USB-ISP Programmers mit den Pins des Mikrocontrollers verbunden, wie man 
in den ersten beiden Bildern im Anhang erkennen kann.
Orientiert habe ich mich dabei an einer Vorlage der Hersteller des 
ISP-Programmers.
Eine externe Stromversorgung habe ich erstmal weggelassen und bei dem 
ISP-Programmer eine Spannung von 5V eingestellt (man kann zwischen 3V 
und 5V wechseln).
An GND habe ich daraufhin eine rote LED (2V; 20mA) und einen 
Vorwiderstand angeschlossen (220Ohm). Diesen habe ich wie folgt 
berechnet:
R=U/I <=> R=(U-Uled)/I <=> R=(5V-2V)/0.2A = 150Ohm.
Der nächst größte mir zur Verfügung stehende Widerstand hat 220 Ohm.
Mir ist klar, dass man eigentlich einen Transistor benutzt, jedoch habe 
ich momentan keinen zur Verfügung. Wenn es daran liegen sollte, könnte 
ich eine Empfehlung hinsichtlich der Wahl eines Transistors gebrauchen.

Dann habe ich mich ans Programmieren der Software gemacht. Dafür 
ausgewählt habe ich das Programm Bascom AVR, da mir die ein oder anderen 
Befehle bereits bekannt waren. Der Code ist an dritter Stelle im Anhang 
zu finden. Er soll nur eine LED zum Leuchten bringen.

Bei den ersten Versuchen das Programm an den Mikrocontroller zu senden, 
hat dies aufgrund von falschen Angaben in den Programmer Einstellungen 
zu nichts geführt.
Als ich diese gerichtet habe, hat sich der Mikrocontroller schon nach 
einigen Sekunden enorm erhitzt. Sofort habe ich die Verbindung des 
ISP-Programmers zu der USB-Büchse gekappt.
Seit dem erhitzt sich der Mikrocontroller jedes mal, wenn ich die 
Verbindung wieder herstelle, selbst wenn ich das Programm nicht 
versende.

Ich werde mir in den nächsten Tagen einen neuen ATmega8 besorgen, da ich 
damit rechne, den aktuellen zerstört zu haben. Um diesen Fehler nicht zu 
wiederholen, bitte ich um euren Rat bezüglich dieses Problems.

Ich bedanke mich schonmal freundlich fürs Befassen mit diesem Eintrag,
Jan :)

: Verschoben durch Moderator
von jz23 (Gast)


Lesenswert?

Jan H. schrieb:
> Mir ist klar, dass man eigentlich einen Transistor benutzt, jedoch habe
> ich momentan keinen zur Verfügung

Für eine einfache LED braucht man eigentlich keinen Transistor. Bei 20mA 
(In deiner Gleichung steht 200? Aber mit 150 Ohm werden wohl nur 20 
fließen) braucht man da noch überhaupt nicht drüber nachzudenken.


Zu der Schaltung: Der AVR hat nicht mehrere GNDs und VCCs, damit man 
sich eins "rauspicken" kann, die gehören allesamt extern verbunden und 
auch alle angeschlossen. Also Pin8 an GND und Pin20 an VCC.
Zudem fehlen die Abblockkondensatoren: jeweils zwischen AVCC-GND und 
VCC-GND ein 100nF KerKo so nah wie möglich an die Pins (10nF-330nF tuns 
auch, wenn 100nF nicht vorhanden sind - der Wert ist nicht elementar, es 
geht darum, dem AVR Stromspitzen zu liefern). Ein 100µF-Elko zwischen 
VCC und GND (Auch hier nur eine Größenordnung) in der Nähe schadet auch 
nicht.
Außerdem braucht dein Reset noch einen Pullup (10k +-) nach VCC und 
idealerweise noch einen C (ca. 50nF) nach GND, um beim Einschalten der 
Stromversorgung einen kontrollierten Reset durchzuführen.

Steht auch alles hier im Tutorial ;-)

von MaWin (Gast)


Lesenswert?

Warum verwendest du gerade PortB.4 für deine LED, der ist doch schon mit 
dem Programmieradapter belegt.

20mA und 220 Ohm geht in Ordnung, müssen aber nicht sein, 2mA und 2k2 
tun es auch und belasten den Programmieradapter nicht so.

Der Chip hat mehrere GND Anschlüsse. Das heisst nicht, dass man sich 
einen Aussuchen darf, sondern dass man beide an Masse legen muss. Auch 
AVCC und VCC sollten verbunden werden. Vor allem aber sollte ein 100nF 
Vielschicht Keramikkondensator zwischen GND und VCC, GERADE wenn man auf 
dem elektrisch eher ungünstigen Experimentierboards aufbaut.

von Jan H. (jan_he)


Lesenswert?

Dankeschön für sie beiden schnellen Antworten.
Da hab ich wohl einige Fehler gemacht :D
Und der Mikrocontroller ist auch zerstört.
Wenigstens habe ich jetzt daraus gelernt.

Jan :)

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


Lesenswert?

Jan H. schrieb:
> bei dem ISP-Programmer
Welchem denn?
Du kannst die Schaltung nicht mit dem Programmer versorgen. Du 
müsstest da also einen anderen haben...

> eine Spannung von 5V eingestellt (man kann zwischen 3V und 5V wechseln).
Und hast du dann auch mal gemessen, was an den Versorgungsleitung 
heraus- und am Mikrocontroller ankommt?

von Alex W. (Gast)


Lesenswert?

Lothar M. schrieb:
> Jan H. schrieb:
>> bei dem ISP-Programmer
> Welchem denn?
> Du kannst die Schaltung nicht mit dem Programmer versorgen. Du
> müsstest da also einen anderen haben...
>
>> eine Spannung von 5V eingestellt (man kann zwischen 3V und 5V wechseln).
> Und hast du dann auch mal gemessen, was an den Versorgungsleitung
> heraus- und am Mikrocontroller ankommt?

Es werden wohl max 5V sein, denn die Programmer (ausser der STK200) 
werden über USB versorgt.

Weshalb der M8 so heiß wird ist aber merkwürdig!
Eventuell ligt es an den restlichen nicht angeschlossenen 
Versorgungsleitungen (gnd, vcc). Was ich aber auch nicht glaube, denn 
dann müsste intern eine relativ hohen Strom fließen!

Was sein kann (aber bei dem Quellcode und Schaltbild zu urteilen nicht 
ist):
Vref intern auf 5V und den Anschluss auf Masse. Dann heizt der 
Innenwiderstand...

von Peter D. (peda)


Lesenswert?

Warum es den AVR gekillt hat, läßt sich nicht nachvollziehen.
Deine Fehler können nur ein instabiles Arbeiten bewirken, aber auf 
keinen Fall eine Zerstörung.
Zerstörung kenne ich nur von Überspannung oder Erdströmen (z.B. 
übermalter Schutzleiter an der PC-Steckdose).
Erzähl mal genauer, wie Du den MC versorgst und womit Du ihn 
programmierst.

Bei einem ATmega8A muß man VCC mit AVCC verbinden, beim ATmega8 sind die 
intern schon verbunden. Die beiden GND sind intern verbunden.
Es gibt daher viele Bastler, die nur einen VCC/GND versorgen und der 
ATmega8 funktioniert trotzdem einwandfrei. Vielleicht wackeln dann die 
ADC-Messungen etwas stärker. Sauber ist natürlich, alle 4 anzuschließen 
und 2 100nF Pillen dran.

von Jochen-paul S. (picfan)


Lesenswert?

hallo,
hast Du den Atmega8 aus China über Ebay gekauft? Dann kann es sein, dass
der M8 schon defekt war, als er bei Dir angekommen ist.
Unser Elektronikmüll (Europa, USA) wandert nach China und Afrika,
in China werden die vermeintlich brauchbaren Teile z.T. auf brachiale 
Weise heraus-lötet - und über Ebay wieder verkauft.....
freundliche Grüsse Picfan

von Jan H. (jan_he)


Lesenswert?

Lothar M. schrieb:
> Jan H. schrieb:
>> bei dem ISP-Programmer
> Welchem denn?
> Du kannst die Schaltung nicht mit dem Programmer versorgen. Du
> müsstest da also einen anderen haben...
>
>> eine Spannung von 5V eingestellt (man kann zwischen 3V und 5V wechseln).
> Und hast du dann auch mal gemessen, was an den Versorgungsleitung
> heraus- und am Mikrocontroller ankommt?

Ich habe den "USB ISP-Programmer für ATMEL AVR, STK500, ATmega, ATtiny, 
AT90" von Amazon für 19,99€ bestellt. Diesen kann man, wie oben schon 
beschrieben, auf 3V oder optional auf 5V stellen. Diese Spannung kommt 
auch an, wie ich mit einem Multimeter gemessen habe.

von ACDC (Gast)


Lesenswert?

MISO MOSI SCK als Eingang definiert?

von Äxl (geloescht) (Gast)


Lesenswert?

Sieh mal nochmal hin.
GND<->VCC vertauscht...

von Jochen-paul S. (picfan)


Lesenswert?


von Joachim B. (jar)


Lesenswert?

Lothar M. schrieb:
> Jan H. schrieb:
>> bei dem ISP-Programmer
> Welchem denn?
> Du kannst die Schaltung nicht mit dem Programmer versorgen. Du
> müsstest da also einen anderen haben...

ich versorge meine immer aus dem Programmer,
1. USBprog aus dem Forum
2. div. andere USBisp aus China

wenn die VCC fehlt legt man halt die Leitung nach, optimal mit einer 
BAT42 um Rückstrom zu vermeiden.

von Jan H. (jan_he)


Lesenswert?

Peter D. schrieb:
> Erzähl mal genauer, wie Du den MC versorgst und womit Du ihn
> programmierst.

Erstmal vielen Dank für deine Einschätzung.
Die einzige Stromversorgung ist aktuell die USB-Büchse, an die ich den 
ISP-Programmer angeschlossen habe.
Der 10pin-Stecker hat einen GND und einen VCC anschluss.
Wie ich jetzt erfahren habe, muss ich VCC am Stecker mit VCC UND AVCC am 
Mikrocontroller verbinden, dazu GND am Stecker mit den beiden GND am 
Mikrocontroller.

Die Software habe ich mit dem Programm Bascom-AVR geschrieben.
Der Code soll Pin B4 als Ausgang markieren und diesen in einer 
Endlosschleife auf High setzen.
Wie ich ebenfalls erfahren habe, ist dies sinnlos, weil dieser Pin ja 
zum Programmieren verwendet wird.
Soll ich die LED dann an SCK also Pin B5 anschließen?
Drücke ich auf den "senden"-Button im Bascom-AVR Programm, sollte das 
Programm auf den ATmega8 übertragen werden.

von Jan H. (jan_he)


Lesenswert?

Jochen-paul S. schrieb:
> hast Du den Atmega8 aus China über Ebay gekauft?

Nein, den habe ich von dem Elektronikgeschäft Conrad. Eigentlich 
vertrauenswürdig, trotzdem kann man einen defekten Mikrocontroller nicht 
ausschließen.
Trotzdem danke für den Beitrag :)

von Jan H. (jan_he)


Lesenswert?

Äxl (geloescht) schrieb:
> Sieh mal nochmal hin.
> GND<->VCC vertauscht...

Ganz sicher nicht, alles so wie in den angehängten Bildern.
Trotzdem danke,
Jan :)

von Jan H. (jan_he)


Lesenswert?

ACDC schrieb:
> MISO MOSI SCK als Eingang definiert?

Tatsächlich nicht.
MISO und MOSI warscheinlich, weil darüber programmiert wird, oder? Aber 
wozu SCK als Eingang definieren?
Jan :)

von Jan H. (jan_he)


Lesenswert?

Ich werde heute einen Schaltplan mit den neuen Erkenntnissen anfertigen 
und werde diesen hier reinstellen.
Da sind dann hoffentlich alle Fehler raus.
Jan :)

von Peter D. (peda)


Lesenswert?

Jan H. schrieb:
> Wie ich ebenfalls erfahren habe, ist dies sinnlos, weil dieser Pin ja
> zum Programmieren verwendet wird.

Man kann durchaus Pins für ISP und Applikation sharen.
In der Praxis macht man das aber erst, wenn die Applikation auch das SPI 
braucht oder alle anderen Pins bereits belegt sind.

von Cyblord -. (cyblord)


Lesenswert?

Jochen-paul S. schrieb:
> Nachtrag:
> https://www.youtube.com/watch?v=j9nasajve1o
> Picfan

Immer noch fleißig beim Feldzug gegen China-Teile? Mach dich ruhig 
weiter lächerlich.

von jz23 (Gast)


Lesenswert?

Jan H. schrieb:
> ACDC schrieb:
>> MISO MOSI SCK als Eingang definiert?
>
> Tatsächlich nicht.

Musst du auch nicht, beim Programmieren wird das Programm ja überhaupt 
nicht ausgeführt.

von Jochen-paul S. (picfan)


Lesenswert?

Cyblord -. schrieb:
> Jochen-paul S. schrieb:
>> Nachtrag:
>> https://www.youtube.com/watch?v=j9nasajve1o
>> Picfan
>
> Immer noch fleißig beim Feldzug gegen China-Teile? Mach dich ruhig
> weiter lächerlich.

na, das hat sich ja mittlerweile ergeben, Conrad ist ja sicher ein 
seriöser Zulieferer.
Aber das mit den China-Teilen ist leider Realität.

Nun noch an Jan:
hat der Atmega das Programm-brennen überhaupt erfolgreich angenommen?
Der 10-Pol-Stecker des Programmers könnte auch verkehrt interpretiert 
werden, wenn man die einzelnen Drähte herausführt
Picfan

von Jan H. (jan_he)


Lesenswert?

Hier noch einmal meine Frage, ich befürchte, dass diese in der 
Diskussion über Chinateile untergegangen ist.

An welchen PIN kann ich die LED mit dem Vorwiderstand am besten 
anschließen?

Danke schonmal,
Jan :)

von Jochen-paul S. (picfan)


Lesenswert?

So wie Du die Led angeschlossen hast müsste es funktionieren
Picfan

von Michael B. (laberkopp)


Lesenswert?

Jan H. schrieb:
> Soll ich die LED dann an SCK also Pin B5 anschließen?

Wie kommt man auf die Schwachsinns-Idee ? Auch SCK wird zum 
Programmieren verwendet. Warum mit aller Gewalt gerade an diese Pins ?

Wie wäre es mit einem der dutzend unbenutzen Pins, wie wäre es mit 
PortB.0 ?

von Jochen-paul S. (picfan)


Lesenswert?

allerdings könnte der 220-Ohm Widerstand verhindern, dass der Mega 
programmiert werden kann, weil der MISO-Pin evtl zu stark an GND gezogen 
wird
Picfan

von Jochen-paul S. (picfan)


Lesenswert?

hast du mit einem Voltmeter die Polarität + - an Deinem Steckbrett 
überprüft?
ein verkehrt angeschlossener MC wird bei falscher Polarität sicher warm, 
soger der USB-Anschluss an deinem PC könnte Schaden nehmen.
Picfan

von Joachim B. (jar)


Lesenswert?

Michael B. schrieb:
> Jan H. schrieb:
>> Soll ich die LED dann an SCK also Pin B5 anschließen?
>
> Wie kommt man auf die Schwachsinns-Idee ? Auch SCK wird zum
> Programmieren verwendet. Warum mit aller Gewalt gerade an diese Pins ?

da das auf den Arduino nano auch kein Problem ist, why not?

mit einem großen RV und potenten Programmer ist das nie ein Problem 
gewesen, auch nicht bei meinem mighty mini 1284p und ISP Programmierung.

mit 150 Ohm und 20mA LED kann es bei schwachen Programmern eng werden, 
da gebe ich dir Recht.

von jz23 (Gast)


Lesenswert?

Die Pinbelegung vom ISP Stecker ist falsch (zumindest anders als im 
Tutorial). Wenn du den Stecker in eine Buchse steckst, dann ist "dein" 
MOSI unten links, nicht oben links. Die Belegung gilt aber für die 
Buchse. Du müsstest also die Steckerbelegung von oben nach unten 
spiegeln.
Theoretisch hättest Du am AVR aber dann auch -5V messen müssen.

von Jochen-paul S. (picfan)


Lesenswert?

jz23 schrieb:
> Die Pinbelegung vom ISP Stecker ist falsch

genau diesen Verdacht habe ich auch
Picfan

von Roland F. (rhf)


Lesenswert?

Hallo Peter,

> Die beiden GND sind intern verbunden.

Wenn man es mit einem Ohm-Meter misst, scheint das tatsächlich so zu 
sein.
Allerdings habe ich mal mehrere Stunden damit verbracht, einem 
instabilen Verhalten eines ATMega8 in einer meiner Basteleien auf den 
Grund zu gehen. Der Fehler lag letztlich am nicht mit GND verbundenen 
Pin 22. Danach funktionierte alles einwandfrei.
Offensichtlich scheint die interne Verbindung keinem galvanischen 
Kurzschluss zu entsprechen und es ist ratsam alle Betriebspannungspins 
mit ihren entsprechenden Potentialen zu verbinden.

rhf

von Jan H. (jan_he)


Lesenswert?

Michael B. schrieb:
> PortB.0 ?

Werde ich so machen.
Danke für die Antwort,
Jan :)

von Jan H. (jan_he)


Lesenswert?

jz23 schrieb:
> Die Pinbelegung vom ISP Stecker ist falsch (zumindest anders als im
> Tutorial). Wenn du den Stecker in eine Buchse steckst, dann ist "dein"
> MOSI unten links, nicht oben links. Die Belegung gilt aber für die
> Buchse. Du müsstest also die Steckerbelegung von oben nach unten
> spiegeln.

Das verstehe nicht ganz. In der Anleitung des ISP-Programmers ist MOSI 
oben links und MISO unten links. Genau so hab ich gemacht.
Ist jetzt also die Anleitung inkorrekt, oder tu ich mich gerade nur 
schwer?

> Theoretisch hättest Du am AVR aber dann auch -5V messen müssen.

Hmmm. Ich werde es nochmal nachmessen.
Jan :)

von Rolf M. (rmagnus)


Lesenswert?

jz23 schrieb:
> Außerdem braucht dein Reset noch einen Pullup (10k +-) nach VCC und
> idealerweise noch einen C (ca. 50nF) nach GND, um beim Einschalten der
> Stromversorgung einen kontrollierten Reset durchzuführen.

Braucht man bei den AVRs nicht. Der RESET sollte nur nicht ganz offen 
bleiben, damit er nicht als Antenne wirkt und sich Störungen einfängt.

jz23 schrieb:
> Jan H. schrieb:
>> ACDC schrieb:
>>> MISO MOSI SCK als Eingang definiert?
>>
>> Tatsächlich nicht.
>
> Musst du auch nicht, beim Programmieren wird das Programm ja überhaupt
> nicht ausgeführt.

Abgesehen davon ist bei laufendem Programm alles, das man nicht explizit 
zum Ausgang umwidmet, eh schon Eingang.

Joachim B. schrieb:
>> Wie kommt man auf die Schwachsinns-Idee ? Auch SCK wird zum
>> Programmieren verwendet. Warum mit aller Gewalt gerade an diese Pins ?
>
> da das auf den Arduino nano auch kein Problem ist, why not?

Weil man sich als Anfänger ja nicht unbedingt noch extra potenzielle 
Probleme schaffen muss, wenn es nicht nötig ist. Was spricht denn dafür, 
ausgerechnet einen der ISP-Pins zu verwenden, statt einen der vielen 
noch komplett unbenutzten?

> mit 150 Ohm und 20mA LED kann es bei schwachen Programmern eng werden,
> da gebe ich dir Recht.

Eben.

Jan H. schrieb:
>> Theoretisch hättest Du am AVR aber dann auch -5V messen müssen.
>
> Hmmm. Ich werde es nochmal nachmessen.

Das würde auch erklären, warum der µC so heiß geworden ist.

von Jan H. (jan_he)


Lesenswert?

Ich habe jetzt die Anschlüsse am 10pin-Stecker gespiegelt und es hat 
funktioniert! Die LED hat leicht geleuchtet, vll. ist der Widerstand ein 
bisschen zu groß.
Ich werde aber die oben genannten Komponenten besorgen und wie 
beschrieben anschließen.
Dankeschön an die ganzen Antworten und generell die Bemühungen.
Jan :)

von TM F. (p_richner)


Lesenswert?

Jan H. schrieb:
> Ich habe jetzt die Anschlüsse am 10pin-Stecker gespiegelt und es hat
> funktioniert!

Ich vermute, dass dies fast jedem Programmierer (mir jedenfalls) einmal 
passiert.
Aber jetzt hast  du ja eine funktionierende Variante für alle 
zukünftigen Projekte :)

An MISO, MOSI und SCK kannst du deine LED schon anhängen, für den 
Betrieb hat dies keinen Einfluss. Kritisch wird es eher, wenn du an 
diese Pins ein Bauteil/ Verbindung ziehst, das nicht versorgt werden 
darf.

Ich empfehle dir sonst mit dem Atmel Studio (kostenlos) zu 
programmieren. Da kannst du deinen Programmer auswählen, diesem mit 
deinem uC verbinden und die ID und die Betriebsspannung auslesen. So 
weisst du, dass die Anschlussverbindung korrekt ist.

MfG

: Bearbeitet durch User
von Jan H. (jan_he)


Lesenswert?

Hallo Experten,

ich möchte nur einmal kurz Bescheid geben, dass ich aktuell keine 
Probleme mehr mit der Schaltung habe. Alles funktioniert so, wie ich es 
in den Code schreibe.
Im Endeffekt war es nur der 10-pin Stecker, in den ich die Kabel falsch 
gesteckt habe.
Trotzdem habe ich viel aus den Antworten gelernt,
wofür ich mich bedanken möchte.

Jan :)

von Stefan F. (Gast)


Lesenswert?

> Braucht man bei den AVRs nicht. Der RESET sollte nur nicht ganz offen
> bleiben, damit er nicht als Antenne wirkt und sich Störungen einfängt.

Ja schon, aber wenn man noch einen ISP Stecker und Kabel dran hängen 
hat, fängt man sich leicht Radiowellen ein. Deswegen ist der Ratschlag 
mit dem Kondensator und Pull-Up durchaus Sinnvoll.

Im Fehlerfall macht der µC un gewollte Neustarts - hat also nichts mit 
dem Hauptproblem dieses Threads zu tun.

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.