Forum: Mikrocontroller und Digitale Elektronik Atmega8 PWM Leds


von platine (Gast)


Lesenswert?

Hallo,

eins vorweg: Achtung Anfänger :)
Ich möchte mit einem Atmega8 einige (21 LEDs) per PWM langsam heller/ 
dunkler werden lassen, aufblinken usw (Stichwort Sternenhimmel).

Meine Rechnerche hat ergeben, dass der Atmega8 insgesamt 3 PWM Kanäle 
hat, einer davon wohl mit einer geringeren Auflösung. Daher die Zahl der 
LEDs - 21, so sollen an jedem PWM Kanal je 7 LEDs hängen, die sich dann 
analog verhalten.

Ich weiß ebenfalls, dass ich die LEDs nicht direkt an den PortPin hängen 
kann, sondern Transistoren (?) brauche.

Jetzt kommen die Fragen:
Welchen Transistor für die LEDs muss ich nehmen? Wie muss die Schaltung 
dafür aussehen?

Vielen Dank!

von Hubert G. (hubertg)


Lesenswert?

www.mikrocontroller.net/articles/Relais_mit_Logik_ansteuern
Schaltstufe für kleine Lasten, anstelle des Relais deine Leds.
Wie viele Leds du in Serie schalten kannst hängt von deiner Spannung ab.

von platine (Gast)


Lesenswert?

Vielen Dank für die Antwort.

Also verwende ich den BC337 als Q2, statt des Relais meine x Leds. R2 
hängt dann an dem PWM-Pin vom Atmega?

Welchen Widerstand müsste ich bei weißen LEDs nehmen, wenn 7 in Reihe 
geschaltet werden und mit 5v betrieben werden?

Alex

von Eulerich (Gast)


Lesenswert?

>  wenn 7 in Reihe geschaltet werden und mit 5v betrieben werden?

Wird nicht funktionieren. Oder haben die LEDs ne Vorwärtsspannung < 714 
mV?

von platine (Gast)


Lesenswert?

Und bei 12v?

von Hubert G. (hubertg)


Lesenswert?

Es kommt, wie schon geschrieben, auf die Flußspannung der Leds an. Wenn 
du 2V je Led rechnest, dann gehen bei 5V maximal 2 davon.
Ich würde sie aber nicht an die 5V-Versorgung des Kontroller hängen. 
Eine geregelte Spannung ist da sicher nicht notwendig, wenn das Netzteil 
nicht gerade sehr mikrig ist.

von platine (Gast)


Lesenswert?

Ja, dann würde ich für die LEDs einfach die 12v vom Netzteil abzweigen. 
Ich bräuchte dann "nur" noch die Widerstandswerte für den LED 
Vorwiderstand und den Wert für R2 am BC337

Viele Grüße
Alex

von Hubert G. (hubertg)


Lesenswert?

R2 hat 470 Ohm bis 1k, für die Vorwiderstände der Led muss ich wissen 
welche du nimmst, blaue haben eine höhere Flußspannung als rote oder 
grüne.
Wie willst du die Leds aufteilen, bei 12V gehen max. 5 in Serie. Wie 
groß soll der Ledstrom maximal sein.

von MaWin (Gast)


Lesenswert?

Warum hängst du dich nicht einfach an
Beitrag "Machbarkeit - LED-Sternenhimmel mit AVR?"
dran?

Es ist ja nun nicht so, als ob du der erste bist,
der so was bauen will.

von platine (Gast)


Lesenswert?

Hallo Hubert,

ich will weiße LEDs benutzen - habe auf die Schnelle bei Reichelt 
geguckt, es scheint keine low current in weiß zu geben. In dem Fall 
würde ich dann blaue nehmen.

Wenn auch mit low current nicht mehr als 5 gehen, dann sollen´s 5 pro 
Strang, also insgesamt 15 sein.

von Karl H. (kbuchegg)


Lesenswert?

platine schrieb:

> Wenn auch mit low current nicht mehr als 5 gehen, dann sollen´s 5 pro
> Strang, also insgesamt 15 sein.

