Forum: Mikrocontroller und Digitale Elektronik "Einfache" erste LED programmierung


von Kilian T. (kilian1024)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich weiß, es gibt bereits einige "Einsteiger" Beiträge, ich habe so 
allerdings noch keine genaue Antwort auf meine Fragen gefunden.

Bisher habe ich mich noch überhaupt nicht mit Controllern beschäftigt, 
daher hier einmal meine Problemstellung:
Ich bin momentan dabei, einen "Iron man Suit" zu bauen. Ja, klingt 
komisch, ist an sich aber eine wirklich interessante Sache.  Für die 
Hände fehlen mir noch LED's. Ich habe es mir so vorgestellt, dass der 
"äussere" LED kreis einmal im Kreis leuchtet, und dann der Innere 
angeht. Das ganze soll über einen Taster oder Schalter laufen. Im Anhang 
liegt ein Gif, an dem Ihr seht, was ich meine.

Ist es für einen "Amateur" wie mich möglich, so eine Schaltung zu bauen? 
Welche Teile benötige ich dafür, und wo würde ich da preislich landen? 
Gibt es vielleicht sogar einfachere Lösungen als einen Microcontroller 
zu programmieren?

Danke für eure Hilfe!
Grüße
Kilian

von Karl H. (kbuchegg)


Lesenswert?

Kilian T. schrieb:

> Ist es für einen "Amateur" wie mich möglich, so eine Schaltung zu bauen?

Natürlich.
Das ist auch nur eine Variante eine Lauflichtes. Selbst wenn die LED im 
Kreis angeordnet sind.

> Welche Teile benötige ich dafür, und wo würde ich da preislich landen?
> Gibt es vielleicht sogar einfachere Lösungen als einen Microcontroller
> zu programmieren?

Die Sache ist die, dass im Grunde genommen bauteiltechnisch ein µC so 
ziemlich die 'einfachste' Lösung darstellt. Was nicht unbedingt heißt, 
dass das für dich die einfachste Lösung ist.

Mach dich mal zum Thema Lauflicht kundig. Da findest du im Web 
sicherlich viele Schaltungsvorschläge. Auch einige die alles diskret 
aufbauen, zb mit einem 555-Baustein als Taktgenberator und einem 
Zählerbaustein, der die Lauflichtfunktion implementiert.

: Bearbeitet durch Admin
von Masl (Gast)


Lesenswert?

Kilian T. schrieb:
> Ich bin momentan dabei, einen "Iron man Suit" zu bauen.

Hab ich mir auch schon oft überlegt. Wirklich interessant. Stellst du 
Bilder dazu rein, bzw. gibt es eine Projektseite?
Aus welchem Material machst du deine Rüstung? :-)

@ Topic: Hast du schonmal einen uC programmiert? Was hast du als 
Entwicklungshardware alles zuhause?

: Bearbeitet durch Admin
von Kilian T. (kilian1024)


Lesenswert?

Hey,
ja, eine ProjektSeite gibt es, leider war der Verfasser nur etwas 
wortkarg. Ich werde eine eigene einstellen, sobald der Anzug fertig ist. 
Das verfahren nennt sich "fiberglasing". Dabei wird das Grundgerüst aus 
Papier / Pappe gemacht. Dann mit Resin (Kunstharz, Epoxidharz oder 
ähnlichem) und Fieberglasflies alles aushärten. Danach mit Mörtel aus 
dem Modellbaubereich füllen und abschmirgeln. Das fertige Material ist 
komplett hart und kann erst mit Lack in der jeweiligen Farbe und dann 
mit Klarlack für den Metall Effekt angestrichen werden. Die Anleitung 
findest du hier:
http://www.instructables.com/id/IRONMAN-2-suit-mark-6/?lang=de
Allein der Helm hat bisher etwa 40 Stunden in Anspruch genommen, aber 
vielleicht werde ich ja bis Halloween fertig! :D

