Forum: Mikrocontroller und Digitale Elektronik LED Lauflicht mit ATmega


von Alexander (Gast)


Lesenswert?

Hallo Zusammen!

Ich würde gerne ein LED-Lauflicht bzw. eine LED-Beleuchtung bauen.

Das ganze soll über einen ATmega (32, da viele Ports?) aufgebaut werden.

Was sind dabei für LEDs zu empfehlen?
Könnte der Controller, wenn ich an alle 4 Ports(A-D) eine LED hänge, 
diese gleichzeitig treiben?

Sollte man die LEDs gegen + schalten, und durch die Ports des 
Controllers
auf Masse ziehen?

Sind SMD-LEDs vielleicht besser geeignet für das Vorhaben?

Ich bin ein Einsteiger in Elektronik, habe jedoch schon einige male mit 
einem
ATmega gearbeitet und habe passendes Entwicklungswerkzeug hierfür.

Danke für eure Hilfe!

Grüße
Alex

von mr. mo (Gast)


Lesenswert?

Alexander schrieb:
> Hallo Zusammen!
>
> Ich würde gerne ein LED-Lauflicht bzw. eine LED-Beleuchtung bauen.
>
> Das ganze soll über einen ATmega (32, da viele Ports?) aufgebaut werden.

Kann man. Ansonsten bieten sich Schieberegister oder Expander an. Kommt 
drauf an wieviel Aufwand man möchte und was man so Programmiertechnisch 
kann.

> Was sind dabei für LEDs zu empfehlen?
> Könnte der Controller, wenn ich an alle 4 Ports(A-D) eine LED hänge,
> diese gleichzeitig treiben?

Schlecht. Man kann da besser noch was zwischenschalten. Gibts 
Konstanstromquellen für, Transistor Arrays und und und ...

> Sind SMD-LEDs vielleicht besser geeignet für das Vorhaben?

Der Verbrauch ändert sich durch SMD nicht. Kommt eher drauf an was du 
genau machen willst und wie gut du Löten etc. kannst.

Beschreib mal wofür du das Lauflicht bauen willst und welche 
Randbedingungen noch da sind.

von Alexander (Gast)


Lesenswert?

Hallo!

Danke zunächst für die Antwort.

Also, das Vorhaben ist folgendes:
Zum Geburtstag eines Freundes soll ein Schild gebastelt werden.
Hier werden LEDs eingelassen und diese sollen leuchten -
nach Möglichkeit nicht alle gleichzeitig.

Da stellt sich auch sofort die nächste Frage, wie man sowas am besten 
mit Spannung versorgt, damit das Ding eventuell eine Nacht durchblinken 
kann.

Reicht dafür ein 9V Block mit Anpassung auf 5V oder nimmt man lieber 
etwas anderes?

Für guten Rat bin ich sehr dankbar ;-)

von Alexander (Gast)


Lesenswert?

Achja:

Natürlich wäre es nicht schlimm, wenn immer 2 oder 3 LEDs zusammen
angesteuert werden und diese dann gleichzeitig zu leuchten beginnen.

von Jürgen (Gast)


Lesenswert?

Alexander schrieb:
> Was sind dabei für LEDs zu empfehlen?
> Könnte der Controller, wenn ich an alle 4 Ports(A-D) eine LED hänge,
> diese gleichzeitig treiben?

Wenn du Low-Current LEDs (2 mA / z.B. Reichelt) benutzt, dürfte das kein 
Problem sein.

von Alex (Gast)


Lesenswert?

Bedeutet, dass ich eine (oder 2) LEDs mit entsprechendem Vorwiderstand 
gegen 5V schalten kann und diese mit dem ATmega auf Masse durchschalte?

Interessant wäre nun noch das mit der Spannungsversorgung.

Gruß
Alex

von Wasserstoff (Gast)


Lesenswert?

Alex schrieb:
> Bedeutet, dass ich eine (oder 2) LEDs mit entsprechendem Vorwiderstand
> gegen 5V schalten kann und diese mit dem ATmega auf Masse durchschalte?
Ja.

> Interessant wäre nun noch das mit der Spannungsversorgung.
Spannungsversorgung? Irgendein billiges 5V Netzteil, stabilisiert sollte 
es sein. Gibt es zu auf dem Grabbeltisch für irgendwelche 
Multimediasachen oder als Ladegerät fürs Handy.

von mr. mo (Gast)


Lesenswert?

Alex schrieb:
> Bedeutet, dass ich eine (oder 2) LEDs mit entsprechendem Vorwiderstand
> gegen 5V schalten kann und diese mit dem ATmega auf Masse durchschalte?

Sollange es eine Low Current ist ja.