Du scheinst da ein Missverständnis zu haben.
Interessant ist in erster Linie nicht der Strom, der durch die LED geht.
Interessant ist in erster Linie die Flussspannung.
Eine rote LED braucht zb mindestens 1.7V (so ungefähr)
Wenn du also 5V hast, kannst du maximal 2 davon in Serie schalten, weil 
2*1.7 = 3.4 und das liegt noch unter den 5V. Bei 3 hättest du schon 
3*1.7 = 5.1 und bist damit über den zur Verfügung stehenden 5V.

Aus der Differenz von 3.4V (bei 2 roten LED) und den 5V dimensioniert 
man dann den Widerstand, so dass durch die LED ein bestimmter Strom 
fliesst. Der ist dann bei Low-Current LED natürlich geringer als bei 
normalen.

Aber grundsätzlich ändert Low-Current nichts daran, wieviele LED du mit 
einer bestimmten Spannung versorgen kannst. Diese Anzahl ist 
technologieabhängig und ist bei LED gleicher Farbe in etwa immer gleich, 
egal wieviel Strom sie brauchen um hell zu leuchten. Alle roten LED 
wollen ca. 1.7V, egal ob Low-Current oder nicht.

Grüne LED liegen auch bei ca. 1.7V. Blaue sind aber signifikant höher. 
Und auch weiße haben eine andere Flusspannung.


> dann sollen´s 5 pro
> Strang, also insgesamt 15 sein

Mann kann ja zb auch 2 5-Led Stränge parallel an einen PWM Kanal 
schalten und hatt dann 10 LED die von einer PWM gesteuert werden.
Das ist also nicht der limitierende Faktor. Wenn du 21 LED willst, dann 
geht das auch. Schlimmstenfalls muss man eben 3 Stück 2-LED-Stränge 
parallel schalten (jeder Strang mit seinem eigenen Widerstand) und den 
Schalttransistor entsprechend auslegen.

von platine (Gast)


Lesenswert?

Ok jetzt fange ich an zu verstehen :)

Bleiben wir bei roten LEDs:
Spannungsversorgung 12v, Flußspannung 1.7v.
6*1.7V = 10.2 V

Also können an einem Strang 6 rote LEDs in serie hängen. Aber wie 
berechne ich nun den Vorwiderstand?

von Düsendieb (Gast)


Lesenswert?

12V - 10,2V = 1,8V


R = U/I  = 1,8V / 20mA = 90 Ohm


R = U/I  = 1,8V / 2mA = 900 Ohm

usw...


Axel

von platine (Gast)


Lesenswert?

Danke!

Wie berechnet man R2 für den Transistor?

von Hubert G. (hubertg)


Lesenswert?

Für diesen Transistor nimmt man 2mA Basisstrom, das sind 5V / 2mA ergibt 
2500 Ohm.
Du kannst das natürlich auch genau rechnen.
Max. Kollektorstrom durch Stromverstärkung des Transistor, ergibt den 
notwendigen Basisstrom.
Steuerspannung minus Spannungsabfall an der Basis/Emitterdiode durch den 
Basisstrom ergibt den Basiswiderstand. Für Schaltzwecke nimmt man dann 
die Hälfte des Widerstandes.

von platine (Gast)


Lesenswert?

Ok!

Also wenn die LEDs in meinem Fall mit 12v versorgt werden, nehme ich 12 
V / 2mA = 6kOhm als R2 am Transistor?

von Michael M. (Gast)


Lesenswert?

platine schrieb:
> Wie berechnet man R2 für den Transistor?
Basiswiderstand

von Karl H. (kbuchegg)


Lesenswert?

platine schrieb:
> Ok!
>
> Also wenn die LEDs in meinem Fall mit 12v versorgt werden, nehme ich 12
> V / 2mA = 6kOhm als R2 am Transistor?

Nein.
Die Basis hat ja nichts mit den 12V zu tun.
Die Basis hängt am µC Pin und der liefert 5V.
Wenn du also bei 5V einen Stromfluss von 2mA haben willst, dann brauchst 
du

  R = U / I  = 5 / 0.002 = 2500 Ohm