Zurück zum Thema:
Nein, noch nie damit gearbeitet.
An Hardware habe ich noch nichts besonderes. Laptop (Mac und Windows) 
sowie ein Lötkolben und einen ganz normalen Werkzeugkoffer, ich weiß ja 
leider auch noch nicht, was ich alles benötige.

@Karl Heinz
Danke für die Antwort!
Ist es denn beim Lauflicht möglich, dass am Ende die Mittleren Lichter 
angehen und auch kurz anbleiben? (siehe GIF).
Ich werde mich auf jeden fall einmal schlau machen!

: Bearbeitet durch User
von Aaron (Gast)


Lesenswert?

Hi

Um die uC zu programmieren brauchst du einen Programmer. Wenns billig 
sein soll einen USBasp (5Euro). Ich würde allerdings einen AVR Dragon 
oder AVR MKII empfehlen. Hier gibt es eine Liste: 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment

von Karl H. (kbuchegg)


Lesenswert?

Kilian T. schrieb:

> @Karl Heinz
> Danke für die Antwort!
> Ist es denn beim Lauflicht möglich, dass am Ende die Mittleren Lichter
> angehen und auch kurz anbleiben? (siehe GIF).

Im Prinzip ja.
Du siehst das momentan als Lauflicht mit 9 Stufen an. Das musst du aber 
nicht, du kannst das ja auch als Lauflicht mit 10, 11 oder auch mehr 
Stufen (oder Takten) ansehen, bei denen die 10.te, 11.te bzw. jede 
weitere Stufe darin besteht, dass jeweils die mittleren LED brennen. Um 
die alle einzuschalten wirst du sowieso für diese LED eine Treiberstufe 
brauchen, so dass du vom Dekadenzähler einfach die "9.te" und "10.te" 
und "11.te" (und ...) Ausgngsleitung zb mit einem Dioden-Or auf diesen 
Treiber schaltest. D.h. dann wenn bei einem 'normalen Lauflicht' dann 
eben die 10.te, 11.te, ... LED leuchten würde leuchtet bei dir immer nur 
der Mittelteil.

: Bearbeitet durch Admin
von Karl H. (kbuchegg)


Lesenswert?

Siehe zb hier
http://dieelektronikerseite.de/Elements/4017%20-%20Der%20besondere%20Zaehler.htm

bzw. als Ersatz für die händische Weiterschaltung des Lauflichtes dann 
eben so was
http://dieelektronikerseite.de/Elements/NE555%20-%20Der%20Herr%20der%20Zeiten.htm

(bischen weiter unten. Du brauchst einen astabilen Multivibrator, der 
die Pulse für den 4017 generiert)

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Wenn die Links nicht funktionieren.

Die Seite nennt sich "Die Elektronikerseite"
http://dieelektronikerseite.de/

Dann links im Menü: "Grundlagen" und "Bauelemente".
Du willst dann die Beschreibungen für den 4017 und den 555

von Thomas (Gast)


Lesenswert?

Hallo  Kilian,

das hier läuft ja alles ziemlich verwirrend mit dem was du brauchst und 
was nicht.
Bevor ich probiere etwas Licht ins Dunkel zu bringen, erstmal: WOW - 
tolles Projekt. Man kann es zwar sicherlich belächeln, aber die Arbeit 
und das Ergebnis sieht toll aus so weit!

Und nun zum Thema:
Es gibt hier zwei Möglichkeiten wie du deine blinkenden LEDs bauen 
kannst.
Die eine Möglichkeit (die du ja scheinbar auch vorhast) besteht darin 
dass ein Minicomputer (ein Microcontroller) die LEDs an-, und 
abschaltet.
Ein Microcomputer kann das (und noch VIEL, VIEL mehr) und ist mir dieser 
Aufgabe reichlich unterfordert - nichtsdestrotrotz sind Microcomputer 
(richtig: Microcontroller) mittlerweile sehr einfach aufzubauen, günstig 
und verbrauchen nicht sehr viel Strom.