> Interessant wäre nun noch das mit der Spannungsversorgung.

Wenn du nur ein paar Low Current LEDs ansteuerst und nicht noch viele 
Zusatzfunktionen einbaust, dann kannst mit genug Zeit rechnen.

von Alexander (Gast)


Lesenswert?

Das Blöde ist nur, es ist keine Steckdose da ;-)

Ansonsten habt ihr mir sehr weiter geholfen.
Danke schonmal!

von Alexander (Gast)


Lesenswert?

Hi!

Noch was anderes:
Ich musste gerade feststellen, dass es keine (nur SMD) weißen
Low-Current LEDs gibt.

Da nun aber auf jeden Fall weiße LEDs enthalten sein sollen,
muss ich wohl doch mit Transistoren arbeiten.

Welche Transistoren können hier benutzt werden?
Oder gleich die o.G. Transistorarrays?

Gruß

von mr. mo (Gast)


Lesenswert?

Alexander schrieb:
> Hi!
>
> Noch was anderes:
> Ich musste gerade feststellen, dass es keine (nur SMD) weißen
> Low-Current LEDs gibt.

Kann sein. Wo denn geschaut?

> Da nun aber auf jeden Fall weiße LEDs enthalten sein sollen,
> muss ich wohl doch mit Transistoren arbeiten.
>
> Welche Transistoren können hier benutzt werden?
> Oder gleich die o.G. Transistorarrays?

Zum ein-/ausschalten tuts eigentlich jeder. BC337 usw. so billige 
reichen da vollkommen. Als Array fällt mir spontan nur die dinger der 
ULN reihe ein, kann man nehmen, ist aber wieder das mit den Kanonen und 
Spatzen.

evtl. mal nach LED Treiber ICs googlen. Gibt paar die direkt mehrere 
LEDs ansteuern können mit nur einem Widerstand als Referenz. 
Funktionieren nach dem Prinzip der Konstantstromquelle. Vielleicht 
meldet sich hier auch mal jemand dem spontan ein passender einfällt der 
auch bei den üblichen Verdächtigen erhältlich ist.

von Alexander (Gast)


Lesenswert?

Hallo!

Ich habe nun alles zusammen und aufgebaut.
Weiterhin benutze ich zur Programmierung (C) die eclipse 
Entwicklungsumgebung.

Ich begreife nun leider nicht, wie ich den C-Code übersetzt bekomme,
bzw. wo ich nach dem Übersetzen die Hex-Datei zum Übertragen finde.

Beim Betätigen von "Build" im Eclipse erscheint keinerlei Fehlermeldung, 
sodass ich davon ausgehe, dass das übersetzen klappt (bitte Korrigiert 
meine Aussage, falls meine Annahme falsch ist).

Was muss ich tun? Bzw. wo finde ich die Hex-Datei?

Gruß & Dank
Alex

von Alexander (Gast)


Angehängte Dateien:

Lesenswert?

Moin!

Habe es selbst hinbekommen, nun stehe ich jedoch vor dem nächsten 
Problem:
Auf dem Eva-Board von Atmel funktioniert das LED-Blinklicht mit LED1/2 
über JP6/7 an Port D.5 und D.6.

Nun, wenn ich die Jumper löse und eine eigene Schaltung hinanhänge, 
funktioniert das ganze nicht mehr - vermutlich liegt der Fehler also bei 
der Schaltung.

Für die Schaltung, siehe Anhang.
Die beiden Basen sind über einen 1k-Ohm Basiswiderstand an den µC 
angeschlossen (Beide Basen parallel!!).

Die LEDs sind über einen Vorwiderstand an VDD angeschlossen.
Der Emitter der Transistoren liegen auf GND.

Wo ist der Fehler in der Schaltung?

von Karl H. (kbuchegg)


Lesenswert?

NImm deine Schaltung mal vom µC weg, und lass nur Vdd und GND 
angeschlossen. Kontrollier zur Sicherheit noch, ob du an Vdd auch 
wirklich +5V hast. Und dann verbindest du einfach mal das jetzt offene 
Ende des Basiswiderstandes mit einem Stück Draht mit Vdd. Leuchten deine 
LED? Was ist, wenn du statt an Vdd mit GND verbindest?


(Leider kann man auf deiner Graphik nicht erkennen, welche Bezeichnung 
deine Transistoren tragen. Und 2 Transistoren an einem Basiswiderstand 
finde ich jetzt auch nicht so prickelnd. Wenn das ein Wald und Wiesen 
Transistor ist, dann kann leicht 1 Transistor alle beide LED treiben. 
D.h. den 2.ten brauchst du gar nicht)

von mr. mo (Gast)


