PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schaltung mit ATtiny13 und stufen dimmer 30 - 50 - 100 Mit Fototransistor



Der bastler
13.09.2020, 22:10
Hallo Forum und bastler

Ich habe stunden verbracht und bei der lieben suchmaschine nichts passendes gefunden, jetzt gfrage ich euch....

Habe eine Led Befehle anzeigt und doch recht hell ist in dunkel, und mochte es mit einen ATtin13 und Fototransistor in stufen Abregelt automatisch.
in 25% 50% 100%
Dunkel ( also kein licht an ) 25% wenn Licht brennt 50%, und am tag 100%

Ich finde keine Schaltung oder Änliches Bitte Hilft mir

So wie im LED Uhren radio es ist...

Danke

Ach so dimmerschaltung wie diese habe ich --->

$regfile = "attiny13.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 0
$framesize = 0


Config Portb.2 = Input 'LDR
Config Portb.0 = Output 'LED o. Realis
Led_realis Alias Portb.0

Dim Analogwandler As Word 'variable zur Aufnahme des wertes von Analogwandler

Config Adc = Single , Prescaler = Auto , Reference = Avcc 'Analogwandler definieren

Do
Analogwandler = Getadc(1)

If Analogwandler < 180 Then Led_realis = 1 'Dunkel -> LED/Realis an

If Analogwandler > 400 Then Led_realis = 0 'Hell -> LED/Realis aus

Loop
End

Vielen Dank

Gnom67
14.09.2020, 07:05
Welche Programmiersprache ist das? Probier mal etwas in der Art:

If Analogwandler < 180 Then Led_realis = 100 'Dunkel -> LED/Realis hell
Else If Analogwandler < 400 Then Led_realis = 75 'heller -> LED/Realis dunkler
Else If Analogwandler < 800 Then Led_realis = 50 'noch heller -> LED/Realis noch dunkler
Else Led_realis = 25 'ganz hell -> LED/Realis ganz dunkel

Für die LEDs benötigst du ein PWM-Signal.
Mit einem Relais funktioniert das nicht.

Der bastler
14.09.2020, 08:24
Moin Das ist Bascom und ich habe ja auch gesagt das ich eine Dimmerschaltung habe die auch Funktoniert wie ich den code gepostet habe..

Oh ich sehe was ups,
das ist Falsch
If Analogwandler < 180 Then Led_realis = 100 'Dunkel -> LED/Realis an
If Analogwandler > 400 Then Led_realis = 20 'Hell -> LED/Realis aus

So Sollte es sein
If Analogwandler < 180 Then Led_realis = 1 'Dunkel -> LED/Realis an
If Analogwandler > 400 Then Led_realis = 0 'Hell -> LED/Realis aus

Und ich möchte es aber irgendwie habe das es nich tganz ausschaltet......

So Danke wahr späz gestern

Andree-HB
14.09.2020, 08:50
...also mit dimmen hat das ja nix zu tun, mit stufenlos auch nix. ;-)

Schaue mal hier:
http://www.dieelektronikerseite.de/uC%20Ecke/Lections/PWM-Steuerung%20-%20Blinkendes%20Dauerleuchten.htm

Und "baue" statt den Tastern dort die Variable von Deinem Analogwandler/Lichtsensor ein

Der bastler
14.09.2020, 10:48
Moin Andree-HB

Ich habe mir was zurecht gebastelt mit einen ( ATtiny2313 ) Später ATtiny13 werden
Hier mein Code, irgendwie kommt und passiert nichts ähm....


$regfile = "attiny2313.dat"
$crystal = 8000000
$hwstack = 40
$swstack = 16
$framesize = 32


Dim Pwmval As Byte


Config Portb.1 = Output
Config Portb.0 = Input


Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1
Portb.0 = 1
Compare1a = 255
Pwmval = 50


Do
If Pinb.0 = 0 Then
If Pwmval < 255 Then Incr Pwmval
Waitms 50 : Compare1a = Pwmval
End If

If Pinb.0 = 0 Then
If Pwmval < 180 Then Incr Pwmval
Waitms 50 : Compare1a = Pwmval
End If

If Pinb.0 = 0 Then
If Pwmval < 100 Then Incr Pwmval
Waitms 50 : Compare1a = Pwmval
End If

If Pinb.0 = 0 Then
If Pwmval > 50 Then Decr Pwmval
Waitms 50 : Compare1a = Pwmval
End If
Loop

Der bastler
19.09.2020, 15:48
Juhu Gibt es Tips oder Ratschläge
Bin Offen für eure tipps

Siro
19.09.2020, 16:48
Sorry, ich glaube ich hab den Prozessor/Programmiersprache nicht richtig verstanden,
daher habe ich meinen Beitrag gelöscht um keine Falschinformation zu verbreiten....

Siro

Der bastler
19.09.2020, 17:51
Hallo Siro

Da ich eine Mail erhalte wie andere auch hab ich mir es durchgelesen und fand es interriesant.
aber danke

Gnom67
19.09.2020, 23:02
Wenn ich halbwegs richtig verstehe, was dein Code machen soll, dann willst du abhängig von der Umgebungshelligkeit deine LED in 50-ms-Schritten runter oder hochdimmen?

Dein Code ist irgendwie unsinnig. Der Ausgangswert von Pwmval ist 50 - Dein Programm müsste jeweils dreimal incrementieren und dann einmal decrementieren. Nach ca. 10 Sekunden müsste 100 erreicht sein, dann müsste das Programm jeweils zweimal incrementieren und einmal decrementieren bis nach 12 Sekunden der Wert 180 erreicht ist. Dann wird je einmal incrementiert und einmal decrementiert - so dass nichts mehr passiert.

Ich nehme an, dass du an irgendeiner anderen Stelle den Phototransistor ausliest und damit feststellst, ob es dunkel, normal oder taghell ist. Abhängig davon soll dann die LED auf 25%, 50% oder 100% hoch oder runter dimmen... also sie soll nicht schlagartig die Helligkeit ändern, sondern in 50-ms-Schritten rauf oder runter dimmen...?

Ich würd das mal in dieser Art probieren:



Pwmsoll = 128 //testweise mal 50%
Compare1a = 0

Do
If Compare1a < Pwmsoll : Incr Compare1a //falls Incr nicht auf das Regsiter anwendbar ist, müsste es mit Compare1a = Compare1a + 1 gehen
Else If Compare1a > Pwmsoll : Decr Compare1a // dito Compare1a = Compare1a - 1
End IF
Waitms 50

// hier ggf. Phototransistor auslesen und das neue Pwmsoll bestimmen, ungefähr so:

If Photo < 300 : Pwmsoll = 50
Else If Photo < 750 : Pwmsoll = 128
Else : Pwmsoll = 256

Loop

So müsste die LED von dunkel auf halbe Helligkeit hochdimmen - innerhalb von ca. 6,4 Sekunden.
Ich kenn mich mit Bascom nicht aus, insofern ist das nur pseudocode.

Noch einfacher wäre es, wenn du den Wert für Comparea1 aus dem Inputwert des Phototransistors direkt berechnest. Dann kannst du dir das Ganze hier sparen
(Pwmcompare = 1/3 Wurzel aus Photo + 0,17 Photo + 25 oder sowas.... vielleicht ist es auch viel einfacher - linear oder so. Da müsstest du halt mal den Phototransistor ausmessen, was der für Werte liefert.)