Die zweite Möglichkeit (die hier ein paar vorgeschlagen haben) ist die, 
dass du keinen super-intelligenten Minicomputer nimmst, sondern einfach 
ein paar kleine (dumme) schwarze Chips die nicht viel mehr können als 
Zählen.
Wenn du also einen Chip hast der immer die Leitung 1, dann die 2, dann 
die 3 anschaltet - kannst du mit geschicktem verlegen der Leitungen auch 
jedes LED-Muster erzeugen das du willst.

Kommen wir zu dem was ICH dir raten würde - auch wenn ich dafür 
geschlagen werde - aber aufgrund deine geringen Elektronikkenntniss und 
dem Wunsch schnell zum Ziel zu kommen würde ich eines der Arduino-Boards 
empfehlen:
http://arduino.cc/en/Main/Products
Speziell für deine Anforderung wäre der -teure- Lillypad gedacht (zum 
einnähen in Kleidung), ein Arduino UNO oder gar MEGA2560 tut es aber 
genauso.
(die sind eigentlich sogar besser, aber vom Formfaktor eher klobiger...)
Die Preise sind auch nicht ganz so schlimm denn notfalls kann man hier 
mit Nachbauprodukten (die erlaubt sind!) noch einiges an Geld sparen.

Was machst du nun mit diesem Arduino?
a) Du baust ihn irgendwo ran und versorgst ihn z.B. über einen 
USB-Akkupack mit Strom.
b) Du schreibst ihm ein kleines Programm der Form:
1
- 500 Millisekunden warten
2
- Ausgang 1 an
3
- 500 Millisekunden warten
4
- Ausgang 1 aus
5
- Ausgang 2 an
6
- 500 Millisekunden warten
7
- Ausgang 2 aus
8
- Ausgang 3 an
9
.
10
.
11
.
c) Das Programm kannst du einfach mit einem USB-Kabel auf den Arduino 
Board übertragen und schon wird das Board genau das machen.
d) An jeden Ausgang schließt du mit einem Kabel das eine Beinchen der 
gewünschten LED an - das andere Beinchen kommt an den Arduino GND-Pin.

Damit bist du -theoretisch- schon fertig - ABER:
Ein Arduino darf pro Ausgang nur ca. 30 mA schalten.
Wenn du auf einem Ausgang 6 LEDs auf einmal schalten willst ist das 
deutlich darüber - vorallem wenn es sehr helle LEDs sind.
Hier musst du dann auf einen Transistor oder einen sog. Treiberbaustein 
zurückgreifen.
Das sind kleine Bauteile die auf der einen Seite nur wenig Strom 
brauchen und damit auf der andere Seite viel Strom schalten können.

Ich würde sagen mit einem Arduino die ersten LEDs blinken zu lassen 
solltest du in zwei, drei Tagen hinbekommen haben.
Dann kommst du wieder und frägst mal wie du das mit dem Treiber am 
besten machen kannst.
Ich denke fast dass es für deine Anwendung einen extra Chip geben wird.

Ich hoffe ich hab jetzt entgültig Unklarheit reingebracht ;-)

Thomas

von Kilian T. (kilian1024)


Lesenswert?

Hallo Thomas,

vielen Dank für die Antwort, das hilft mir auch die letzen Beiträge 
besser zu verstehen. :)
Eine wirklich richtig gute Erklärung!
Ich habe mir einfach mal so ein board herausgesucht:
http://elmicro.com/de/arduino.html
Gehe ich richtig in der Annahme, dass:
a) Mir der Uno für 22,50€ reichen würde?

b) Ich den zwei mal bräuchte, da ich ja auch 2 Hände habe :)

c) Ein paar Normale AA Batterien ausreichen um einen Abend lang hin und 
wieder die Funktion zu nutzen?

