Forum: Mikrocontroller und Digitale Elektronik LED fließender Farbwechsel


von Martin Huber (Gast)


Lesenswert?

Hallo,

möchte in das Thema Mikrocontroller einsteigen. Hab bisher nur mit dem
8085µP gearbeitet, und das ist auch schon ne Weile her.
Aber zu spät ist es nie. Als Einstieg hab ich mir folgendes Projekt als
Ziel gesetzt:

Gebaut werden soll ein Stimmungslicht, auf diesem sind
verschiedenfarbige LED`s aufgebracht ( 3 Farben ) die per Knopfdruck
fließend ineinander übergehen. Bevor ich jetzt beschimpft werde !! Ja
ich habe bereits das Forum durchstöbert, brauche halt noch etwas Input
da ich mir dementsprechend die benötigten Bauteile erst bei Reichelt
etc. bestelle.
Also jetzt der PAP ist in Planung, das Programm wird in Assembler
geschrieben --> bleib halt gerne auf dem Boden ;-) und denke für meine
Anforderung reicht es.
Die Auflösung wollte ich mit 8bit haben sprich 256 Stufen, und diese
Funktion sollte ein externer DAC erledigen (einer pro Farbe). Diese
Spannung wollte ich dann auf einen Spannungsfolger ( Transistor )
geben, damit ich max 500mA ziehen kann bei 5V.
ich hoffe soweit sind die Anforderungen klar !? nun die Fragen:

1. Ist das Projekt als Neueinstieg für die Controller- Welt geeignet (
Erfolgsprinzip,hatte ja nur was mit nem µC am Hut) ?

2. Will keine Umständliche Adresscodierung, deshalb wollte ich alle DAC
mit vollen 8 Leitungen anfahren -> O.K.?

3. Sollte es doch lieber mit PWM umgesetzt werden ( wollte es einfach
halten, zwecks Einstieg in die Thematik !) ?

4. Sollte der Prozessor mit dem vollen Takt laufen und die Verzögerung
nur über Schleifen erfolgen oder auch runtertakten ?

5. Welcher DAC, fertiges IC oder mit R2R- Netzwerk und OP ?

6. Falls fertiges IC, gibt es welche die den digitalen Wert direkt
ausgeben oder muss für diesen Prozess der µC dem DAC jeweils extra ein
Signal ausgeben damit der digitale Wert umgesetzt wird ( wäre bei OP-
Variante ja nicht der Fall !) ?

7. Das wichtigste am Schluß, welcher Controller entspricht am besten
meinen Vorstellungen ( dachte an den ATmega8515 ) ?

..... so genug gefragt. Meine Weitere Vorghensweise wird sein, das ich
den µC (wenn ich weiß welchen ) auf ne Euro- Platine bring und mal ein
Lauflicht alla Knight- Rider etc. mache. Hoffe ich komme in das Thema
ohne große Stolperfallen wieder rein.

Danke und Gruß
Martin

von Steffen Burr (Gast)


Lesenswert?

Hallo Martin,

ich versuch mal deine Fragen zu beantworten.

1) Also, da man hardwaremäßig ja nur die 3 LEDs anschließen muss,
kannst du ja erstmal versuchen, ein Lauflicht zu bauen, etc. Ohne
Hardwareänderung kannst du dann ja trotzdem dein Projekt machen. Aber
anfangen würd ich mal ein wenig einfacher und das Programm dann immer
ausbauen. z.B. erst mal, dass per Knopfdruck die leds weitergeschaltet
später dann den weichen übergang.

2) Also DACs würd ich hier nicht verwenden, erst recht keine
parallelen. Viel einfacher ist das ein und ausschalten der LEDs in
einem bestimmten Tastverhältnis. Das liese sich mit einem einzigen
Timer realisieren.

3) Also ich würd einfach einen Timer starten und dann nach einigen
Durchläufen die LED wieder an/ausschalten (also in einem bestimmten
Tastverhältnis). wenn das schnell genug geht, kannst du ohne weitere
Hardware das ganze aufbauen. Vor allem die Fehlersuche dürfte einfacher
sein. Zum Üben mit dem Umgang des Timers kannst du ja mal eine LED
einfach blinken lassen.

4) Wenn das alles ist, was der uC tun muss, kannst du eine niedrige
Frequenz wählen, um die Schaltung stromsparend zu gestalten. Wenn er
noch mehr erledigen muss oder kein batteriebetrieb nötig ist, dann
kannst du auch einen schnelleren Takt wählen.

5) s.o. -> lieber mit Timer und kein DAC

6) s.o.

7) 3 LEDs, ein Taster -> ein 2313 oder evtl ein AT Tiny sollten auf
jeden Fall ausreichen. Wichtig ist, dass der Controller 4 Ports besitzt
und über einen Timer verfügt.

Über einen Transistortreiber zu gehen ist natürlich sinnvoll, aber
vorläufig kannst du eine LED pro Port auch direkt ansteuern (zumindet
zum Testen).

Ich hoffe dir etwas geholfen zu haben!
Viele Grüße
Steffen

von Joerg Wunsch (Gast)


Lesenswert?

Das Ganze nennt sich PWM (Pulsweitenmodulation), ist ja im Prinzip
auch eine Art DA-Wandler, haben heutige Controller in der Regel
on-board.

Das simpelste avr-libc demo macht genau sowas mit einer einzigen LED.
Kann man sich folglich bequem auf 3 LEDs ausweiten, wenn man 3 PWMs im
Controller hat.

von Eckhard (Gast)


Lesenswert?

Hallo,

schau Dir das hier mal an.

http://www.circuitcellar.com/fi2003/F2010.htm

ist zwar kein Atmel aber macht genau das was Du machen möchtest.
Ist ganz gut beschrieben und meiner Meinung nahc auch gut
nachvollziehbar was da passiert.

Eckhard

von thkais (Gast)


Lesenswert?

@Joerg Wunsch:
Nö. Man braucht keine 3 PWMs im Controller. Wenn der Controller sowieso
99,9999% seiner Zeit Däumchen dreht, kann er doch auch Software-PWM in
der Zeit erledigen. Wie Steffen schon bemerkte, reicht dann ein kleiner
8-pin TINY.

von Joerg Wunsch (Gast)


Lesenswert?

> Man braucht keine 3 PWMs im Controller.

Schon klar, daß man das auch in Software tun kann.  Ich wollte nur
sagen, daß es mit 3 PWMs natürlich ein Kinderspiel ist, das Demo
gleich auf diese auszuweiten.  Für die Softwareimplementierung braucht
man 3 Krümel Gehirnschmal mehr. ;-)

von Martin Huber (Gast)


Lesenswert?

...erstmal viele Dank an alle, vor allen an Steffen, für die
ausführliche Erklärung. Da ich bis jetzt noch auf einem unteren Niveau
arbeite/schwimme bin ich umso glücklicher das mein Tread beantwortet
wurde.

zu 1. klingt jetzt zwar vielleicht komisch, aber vor dem Program hab
ich keine "Angst". Das einzigste ist die etwas andere Befehlsliste,
aber ansonsten sehe ich da (bis jetzt) keine Probleme. Hab auch schon
weitere Erweiterungschritte im Kopf wie z.B. Farbwechsel per Knopfdruck
oder durch Schalter einen automatischen Ablauf. Aber alles zu seiner
Zeit ;-) Da man an den µC direkt LED`s anschließen kann solten ja die
superhellen auch kein Problem sein (haben auch 20mA)

