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
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.
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 ;-)
Achja: Natürlich wäre es nicht schlimm, wenn immer 2 oder 3 LEDs zusammen angesteuert werden und diese dann gleichzeitig zu leuchten beginnen.
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.
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
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.
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.
Das Blöde ist nur, es ist keine Steckdose da ;-) Ansonsten habt ihr mir sehr weiter geholfen. Danke schonmal!
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ß
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.
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
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?
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)
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.
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.
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.
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?
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
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.
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 | }
|
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.