d) Ich die LED's in der Mitte ja auch mit der Software ansteuern könnte, 
also:
- Ausgang 1 an
- 500 ms warten
- Ausgang 1 aus
- ausgang 2 an
- 500 ms warte
- ausgang 2 aus
.
.
.
- Ausgang 10 an -> Mittlere LED
- Ausgang 11 an -> Mittlere LED
- Ausgang 12 an -> Mittlere LED
- 1000 ms warten
- alle aus

So hätte ich nur eine LED pro Ausgang geschaltet und die Mitte würde 
zusammen leuchten.
Oder habe ich da was falsch verstanden?

Vielen Dank!

von Thomas (Gast)


Lesenswert?

Hallo Kilian,
a) Ja, der Uno reicht erstmal. Grob gesagt hat er 14 Ein-/Ausgänge.
   (mit ein paar Tricks kann man da deutlich mehr draus machen, dann 
wird aber das Programmieren komplizierter (Stichwort: Schieberegister))

   Was den Preis betrifft so findet man Arduino UNOs und baugleiche 
zwischen 15 und 30 €, grob gesagt. Nimmt man ein Original so unterstützt 
man das Projekt.
   Nimmt man ne Kopie so hat man eigentlich genau das gleiche, 
unterstützt aber die eigentlichen Entwickler nicht.
   So sieht ein Original aus:
   http://www.amazon.de/Arduino-Uno-Board-REV-3/dp/B006H06TVG/ref=sr_1_1?ie=UTF8&qid=1395666207&sr=8-1&keywords=arduino+uno
   So Kopien:
   http://www.amazon.de/SainSmart-Kompatibel-Entwicklungsbrett-ATmega328P-enthaltend/dp/B00760RLFO/ref=sr_1_1?ie=UTF8&qid=1395666037&sr=8-1&keywords=sainsmart+arduino
   http://www.amazon.de/Seeeduino-V3-0-AtMega328P-Arduino-kompatibel/dp/B0080BHQ4E/ref=sr_1_1?ie=UTF8&qid=1395666017&sr=8-1&keywords=seeeduino

b) Nein. Du brauchst nur ein Board. Du kannst ja aus einem Ausgang zwei 
Kabel für zwei LED abgehen lassen (wenn diese gleichzeitig angesteuert 
werden sollen),
   alternativ kannst du die LEDs auch einzeln ansteuern, da könnte es 
aber mit den 14 Ausgängen schon eng werden.
   (Ich zähle jetzt 9 Ausgänge pro Hand, 8 LEDs außen rum und die 7 in 
der Mitte mit einem Ausgang über einen Transistor-Treiber)

c) Zum Testen reicht der USB-Anschluß deines Computers. Das Kabel 
welches das Programm überträgt gibt dem Arduino auch Strom.
   Nur in den Anzug einen Laptop einzubauen um Strom zu haben ist eher 
umständlich.
   Was die AA Batterien betrifft so brauchst du davon 5 Stück wenn es 
normale Batterien sind (1.5V), und 6 Stück wenn es Akkus sind (1.2V).
   Der Arduino läuft zwar mit 5 Volt - er möchte aber gerne 7V für 
seinen Spannungswandler.
   Wie lange die Batterien halten hängt hauptsächlich von deinen LEDs 
ab. Der Arduino Uno braucht ca. 25 mA.
   Sagen wir eine LED braucht 15 mA (je nachdem wie hell sie ist) so 
kämen wir bei 15 LEDs pro Hand auf:
   225 mA pro Hand
   25 mA fürs Board
   => ~500 mA

   So eine 1,5V Batterie hat ca. 1500 mAh (da die Batterien in Serie 
sind addiert sich hier nichts!), also könntest du alle LEDs + Board ganz 
grob für ca. 3 Stunden durchgehend laufen lassen.
   (deutlich weniger Zeit hättest du mit einer 9V Batterie die ca. 600 
mAh hat, also nach in etwa einer Stunde leer wäre).
   Zu beachten ist hier: Die genaue Batterielebenszeit zu ermitteln ist 
nicht so einfach und die Werte hier sind alle gewürfelt. Gehen aber in 
die richtige Tendenz.