zu 2. + 3. über PWM, bin ich in diesem Forum schon öfters gestolpert,
werd wohl nicht an dieser Funktion vorbeikommen. Da ist auf jeden Fall
noch etwas lesen angesagt --> dieses Thema ist neu für mich !! Das
einzigste ist ob ich mit PWM eine sanften Übergang habe, da ja die LED
abhängig von der Frequenz und dem Tastberhältnis nur das X-tel der Zeit
leuchtet. Aber Wir wissen ja schon von der Fernsehtechnik das unser
Auge bzw. Gehirn etwas träge ist :-)

zu 4. hab da noch einen AC/DC Modul rumliegen, macht 1A bei 5V also in
der Richtung kein Problem, die Tests passiern eh mit Hilfe eines
Labornetzteiles das macht dann 3A bei 5V.

5.und 6. hat sich vorerst erledigt !

zu 7. Wenn ich mir als Test-Board (Lochraster-Platine) eine ATmega8
zulege und dort die Entwicklung mache, bekomm ich dann arge Probleme
falls ich das Programm auf einen TINY laufen lassen möchte zwecks
Befehlsliste etc. ?


Also der PAP wurde bereits etwas unübersichtlich, da ich viel zu viel
Funktionen umsetzten wollte.....werd auf den Tipp eingehen und erst mal
kleine Brötchen backen (Lauflicht und danach langsame
Überblendung.......). Achso Timer-Programmierung ist auch neu für mich,
hab also noch etwas Input vor mir.

