Forum: Mikrocontroller und Digitale Elektronik RGB LED + ADC


von Roland (Gast)


Lesenswert?

Hallo liebe leute!

Ich hab ein Problem, das für viele von euch bestimmt ein klax ist.

in weit entfernter zukunft möchte ich einen rgb led würfel basteln.
zuerst liegt mein problem jedoch darin, die 3 leds der rgb led einzeln 
per pwm zu dimmen.

ich möchte 3 potis an einen atmega8 anschließen und damit die rgb led 
dimmen, um mir selbst farben mischen zu können.
entweder bin ich zu blöd (danke jetzt schon für die kommentare, die mir 
das bestätigen) oder ich check da irgendwas nicht.

im endeffekt soll einfach der ad gewandelte wert als timer reloadwert 
übernommen werden und damit die helligkeit (farbe) bestimmen.

geht das überhaupt?
kann ich mit dem mega8 überhaupt mehrere ad-werte von potis übernehmen?

danke schon mal

ps: ich programmier im assembler (C sagt mir abgesehn von den 
schulkenntnissen nix)

von Chris S. (hondaracer1)


Lesenswert?

hm, selber hab ich das noch nicht gemacht, aber ich halte es fuer nicht 
besonders sinnvollen. Wenn du eh 3 potis zum einstellen der farben 
nehmen willst dann kannst du die postis doch auch gleich als 
vorwiderstaende fuer die leds direkt nehmen. Da kommst du doch auf das 
gleiche hinaus ohne programmieren zu koennen.
Ich wuerde es mit nur einem poti am AD eingang versuchen und den rest 
per software machen.
Wenn der atmega allerdings nur die aufgabe hat leds zu dimmen koenntest 
du ja auch ein drehrad als impulsgeber am interrup eingang, dann 
brauchst du den AD eingang nicht pollen und koenntest theoretisch auch 
in nen schlafmodus gehn mit deinem RGB ding.
Was ist die richtige bezeichnung eines "drehrad impulsgebers"? falls 
jemand nicht weis was ich mein, z.b. die drehknoepfen in einigen 
autoradios die man ewig drehen kann um die lautstaerke einzustellen

C brauchst du nicht wenn du nur ein paar leds ansteuern willst. Ich hab 
erfahrung sowohl mit C als auch mit assembler und ich muss sagen das ich 
sachen wie lauflichter lieber mit assembler als mit C programmiert hab.

von Drachenbändiger (Gast)


Lesenswert?

@Roland,

klar kannst Du das so machen. Um erst einmal ein Gefühl für die 
Farbmischung zu bekommen, bin ich früher einmal ebenso vorgegangen. 
Also: 3 Potis mit den Endabgriffen zwischen Masse und Vcc, Mittelabgriff 
an je einen ADC, dann die ADC-Werte so skalieren, dass sie als Eingabe 
für je einen der Timer/Counter zur PWM-Erzeugung geeignet sind. Die 
PWM-Signale (über Vorwiderstand!) mit R, G, B verbinden - fertig!

Was klappt bei Dir denn daran nicht?

von Roland (Gast)


Lesenswert?

hi

danke schon mal für die infos!

ich denke, bei mir fehlt der background in punkto ADC... da sollt ich 
mich nochmal einlesen, wie man das macht, dass man 3 verschiedene kanäle 
wandelt.
bisher hab ich immer nur 1 poti an 1 pin gewandelt.

wenns was geworden ist, meld ich mich, wenn nicht, werd ich mich 
wahrscheinlich auch nochmal melden G


danke nochmal

lg

von Karl H. (kbuchegg)


Lesenswert?

Roland schrieb:
> hi
>
> danke schon mal für die infos!
>
> ich denke, bei mir fehlt der background in punkto ADC... da sollt ich
> mich nochmal einlesen, wie man das macht, dass man 3 verschiedene kanäle
> wandelt.
> bisher hab ich immer nur 1 poti an 1 pin gewandelt.

Geht völlig analog.
Nur stellst bei jedem Wandelvorgang einen anderen Kanal ein. Das wars 
dann auch schon.
Gleichzeitig messen geht nicht. Aber man kann natürlich 3 verschiedene 
Kanäle nacheinander messen.

PS: Die PWM mittels Timer-Reload Wert zu erzeugen ist zwar eine gute 
Übung (die du unbedingt machen solltest), aber letztenendes bringt dich 
das deinem Ziel nicht näher.

von Roland (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> PS: Die PWM mittels Timer-Reload Wert zu erzeugen ist zwar eine gute
> Übung (die du unbedingt machen solltest), aber letztenendes bringt dich
> das deinem Ziel nicht näher.

wie soll ich die pwm denn sonst erzeugen, wenn ich nicht die reloadwerte 
verändere?


dank, lg

von Karl H. (kbuchegg)


Lesenswert?

Roland schrieb:
> Karl heinz Buchegger schrieb:
>> PS: Die PWM mittels Timer-Reload Wert zu erzeugen ist zwar eine gute
>> Übung (die du unbedingt machen solltest), aber letztenendes bringt dich
>> das deinem Ziel nicht näher.
>
> wie soll ich die pwm denn sonst erzeugen, wenn ich nicht die reloadwerte
> verändere?

Indem du den Timer durchlaufen lässt und in der ISR einen Zähler 
etablierst mit dem du die PWM realisierst. Anders wird es ziemlich 
aufwändig viele PWM-Stufen zu erzeugen. Es ist zwar möglich, aber in 
Assembler würde ich mir das nicht antun.

Studiere das hier
http://www.mikrocontroller.net/articles/AVR-Tutorial:_PWM
(Abschnitt: PWM in Software)

und dann das hier
http://www.mikrocontroller.net/articles/AVR-Tutorial:_SRAM
(mehr PWM Stufen als Register in der CPU vorhanden)

von Roland (Gast)


Lesenswert?

danke ...

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.