Das ist jetzt zwar stark vereinfacht, aber als Modell geht es schon:

Du hast 2 Stromkreise!
Der eine ist der Stromkreis, der aus µC-Pin - Basiswiderstand - 
Transistor und Masse besteht
Und der andere ist der Stromkreis der aus 12V - Vorwiderstand - LED - 
Transistor und Masse besteht.
Der eine steuert den anderen (wie bei einem Relais)

von Düsendieb (Gast)


Lesenswert?

Nee,
aus den Controller kommen 5V. Mit dieser Spannung geht es zur Basis des 
Transistors.

Wie schon oben von Hubert geschrieben: 5V / 2mA ergibt 2500 Ohm.



Axel

von Karl H. (kbuchegg)


Lesenswert?

Übrigens stimmt die Rechnung nicht ganz, weil ja auch am Transistor 
etwas Spannung 'hängenbleibt'. Die 12V teilen sich also auf in
  Spannung die am Widerstand abfällt
  Spannung die an den LED abfällt
  Spannung die am Transistor abfällt

Die Spannung an den LED ist eine konstante
Die Spannung am Transistor ist auch konstant

Ihre Summe muss unter 12V liegen

Die Differenz der Summe zu 12V fällt am Widerstand ab und der wiederum 
wird so dimensioniert, dass die richtige Menge Strom fliesst.

von platine (Gast)


Lesenswert?

Ok! Kapiert!

Zwar einiges vereinfacht, aber reicht erstmal für nen Laien ;)
Vielen Dank für die kompetente Hilfe!

von Frank (Gast)


Lesenswert?

kann man die drei PWM kanäle überhaupt parallel zueinander nutzen (mit 
verschiedenen PWM signalen)?

den letztlich sind in dem chip doch nur 2 counter und somit sollten auch 
max. zwei unterschiedliche pwm signale möglich sein die durch den 
gleichen interrupt gesteuert werden (overflow, compare usw.)

von platine (Gast)


Lesenswert?

Hmm dann nehme ich lieber den Atmega644P-20PU, der hat laut Beschreibung 
6 PWM Kanäle. Kann mann alle parallel nutzen?

von Karl H. (kbuchegg)


Lesenswert?

Frank schrieb:
> kann man die drei PWM kanäle überhaupt parallel zueinander nutzen (mit
> verschiedenen PWM signalen)?
>
> den letztlich sind in dem chip doch nur 2 counter und somit sollten auch
> max. zwei unterschiedliche pwm signale möglich sein die durch den
> gleichen interrupt gesteuert werden (overflow, compare usw.)

Kann man.
Du hast
 am Timer1  2 PWM-Kanäle
 am Timer2  1 PWM-Kanal

von Vorname N. (tys)


Lesenswert?

18 Kanal 8 bit PWM mit ATMEGA8, 
Beitrag "PWM- Controller 18- Kanal TWI- Bus Proj."
Lässt sich per i2c ansprechen, ist wundervollst dokumentiert und 
funktioniert auch!

von platine (Gast)


Lesenswert?

Ich habe noch eine grundsätzliche Frage:

mit den PWM Kanälen kann ich ja dann meine "Säulen" ein und ausblenden. 
Wie könnte man jetzt noch realisieren, dass einzelne LEDs direkt 
aufleuchten können?

Die LEDs kann man ja nicht parallel schalten, dafür reichen die PWM 
Kanäle ja nicht.

von Karl H. (kbuchegg)


Lesenswert?

Dann muss man die PWM "zu Fuss" machen
Stichwort: Software-PWM

von platine (Gast)


Lesenswert?

tys:
Ui cool, danke für den Link!

von Falk B. (falk)


Lesenswert?

Siehe Soft-PWM

MFG
Falk

von Frank (Gast)


Lesenswert?

@ Karl heinz Buchegger

>Kann man.
>Du hast
> am Timer1  2 PWM-Kanäle

ich wusste nicht das es zwei "compare register" gibt..
das sind oc1a und oc1b richtig?

von Daniel R. (Firma: none until further notice) (dg_nemesis)


Lesenswert?