d) Ja, richtig erkannt. Du kannst für JEDE Led einen Ausgang nehmen. Der 
Arduino wird die nun nacheinander anschalten. Die Verzögerung beträgt 
nur wenige millionstel Sekunden.
   Es sieht also so aus als ob die alle gleichzeitig angehen. Vorteil 
des ganzen WÄRE es nun auch dass du keinen Treiber brauchst.
   ABER hier kommt das nächste Limit: Ein Arduino Uno kann insgesamt nur 
200 mA über seine Ausgänge liefern. 30 LEDs mit 15 mA sind 450 mA - mehr 
als der Arduino Uno direkt liefern kann.
   Die Batterie kann das, ohne Probleme - aber dazu musst du die LEDs 
(über einen Transistor!) direkt an die Batterie anschließen. Da sind wir 
wieder beim Transistor-Treiber!
   Außerdem wirds hier jetzt aber eng mit den Ausgängen des Arduino UNO. 
Nimmst du für jede LED einen Ausgang braucht du 15 Ausgänge (da geht mit 
nem Uno noch ganz gut).
   Willst du jetzt jede Hand und jede LED einzeln steuern bist du bei 30 
Ausgängen (da kann ein Arduino Uno nur noch mit extra Schieberegistern 
die das programmieren komplizierter machen).
   Alternative hier: Arduino Mega2560 - aber auch der kann vermutlich 
nicht 500 mA über seine Ausgänge schicken.

Du siehst also, eigentlich ist der Mikrocontroller einfacher als direkt 
schwarze Kästchen (Zähler, Schieberegister) zusammenzuschalten, aber 
sobald man an die ersten Grenzen (maximal Strom pro Ausgang, maximal 
Strom für alle Ausgänge, Anzahl Ausgänge)
stößt muss man trotzdem etwas nachdenken :-)

Gerade die Anforderung XX-LEDs mit dem Arduino zu schalten ist absoluter 
Standard und es sollte viele Bücher und Tutorials geben die einem das 
ausführlich erklären.
Einschließlich Transistortreiber und Schieberegister.

Wie ichs erstmal machen würde: Die 8 LEDs an jeweils einen Ausgang des 
Arduinos (also beide Hände gemeinsam) und die 7 inneren LEDs über einen 
Transistor an die Batterie.
Die Basis des Transistors kommt dann an noch einen Ausgang des Arduinos. 
Somit wäre deine Anforderung erfüllt (den Programmcode hast du in 15 
Minuten getippt) und es würde erstmal laufen.
Wenn du dann manche Sachen anders machen willst kann du dich immer noch 
genauer in Transistor-Treiber, Schieberegister oder Ultrahelle-LEDs die 
mit PWM angesteuert werden einlesen.

Thomas

von Thomas (Gast)


Lesenswert?

Hier nur mal ganz kurz ein Beispiel wie soetwas aussehen kann.
(Hier ists ein Schieberegister welches 40 mA pro Ausgang liefern kann 
und 8 Ausgänge hat).
http://arduino.cc/en/Tutorial/LEDDriver

Die Suche nach 'Arduino LED' oder 'Arduino LED Treiber' oder 'Arduino 
Lauflicht' erschlägt einen fast.

Thomas

von Kilian T. (kilian1024)


Lesenswert?

Hallo Thomas,

ich habe mir grade einmal ein Buch über Arduino ausgeliehen und werde 
mich nun damit beschäftigen, ich finde das ganze ziemlich interessant 
und vielleicht hilft mir das ja auch bei der Mechanik für das öffnen und 
schließen des Helms :)
Aber eins nach dem anderen :P


Das Board (Uno REV 3) habe ich mir schon bei Amazon bestellt, das sollte 
bis zum Wochenende ankommen.

Vielen Dank für deine Hilfe und die super Tipps!
Ich werde bestimmt noch weitere Fragen haben und dann bei Zeiten wieder 
hier posten.

Danke auch an den Rest
Kilian

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.