Gruß Martin

von Florian Wolling (Gast)


Lesenswert?

Hallo!
@Martin Huber:
Kannst Du das programm dann in die Codesammlung stellen, wenn es
irgendwann mal funktioniert?

MFG,
#################
Florian Wolling #
#################

von Steffen Burr (Gast)


Lesenswert?

Hallo Martin,

ich denke, dass es kein Problem sein sollte das Programm vom Mega8 auf
nen Tiny zu bringen. Ein paar kleine Änderungen und eben im Mega keine
Funktionen / Ports verwenden, die der Tiny nicht hat. Vorher mal ins
Datenblatt schauen. Wenn du es aber auf jeden Fall auf dem Tiny machen
willst, spricht nichts dagegen gleich das Programm darauf zu entwicklen
...

Anstatt Lochraster empfielt sich die Insvestition in ein Steckbrett. Du
kannst Schaltungen ohne Probleme abändern (kein Löten, ...).

Einen Transistortreiber solltest du nur dann verwenden, wenn du evtl.
mehrere LEDs gleichzeitig hinhängen willst (evtl. 4 Rote, ... um eine
größere Lichtausbeute zu bekommen).

Da die Tiny imho nur ein oder zwei Hardware PWM haben, solltest du das
ganze softwaremäßig lösen, was aber eigentlich kein Problem sein sollte
(unbedingt Timer verwenden)!

Viele Grüße
Steffen

von Martin Huber (Gast)


Lesenswert?

Hallo,

@Florian Wolling
Kann ich bzw. werd ich machen, auch wenn ich dann Gefahr laufe,
daß ich zumindest für das erste Programm in der Luft zerrissen
werde ( in die Richtung "das hätte man besser machen können ).

Bei dem Controller bin ich mir noch nicht sicher, ansonsten kann ich
mit Hilfe der jetzigen Information und den bestehenden Treads mal
anfangen. Als erste werde ich mich in die PWM- Geschichte reinarbeiten
(Software-Umsetzung mit Timer !!). Viel anderes kommt in meinem
Programm auch nicht vor :-), mal abgesehen von ein paar Schleifen und
der Taster Abfrage.

