www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RGB LED + ADC


Autor: Roland (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Chris S. (hondaracer1)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Drachenbändiger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Roland (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Roland (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Roland (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.