- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 1 von 8 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 79

Thema: SMD RGB LED´s mit PWM; ATmega168 / Probleme mit dem EEprom

  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    63
    Beiträge
    2.543

    SMD RGB LED´s mit PWM; ATmega168 / Probleme mit dem EEprom

    Anzeige

    Praxistest und DIY Projekte
    hi,

    ich möchte gerne mehrere parallel geschaltete RGB-LED´s mit jeweils 20mA/Farbe per Software-PWM bei einem ATmega8 automatisiert in den drei Grundfarben (RGB) dimmen.

    Es soll für eine Beleuchtung mit "Regenbogen-Farbverlauf" sein.


    Was mir noch ein wenig zu schaffen macht (bin AVR-Neuling) ist das Prinzip.
    Um den entsprechenden Syntax kümmere ich mich dann beim Programmieren.



    Dazu benötige ich einen Timer (Timer 0; zählt bis 255 und dann erfolgt der Überlauf)

    Bei einem 8 MHz Quarz bekomme ich mit einem Prescale von 64 eine Frequenz von: 8.000.000/64/256/ = 488 Hz.

    Beim Überlauf wird eine Interrupt aufgerufen in dem eine Variable (z.B: 8-Bit) hochgezählt wird.

    Diese Variable ist mein Zähler!


    In der Interruptroutine werden Variablen für "R"; "G"; "B" mit dem Zähler verglichen (IF; THEN; ELSE).
    Ist der Zähler niedriger als die Variable für die LED-Farbe wird der Port für die entsprechende LED eingeschaltet.
    Ist der Zähler höher als die Variable für die LED-Farbe wird der Port für die entsprechende LED ausgeschaltet.

    Die Variable für die LED kann ich dann im Hauptprogramm setzen.


    Richtig so? oder habe ich noch einen elementaren Denkfehler?




    Könnte ich als "Leistungsteil" für die LED´s einen einfachen Darlington Transistor z.B:

    BD 675 A NPN TO225 AA 45 V 4 A

    verwenden oder gehört da mehr dazu?
    Pro Leistungsstufe (Farbe) sollen max. 50 LED´s zu je 20mA geschaltet werden.



    Mal Dank für eure Hilfe \/


    liebe Grüße,

    Klingon77
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    06.07.2007
    Alter
    37
    Beiträge
    81
    Hallo,

    vom Prinzip her richtig (siehe z.B. Assembler-Tutorial bei mikrocontroller.net)
    Allerdings musst du deinen Takt nochmal durch 256 (bei 8 bit) teilen.
    Somit wäre die Frequenz zu niedrig - mehr als 100 Herz solltens schon sein damit die LED bei niedrigem Tastverhältnis auch nicht bklinkt!

    Für die Leistungstreiber kannst du auch n Transistorarray nehmen(Wenn der gegen GND schaltet kannst du die LED-Spannung erhöhen.
    Ansonnsten könnte man noch n MosFET nehmen!

    MFG Mixxer

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    63
    Beiträge
    2.543
    hi,

    mal Dank für die rasche Bestätigung.

    Das Vorgehen habe ich aus dem AVR-Tutorial abgeleitet.

    Die Formel für die Frequenzberechnung wäre dann:

    Quarztakt / Prescale / 8-Bit Timer / 8 Bit Variable?

    Richtig so?


    Wenn ich bei dieser Formel rechne könnte ich auch:

    8.000.000 / 1 / 256 / 256 = 122 Hz.

    Bleibt denn dann noch Rechenzeit für das Hauptprogramm?


    liebe Grüße,

    Klingon77
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    06.07.2007
    Alter
    37
    Beiträge
    81
    Hallo,

    Ja, so kannst du die PWM-Frequenz berechnen.

    Es wird dann alle 256 Takte die Interrupt-Routine für die SW-PWM aufgerufen. Die ist normal sehr schlank (variable hochzählen, 3x vergleichen) und braucht nur wenige Takte. Den Rest kann der AVR im Hauptprogramm arbeiten!

    Was für einen AVR möchtest du verwenden?
    Bei nem Mega88 z.B. könnte die PWM mit Hardware gemacht werden (der hat 6 Kanäle)

    MFG Mixxer

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    63
    Beiträge
    2.543
    hi,

    nun habe ich mir den Atmega88 angeschaut.
    6 x PWM; feine Sache.


    Als ich dann weitergeschaut habe sah ich den ATmega168.

    16 KB Flash
    23 I-O Port´s
    1 * 16 Bit Timer
    2 * 8 Bit Timer
    20 MHz Taktfrequenz möglich
    Kostet bei Conrad 5€; gibt es sicherlich auch günstiger.

    Wie wäre es damit?


    Was ich möchte (Pflichtenheft):

    * RGB-LED´s in den einzelnen Farben unhabhängig voneinander mit PWM reglen.
    * 3-5 Taster zur Eingabe anschließen
    * 1 vierzeiliges LCD-Display zur Ausgabe anschließen und betreiben.

    Das sollte doch mit dem ATmega168 möglich sein?


    liebe Grüße,

    Klingon77
    (der nun noch ein wenig über Hardwar-PWM lesen muß, damit er weiter fragen kann).
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    06.07.2007
    Alter
    37
    Beiträge
    81
    Hallo,

    Atmel`s sind bei Conrad sowieso viel teurer als anderswo. Schau mal bei Reichelt oder CSD, da sind die viel günstiger!

    Ja, das ist mit nem ATmega168 leicht möglich. Es würde auch ein Mega88 oder Mega48 reichen. Für so ein Projekt ist normal nicht viel Flash nötig.

    MFG Mixxer

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    63
    Beiträge
    2.543
    hi,

    mal Dank für Deine Hilfe \/

    Nun werde ich nochmal ein wenig lesen und mich dann gerne nochmal melden.


    liebe Grüße,

    Klingon77
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.678
    Zitat Zitat von Klingon77
    ... sah ich den ATmega168 ... gibt es sicherlich auch günstiger ... Wie wäre es damit ...
    Mein Standard-(Lieblings-)controller ist der m168. Auch wenn der bei mir manchmal etwas oversized verwendet wird. Softwaremässig ist es pflegeleichter, wenn man erst mal die verschiedenen hardwarespezifischen Routinen griffbereit hat. Der ATMEGA168-20PU (und der ~AU --- aber ich glaub nicht, daß Du Dir den antun willst) kosten beim CSD aktuell 275. Versandkosten sind dort niedrig, vermutlich um 3.- und Mindermengen kennt er nicht.

    Ein LCD habe ich schon daran betrieben (dieses Zweizeiligen von Andree-HB) - braucht gerade mal sieben Portpins. Dazu könnte ich Dir helfen. Es blieben also noch 11 Pins (bzw. 13 Pins wenn Du kein USART brauchst) übrig.
    Ciao sagt der JoeamBerg

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Klingon77
    Registriert seit
    26.09.2006
    Ort
    Hunsrück
    Alter
    63
    Beiträge
    2.543
    hi,

    mal Dank für Eure Hilfe \/

    Nun werde ich nochmal ein wenig lesen und mich dann gerne nochmal melden.


    liebe Grüße,

    Klingon77
    Der kürzeste Weg zwischen zwei Menschen ist ein Lächeln - http://www.ad-kunst.de

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.112
    Hi!
    Ich kann auch nur die HardwarePWM empfehlen. Damit wird das fast ein 3-Zeiler:
    Timer aktivieren und einstellen (einmal in der Init)
    OutPutCompare Unit aktivieren und einstellen (einmal in der Init)
    IRQs initialisieren (einmal in der Init)
    Und dann brauchst Du nur noch entsprechende Werte in die OCR-Register zu schreiben, um das Tastverhältnis einzustellen. Das kann zu jeder Zeit geschehen.
    Die Sache benötigt im Hauptprogramm auschließlich die Zeit zum Ändern der OCRWerte.
    Dafür würde auch der Mega8 ausreichen, weil Du ja nur 3 PWM Kanäle brauchst. Allerdings musst Du prüfen, ob du die Pins nicht noch für was anderes brauchst und Du dann doch lieber den Mega88 nimmst.
    Der Transistor sollte gehen (Basisvorwiderstand nicht vergessen), ein FET, zB IRL3803 wäre auch ok, dann wird auch nichts warm. Mit einem Widerstand vor zwischen Gate und µCAusgang (zB 200Ohm) und von Gate nach GND (10k). Beim BD sind es schon rund 3Watt, die Du wegkühlen musst, wenn ich das auf die schnelle richtig gelesen habe.
    Gruß

Seite 1 von 8 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test