Lesenswert?

Alexander schrieb:
> Moin!
>
> Habe es selbst hinbekommen, nun stehe ich jedoch vor dem nächsten
> Problem:
> Auf dem Eva-Board von Atmel funktioniert das LED-Blinklicht mit LED1/2
> über JP6/7 an Port D.5 und D.6.

Keine Ahnung welches du meinst, aber wenn es klappt super.

> Nun, wenn ich die Jumper löse und eine eigene Schaltung hinanhänge,
> funktioniert das ganze nicht mehr - vermutlich liegt der Fehler also bei
> der Schaltung.

Wahrscheinlich.

> Für die Schaltung, siehe Anhang.
> Die beiden Basen sind über einen 1k-Ohm Basiswiderstand an den µC
> angeschlossen (Beide Basen parallel!!).

Nicht so toll. Beiden einen eigenen Basiswiderstand verpassen.

> Die LEDs sind über einen Vorwiderstand an VDD angeschlossen.
> Der Emitter der Transistoren liegen auf GND.

Hört sich richtig an.

> Wo ist der Fehler in der Schaltung?

Wenn du das so gebastelt hast wie gezeichnet, dann ist der einzige 
Fehler an der Stelle mit den Basiswiderständen. Ansonsten sollte das 
Funktionieren.

Wobei ich mich Frage:
Du hast oben zwei LEDs mit jeweils einen Port Pin angeteuert. Warum 
steuerst du hier zwei LEDs mit einem an?

Weil so wie du das jetzt da gezeichnet hast, reicht auch nur ein 
Transistor für beide LEDs.
Wenn du aber beide LEDs seperat ansteuern willst, dann solltst du jedem 
Transistor einen eigenen Basiswiderstand spendieren und jeweils an den 
richtigen Port Pin hängen.

von Werner (Gast)


Lesenswert?

Alexander schrieb:
> Ich musste gerade feststellen, dass es keine (nur SMD) weißen
> Low-Current LEDs gibt.

Hast du dir die LED 3-04700 WS bei Reichelt angesehen? Man muß ja nicht 
20mA durchschicken.

von Alexander (Gast)


Lesenswert?

Hi!

Danke zunächst für die Masse an Antworten.
Die Transistoren sind BC548A's.

Ich habe die LEDs gesehen, jedoch sind diese deutlich zu düster für das 
Vorhaben.
Habe nun die LED 5-3000 WS von Reichelt hier liegen.
Diese passen von der Helligkeit sehr gut.

Leider haben Sie aber lt. Daten(blatt) eine Spannung von 3,6-4V bei 20mA
und ich benötige evtl. > 30 Stück (steht erst morgen genau fest) von den 
Teilen.

Daher wollte ich zwei LEDs mit einem Port treiben, da sowieso jeweils 
zwei gleichzeitig geschaltet werden sollen.

Zu der Drahtprobe: Verbinde ich den Basisvorwiderstand mit VDD, leuchten 
die beiden LEDs.
Ist der 1k Widerstand und der damit verbundene Strom von rund 45mA nicht 
richtig dimensioniert?
Meine Überlegung war nach der Stromteilerregler, dass sich die Ströme 
eigentlich nahezu gleich aufteilen müssten an beide Basen - und 25mA 
sollten zum Durchschalten des BC548A reichen, oder?
Weiterhin dürften die LEDs dann ja eigentlich auch nicht leuchten, wenn 
ich den Basiswiderstand mit Vdd verbinde.

LG & Danke im Vorraus.

von Alexander (Gast)


Lesenswert?

Kleines "Edit":
Deine LEDs hatte ich auch im Auge.
Letztendlich sind meine Ähnlich.

Könnte ich diese auch am Controller treiben?
Glaube nicht, dass ein einzelnder Port 8 von den Dingern treiben kann 
oder?

von Michael (Gast)


Lesenswert?

Hallo,

Alexander schrieb:
> Ist der 1k Widerstand und der damit verbundene Strom von rund 45mA nicht
> richtig dimensioniert?

1. Wie kommst du auf die 45mA bei 1kOhm?
2. http://www.mikrocontroller.net/articles/Basiswiderstand
Du willst ein unter Umständen etwas batteriebetriebenes bauen, aber 
verschwendest unnötig am Transistor Strom?
Dein Transistor hat ein HFE von mindestens 110. Sprich bei 20mA an der 
LED brauchst du weniger als 182µA um den Transistor ausreichend 
durchzuschalten.

Alexander schrieb:
> Könnte ich diese auch am Controller treiben?
> Glaube nicht, dass ein einzelnder Port 8 von den Dingern treiben kann
> oder?

