www.mikrocontroller.net

Forum: Projekte & Code PWM-LED-Dimmer mit Attiny15


Autor: Paul Baumann (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich stelle Euch ein Programm vor, welches zum Dimmen von LED mittels 
zweier Taster oder eines Potentiometers von 47 Kiloohm dient. Dazu 
schließt man einen N-Kanal (Logik-Level) Leistungs-Mosfet über 47 Ohm an 
PB1 an.
Der Tiny 15 kann durch einen Tiny 25 ersetzt werden, eventuell müssen
dann einige Registernamen vor dem Assemblieren des Programmes geändert 
werden.

Ich habe es ausführlich kommentiert.

Hinweis: Ich bin nicht DER Assemblerprogrammierer d.h. es kann sicher 
auch anders gelöst werden, aber es funktioniert. ;-)

MfG Paul

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gebt bei Gelegenheit mal Rückmeldung, was ihr damit/daraus gemacht habt.

Denn:
Nichts ist schlimmer,
als ein defekter Dimmer.
Der geht manchmal,
doch nicht immer
und dann brennt das Zimmer!

:-)

MfG Paul

Autor: Stefan May (smay4finger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein erster Kommentar dazu: Du solltest Dir eine andere Formatierung 
angewöhnen. Man kann die Symbole von den Befehlen schwer unterscheiden. 
Ein Vorschlag von mir:
    .include "tn15def.inc"
    .def temp =r16
    .def pwm =r17
    .cseg
    .org $0000
;-------------------------
start:
    ldi temp,0x62
    ldi pwm,0x00        ; Setze erstmal "pwm" auf 0
    out TCCR1,temp      ; Lade Timerregister, damit PWM stattfindet
    ldi temp,0x00
    out OCR1A,temp      ; Setze einen Anfangswert in OCR1A
;-------------------------
Init_ad_wandler:
    ldi temp,0b00100010 ;8Bit Auflösung,AREF intern, linksbündig, AD Wandler an PB3
    out admux,temp
    ldi temp,0b11100011 ;ADC einschalten, freilaufend, Takt=1/4 CPU Takt
    out adcsr,temp
;-------------------------

Schön finde ich, daß Du Symbole nicht nur als Sprungadresse verwendest, 
sondern auch für Dokumentation. Man findet sofort die Initialisierung 
der Ausgänge.

Ansonsten hättest Du den Potentiometerbetrieb elegant auch mit Hilfe von 
Interrupts lösen können. Den Mikrocontroller hättest Du dann schön 
schlafen gelegt, während AD-Wandler und Timer für Dich arbeiten.

Funktioniert hat es bei mir Einwandfrei, eine schöne Basis, wenn man 
schnell einen PWM-Dimmer benötigt. Ich habe den FET übrigends durch 
einen LED-Treiber mit Enable-Eingang ersetzt: TLE4242.

mfg, Stefan.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, da hast Du recht; Deine Art der Formatierung ist übersichtlicher.
Das werde ich mir annehmen. Es freut mich, daß Du den Code nützlich 
fandest, weil es mir auch Ansp0rn ist, weiter mit Assembler zu arbeiten.

Normalerweise bin ich Bascom - Fan, aber hier "mußte" ich anders ran, 
weil
Bascom bei MC's ohne SRAM keine Variablen anlegen kann. :-(

Schöne Feiertage noch

Paul

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach so, der TLE4242 ist ja ein feines Ding, nur eben so klein, daß alte 
Männer ihn nicht mehr erkennen können. Grins

Paul

Autor: Stefan May (smay4finger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, so klein ist der gar nicht. Ist mit jedem ordentlichen 
Elektroniklötkolben zu löten. Schwieriger als DIL-Bauteile ist das gar 
nicht. Ein Nachteil: das Ding ist ein Linearregler, produziert 
entsprechend eine hohe Abwärme.

Dein Ausflug in die Assembler-Welt kann gar nicht schaden. Allerdings 
gehört auch der Tiny15 zu den aussterbenden AVRs und wird ersetzt durch 
den Tiny25 bzw. Tiny45 und Tiny85. Die sind dann auch wieder mit Bascom 
leicht zu programmieren, da sie SRAM besitzen.

mfg, Stefan.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiß, daß die neueren Typen SRAM haben, weil ich in letzter Zeit wie
ein "armer Irrer" Datenblätter gelesen und mit Übersetzungssoftware das 
Wichtigste in's Deutsche gebracht habe. Die Tiny 15 besaß ich noch und 
sie haben mich so geärgert (Fusebits waren bei den neuen Chips anders 
als im Datenblatt gesetzt Grumpf), daß ich sie unbedingt in Gang 
bringen wollte.

Ich werde mir mal ein paar TLE4242 bestellen, das scheint ja damit gut 
zu gehen. Die Frage ist bei mir immer: Woher weiß man, was es 
überhaupt für Schaltkreise gibt, die einem das Leben leichter machen 
können?

MfG Paul

Autor: Micha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo bekommt man den TLE4242? Ich finde das Teil weder bei Reichelt, C 
oder Kessler :-( oder ich habe noch Nachwirkungen von Silvester...

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe auch noch keinen Lieferanten gefunden. Im Moment habe ich 
Logik-
Level- Power-Mosfet dran hängen.

MfG Paul

Autor: Stefan May (smay4finger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Farnell wäre eine Quelle.

mfg, Stefan.

@Paul: sende mir mal eine PN

Autor: Ronnie-Snoop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute.
Ich muss jetzt zu diesen Tread auch ein paar Zeilen kritzeln.
Da ich mich erst seit kurzen mit der Thematik AVR abgebe (bin eigentlich 
aus der Nachbarwelt 8051) habe ich diesen extrem coolen Code gefunden.
Da ich wie gesagt aus der 8051 Ecke komme, ist das schon einen gewisse 
Umstellung auf AVR'S. Wobei ich schon der öffteren mal einen Syntax 
error habe. Ziemlich seltsam ist die Handhabung der FUSE-Bits jetzt habe 
ich schon einige tiny13+V die mal bekanntschaft mit einen HV-Progger 
machen wollen :)
Ich benutze den Code eignetlich um der Programmierung bzw die 
Registereinstellungen ein wenig auf die Spur zu kommen. Learning while 
doing... Damit der Code auch seinen Zweck erfüllt, treibt er zur Zeit 
eine 1Watt Luxor mit Strombegrenrung an einen 7.2V Akku.

Ronnie

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.