Archiv verlassen und diese Seite im Standarddesign anzeigen : Schaltung mit ATtiny13 und stufen dimmer 30 - 50 - 100 Mit Fototransistor
Der bastler
13.09.2020, 23: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
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, 09: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, 09: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, 11: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, 16:48
Juhu Gibt es Tips oder Ratschläge
Bin Offen für eure tipps
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, 18:51
Hallo Siro
Da ich eine Mail erhalte wie andere auch hab ich mir es durchgelesen und fand es interriesant.
aber danke
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.)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.