@Steffen
Nochmals vielen Dank für die Infos, und ja ich werde mehrere LED`s
anschließen (in de Final-Version) und hab bereits meinen
Arbeitskollegen eingespannt der macht dann die restliche Hardware   -->
das nennt man Arbeitsteilung ;-)


Also wünscht mir Glück
Gruß Martin

von thkaiser (Gast)


Lesenswert?

Du bekommst vielleicht den einen oder anderen Tipp, wie man es besser
machen könnte - aber in der Luft zerissen wurde noch niemand.
Jeder hat seinen eigenen Programmierstil. Möchte man seine Programme
auch anderen zugänglich machen, sollte man aber schon ein wenig auf
Übersichtlichkeit achten. Wichtig sind Kommentare - auch für Dich
selbst, denn nach einem Jahr kann man oft die eigenen Gedankengänge
nicht mehr nachverfolgen. Meine Programme bestehen teilweise zu 70% aus
Kommentar...

von Martin Huber (Gast)


Lesenswert?

Bin jetzt erst mal froh über die "Starthilfe"!
Was die Übersichtlichkeit angeht hab ich mich auch schon verarscht,
hab da noch einige Programme auf dem µP8085 mit wirklich verhungerten
Kommemtare. Heute weiß ich erst was ich davon habe :-(
Auf jeden Fall wäre ohne die Tipps ein µC entstanden der paralell ein
R-2R Netzwerk mit einem OP als Addierer anfährt (jeweils pro Frabe ).
Das kann ich mir jetzt alles sparen, und das Programm wird noch kleiner
und dadurch auch übersichtlicher.

von Florian Wolling (Gast)


Lesenswert?

Da findet man gute Hinweise (english) und Tutorials zum Timer
http://www.avrbeginners.net/

MFG,
################
Florian Wolling#
################

von Stefan (Gast)


Lesenswert?

Hallo Martin,

erstmal eine Page, wo viel über Leds steht, ich nehme mal an, dass Du
diese neuen Super-Power-Leds verwenden willst:

http://members.misty.com/don/ledx.html

Bei der Ansteuerung der Leds solltest Du im Hinterkopf behalten, dass
der optische Helligkeitseindruck nicht linear zur reingesteckten
Leistung steht, eher schon mit dem Quadrat. D.h.:

wenn die LED halb so hell wie bei "Full Power" erscheinen soll, dann
musst Du 25% der Leistung reinstecken,
wenn die LED 10% so hell erscheinen soll, nur 1% Leistung.

Entsprechend fein aufgelöst sollte Deine PWM sein.

Viel Spass, Stefan

von Martin Huber (Gast)


Lesenswert?

Hallo,

@Stefan
vielen Dank für den Tipp, werd mir gleich mal die Datenblätter saugen,
mal schauen was die Kennlinie sagt, falls vorhanden.
Wollte die Auflösung mit 8-bit machen, sollte reichen nur wenn die LED
dann Helligkeitssprünge macht ist das nicht so toll.

Weiß leider noch nicht welche Sorte ich verwende, hab aber ne gute
Internet-Page wo man alle Sorten günstig bekommt. Muss nur mal schauen
wer der Hersteller ist. Bei Conrad (Conrad hat schwer nachgelassen
dafür aber mit den Preisen angezogen was Bauteile angeht) oder Reichelt
kosten die Dinger "Schweine-Geld" und bei Pollin (der hatte welche in
einem Sonderheftchen) ist leider alles sehr schnell vergriffen bzw. auf
unbestimmte Zeit nicht vorrätig. Hab den Link leider nicht zur Hand,
aber wenn jemand interesse hat stell ich ihn gerne rein (ab Montag dann
!!).
Preislich liegen dort die LED`s bei ca. 1 EUR, meistens noch etwas
darunter.

Gruß Martin

von Stefan (Gast)


Lesenswert?

Hi Martin,

an dem Link habe ich grosses Interesse, demnächst mag ich auch mal was
mit LED-Beleuchtung machen (wenn mal wieder zeit ist ...).

8 Bit Auflösung sind im Prinzip ok, wenn Du die 8 Bit über eine Tabelle
in entsprechende PWM-Werte umsetzt:

ungefähr so :

const uint pwmtab[256] = { ..... }

Für solche Tabellen schreibe ich mir immer ein kleines C-Programm, das
mir die Werte in ein Textfile ausgibt.

Wenn Du die 8 Bit direkt auf die PWM ausgibst, dann siehst Du im
unteren Helligkeitsbereich große Sprünge, oben tut sich dagegen nicht
viel.

Stefan

von Martin Huber (Gast)


Lesenswert?

Hallo,

@Florian Wolling
Sieht so aus als "kämpfen" Wir mit dem gleichen Thema !

Hab mir jetzt mal ein paar Datenblätter angeschaut. Da ich im ersten
Schritt vorerst normale LED`s benutze und diese nahezu linear sind kann
ich dies vernachlässigen. Aber im Bezug auf die superhellen ist das
Verhältnis "Strom zu Spannung" doch nicht ganz unerheblich, hinzu
kommen noch Unterschiede zwischen den einzelnen Farben.
Erst mal muss ich das Thema PWM erschlagen :-).

@Stefan
Dein Vorschlag klingt gut, würde heißen das ich anhand einer Tabelle
mir die PWM- Werte so einlese und ausgebe das ich im "unteren"
Bereich eine feinere Auflösung habe die nach oben hin "gröber" wird
--> im Bezug auf die Kennlinie der LED. Würde aber auch heißen das ich
nicht alle Schrittweiten von 8-bit benötige! Zu der Tabelle hab ich
jedoch noch eine Frage, diese muss ich dann auf dem Controller ablegen,
im "worst case" jeweils eine Tabelle pro Farbe !?.... bin ich soweit
richtig mitgekommen ?


Gruß Martin

von Martin Huber (Gast)


Lesenswert?

Hallo,

hab den Eintrag nicht vergessen, nur den Link hatte
ich "verschlampt".

http://digital.eska-technik.com/shop/index.html

Gruß

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.