Nach einer Grundidee von Tim Sasdrich
|
Anz. |
Bezeichnung |
Datenblatt |
|
1 |
Batterie/Spannungsquelle 9V |
|
|
1 |
Spannungsregler 7805 |
 |
|
1 |
ATMega8 AVR-Prozessor |
 |
|
1 |
Widerstand 220 Ohm |
|
|
1 |
Widerstand 10 kOhm |
|
|
1 |
Elektrolytkondensator 100 µF/16V |
|
|
1 |
Kondensator 100nF |
|
|
1 |
Mikrotaster |
 |
|
1 |
Standard-Leuchtdiode 3mm oder 5mm |
3mm,
5mm |
Programmierten ATtiny26 bei DES bestellen |
Bauteileset mit leeren AVR bei DES bestellen |
Bauteileset mit programmierten AVR bei DES
bestellen |
Mit Hilfe von Mikrokontrollern lassen sich sehr schön
PWM-Dimmer aufbauen. Um die Bedienung erheblich zu vereinfachen, wäre es ratsam,
nur einen Taster zu verwenden.
So einen Dimmer stellt diese Schaltung dar. Mit S1
wird das Licht heller oder dunkler geregelt. Lässt man den Taster los und
betätigt erneut, wird die Lichthelligkeit in die andere Richtung geregelt. Das
Gleiche passiert auch, wenn die Endhelligkeit bzw. Dunkelheit erreicht wird.
Soll das Licht schnell ein- bzw. ausgeschaltet werden
so reicht es aus, den Taster kurz anzutippen.
Ist die LED aus, geht der AVR nach einer kurzen Weile
in den Stromsparmodus. Beim drücken dies Tasters wird dieser wieder aufgeweckt
und arbeitet normal weiter.


|
$regfile = "Attiny26.dat"
$crystal = 1000000
Dim Hell As Word
Dim An As Word
Dim Aus As Word
Dim Pressed As Word
Dim Neu As Word
Dim Heller As Word
Dim Dunkler As Word
Dim Pwm As Word
Dim Analog As Word
Dim Dimm As Word
' Festlegen der Starthelligkeit beim antippen des Tasters
' 0=Dunkel, 255=Hell
Const Starthelligkeit = 255
Config Portb.0 = Output
Config Portb.6 = Input
Tccr1a = &B01010011 : TCCR1B = &B10000101 : OCR1C = 255
Ocr1a = 255 : Portb.6 = 1
An = 0 : Neu = 0 : Pwm = 255
Hell = 255 - Starthelligkeit
Dunkler = Hell
If Dunkler = 0 Then Dunkler = 255
Do
If Pinb.6 = 0 Then
Incr Pressed : Waitms 1 : Neu = Heller
End If
If Pwm = 0 Then Heller = 0
If Pwm = 255 Then Heller = 1
If Pressed > 250 Then
If Heller = 0 Then Incr Pwm Else Decr Pwm
Waitms 30
End If
If Pinb.6 = 1 And Pressed > 0 And Pressed < 250 Then
If Pressed < 50 Then
If Pwm = 0 Then
Do
Incr Pwm : Ocr1a = Pwm : Waitms 5
Pressed = 0 : Neu = 1 : An = 1
Loop Until Pwm = Dunkler Or Pinb.6 = 0
Else
Do
Decr Pwm : Ocr1a = Pwm : Waitms 5
Pressed = 0 : Neu = 0 : An = 1
Loop Until Pwm = 0 Or Pinb.6 = 0
End If
Elseif An = 1 Then
Do
Incr Pwm : Ocr1a = Pwm : Waitms 5
Pressed = 0 : Neu = 1 : An = 0
Loop Until Pwm = 255 Or Pinb.6 = 0
Else
Do
Decr Pwm : Ocr1a = Pwm : Waitms 5
Pressed = 0 : Neu = 0 : An = 1
Loop Until Pwm = Hell Or Pinb.6 = 0
End If
If Pinb.6 = 0 Then Pressed = 250
Elseif Pressed > 0 And Pinb.6 = 1 Then
If Neu = 1 Then Heller = 0
If Neu = 0 Then Heller = 1
Pressed = 0 : Waitms 100
End If
If Pwm = 255 Then An = 0 Else If Aus > 5 Then An = 1
Incr Aus : Ocr1a = Pwm
Loop |