Vorsicht auch Anfänger ^^

1. der Atmega8 hat 3 Counter ^^... aber ja zuwenig Hardware PWM- fähige

2. ich bin sicher der bursche "platine" macht des mit "PWM in Software" 
wie hier:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM
erklärt.

Mit Transistoren größere lasten Schalten:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen
Unter punkt 8. Im Tutorial werden BC 338 Transistoren genommen (NPN) mit 
1kOhm Vorwiderstand im Kapitel 7Segment Anzeigen.

platine muss halt gucken wieviel Leistung über sein Transistor gehen 
muss
wenn er X LEDs dranhängen will BC 338 hat Max 0,625W und max 0,5A.
Dahinter kann platine LEDs auch paralel anklemmen bei 5V wird hier
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen
1kOhm als Vorwiderstand genommen.
Also wenn ich nicht irre kann platine einen größeren Transistor nehmen 
und dann auch 7 LEDs dranhängen weil beim BC338 / 337 wegen der Leistung 
nur 6 gehen dürften...(20mA s.O. * 5V = 0,1W  0,625W / 0,1W = 6) und 
(20mA*6=120mA <0,5A => i.O)





Weiß jemand zufällig wie man mehr üblicherweise größere Leistungen 
stellt ??
Also für sehr viele LEDs oder einen Motor (15 - 50W) natürlich "dimmbar 
mit pwm)
IUch dachte vielleicht gehts das PWM-Signal mit einem RC-Glied zu 
glätten also quasi Analog zu machen und dann mit einem P-Regler (1 
Operationsverstärker mit 2 Widerständen) auf 0-12V zu bringen..
bloß bekomme ich so keine 50W durch den Operationsverstärker ... oder 
wie geht das...????
(ein Relais macht wohl kaum eine PWN mit ^^ auch wenn die Leistung dort 
kein Thema wäre)
oder hilft da nur ein großer Transistor wie dieser:
http://www.reichelt.de/?;ACTION=3;LA=2;GROUP=A127;GROUPID=2885;ARTICLE=51648;START=16;SORT=artnr;OFFSET=16;SID=28JDMsQawQARwAAHIiVqAf7d11eecc0855c4276e42867d1f7cdaf

viele Grüße aus Hamburg

von Daniel R. (Firma: none until further notice) (dg_nemesis)


Lesenswert?

einzelne LEDs aufleuchten lassen
Kannste du dir recht leicht überlegen, kommt natürlich drauf an, wie du 
sie geschaltest hast ... nehmen wir einmal an du hast wie oben 
beschrieben alle in reihe geschaltet an 12V mit einem 9Ohm Vorwiderstand 
R1 vor der Reihe:

Dann könntest du z.B. zwischen alle LED je eine Diode setzen.
Vor jeder LED eine verzweigung setzen mit einem 1kOhm R2 oder wie oben 
genannt(2,2k weil 2,5 kannste gleub ich nicht kaufen)
und hinter der Led noch eine verzweigung an den beiden verzweigungen 
kommen dann 5V geschaltet

   =>  = Diode


 GND ---R1-- => -0-LED-0 => -0-LED-0 => -0-LED-0 => -0-LED-0- 12V+
                 |     |     |     |     |     |     |     |
                 R2    |     R2    |     R2    |     R2    |
                 |     |     |     |     |     |     |     |
                GND   5V+   GND   5V+   GND   5V+   GND   5V+

                       |           |           |           |
 z.B. schalten       BC338       BC338       BC338       BC338

Wenn du mehr Ausgänge brauchst zum schalten kannst du Schieberegister 
nehmen

von Daniel R. (Firma: none until further notice) (dg_nemesis)


Lesenswert?

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister
Punkt 1.5

Achja keine Garantie auf Funktion und keine Haftung was meine Beiträge 
angeht
Der Leser/Benutzer ist selbst zum Denken angehalten und sollte 
vorschläge von meiner Person nur als Anregung verstehen! ^^

von Frank (Gast)


Lesenswert?

größere lasten > mosfet mit treiber

pwm glätten ist so einfach nicht möglich

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.