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


von Paul Baumann (Gast)


Angehängte Dateien:

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

von Paul Baumann (Gast)


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

von Stefan M. (Gast)


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:
1
    .include "tn15def.inc"
2
    .def temp =r16
3
    .def pwm =r17
4
    .cseg
5
    .org $0000
6
;-------------------------
7
start:
8
    ldi temp,0x62
9
    ldi pwm,0x00        ; Setze erstmal "pwm" auf 0
10
    out TCCR1,temp      ; Lade Timerregister, damit PWM stattfindet
11
    ldi temp,0x00
12
    out OCR1A,temp      ; Setze einen Anfangswert in OCR1A
13
;-------------------------
14
Init_ad_wandler:
15
    ldi temp,0b00100010 ;8Bit Auflösung,AREF intern, linksbündig, AD Wandler an PB3
16
    out admux,temp
17
    ldi temp,0b11100011 ;ADC einschalten, freilaufend, Takt=1/4 CPU Takt
18
    out adcsr,temp
19
;-------------------------

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.

von Paul Baumann (Gast)


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

von Paul Baumann (Gast)


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

von Stefan M. (Gast)


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.

von Paul Baumann (Gast)


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

von Micha (Gast)


Lesenswert?

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

von Paul Baumann (Gast)


Lesenswert?

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

MfG Paul

von Stefan M. (Gast)


Lesenswert?

Farnell wäre eine Quelle.

mfg, Stefan.

@Paul: sende mir mal eine PN

von Ronnie-Snoop (Gast)


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

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.