http://www.atmel.com/Images/doc2503.pdf Seite 287:
DC Current per I/O Pin ................................................ 
40.0mA
DC Current VCC and GND Pins.......................... 200.0mA and
400.0mA TQFP/MLF

Jetzt kannste abschätzen, wie viele LEDs du anschließen kannst, wenn du 
sie maximal/verringert bestromst.

Gruß
Michael

von Werner (Gast)


Lesenswert?

Alexander schrieb:
> Meine Überlegung war nach der Stromteilerregler, dass sich die Ströme
> eigentlich nahezu gleich aufteilen müssten an beide Basen

Die Stromteilerregel besagt bei Dioden, also auch bei BE-Strecken von 
Transistoren, dass der Strom wegen der Temperaturabhängikeit der 
Eingangskennlinie hauptsächlich durch den wärmeren Transistor fließt, 
m.a.W. ein gemeinsamer Basiswiderstand bei Parallelansteuerung mehrerer 
Transistoren in Emitterschaltung ist Mist.

von Alexander (Gast)


Lesenswert?

Michael schrieb:
> 1. Wie kommst du auf die 45mA bei 1kOhm?
> 2. http://www.mikrocontroller.net/articles/Basiswiderstand
> Du willst ein unter Umständen etwas batteriebetriebenes bauen, aber
> verschwendest unnötig am Transistor Strom?
> Dein Transistor hat ein HFE von mindestens 110. Sprich bei 20mA an der
> LED brauchst du weniger als 182µA um den Transistor ausreichend
> durchzuschalten.

Die Rechnung war meinerseits 5V - 0,7V = 4,3V / 1k =~ 45mA  (um eine 
Zehnerpotenz versehen ;-))
Aber trotzdem müsste der Transistor doch schalten, oder?

Wenn ich die Schaltung anschließe, dann schalten sich die LEDs an, wenn 
ich den "Basisdraht" an PD5 herausziehe, gehen diese aus.

Werner schrieb:
> Die Stromteilerregel besagt bei Dioden, also auch bei BE-Strecken von
> Transistoren, dass der Strom wegen der Temperaturabhängikeit der
> Eingangskennlinie hauptsächlich durch den wärmeren Transistor fließt,
> m.a.W. ein gemeinsamer Basiswiderstand bei Parallelansteuerung mehrerer
> Transistoren in Emitterschaltung ist Mist.

Habe nun versucht, das ganze nur mit einem 1kOhm an einem Transistor zu 
machen. Der Effekt ist der Selbe wie bei beiden Transistoren zusammen:
Die Dioden leuchten dauerhaft.

Das zugehörige µC Programm ist folgendes:
1
int main( void )
2
{
3
    DDRD = ( 1 << PD5 );        
4
5
    while( 1 )                  
6
    {
7
        PORTD ^= ( 1 << PD5 );  
8
        _delay_ms(1000);       
9
    }
10
11
    return 0;
12
}

von Route_66 (Gast)


Lesenswert?

Hallo!
> Die Dioden leuchten dauerhaft.

Warte mal lange genug.

von Karl H. (kbuchegg)


Lesenswert?

Alexander schrieb:

>
1
> int main( void )
2
> {
3
>     DDRD = ( 1 << PD5 );
4
> 
5
>     while( 1 )
6
>     {
7
>         PORTD ^= ( 1 << PD5 );
8
>         _delay_ms(1000);
9
>     }
10
> 
11
>     return 0;
12
> }
13
>

Das kann nicht alles sein.
Da fehlen noch die #include und es fehlt die Angabe von F_CPU für den 
_delay_ms. Und wenn die falsch ist, dann blinkt deine LED nicht alle 1 
Sekunden sondern zb alle 16 Sekunden. Und wenn du vorzeitig die Geduld 
verlierst (weil du nicht 16 Sekunden wartest), dann sieht es für dich so 
aus, als ob sie gar nicht blinkt.

von Alexander (Gast)


Lesenswert?

1
#include <avr/io.h>
2
#ifndef F_CPU
3
#define F_CPU 3686400UL
4
#endif
5
#include <util/delay.h>

Das hatte ich ausgelassen, da - wie gesagt - die LED auf dem 
Entwicklungsboard mit ungefähr 1Hz blinkt.

von Alexander (Gast)


Lesenswert?

Habe den Fehler gefunden:
Es lag an zwei unterschiedlichen Massen (eine vom USB-Anschluss des 
Rechners, einmal von dem Netzteil zur Versorgung der Platine).

Da hättet ihr noch lange suchen können, wenn ich soetwas nicht dazu 
schreibe.

Tut mir leid, und vielen Dank für die Tipps!

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.