-
du meinst die Software ?
Hier mal ein einfaches Testprogramm
Damit kannste etwas Experimentieren.
Mit den Zeilen
"Ocr1a = A" und "Ocr1b = A" wird der jeweilige Wert (0-255 für 0-100%) gesetzt.
Code:
'PWM Test für Attiny26
'Je eine LED von Pin B0-3 nach masse.
$regfile = "At26def.dat"
$crystal = 1000000
Dim A As Byte
Tccr1a = &B01010011 'Manuelle Konfiguration von OC1a
Tccr1b = &B10000101 'Manuelle Konfiguration von OC1b
Ocr1c = 255
'Ddrb.0 = 1 'Port b.0 als Ausgang
'Ddrb.1 = 1 'Port b.1 als Ausgang
'Ddrb.2 = 1 'Port b.2 als Ausgang
'Ddrb.3 = 1 'Port b.3 als Ausgang.
Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Do
Gosub Pwm
Loop
Pwm:
For A = 0 To 255
Ocr1a = A
Ocr1b = A
Waitms 2
Next
Return
End
-
Danke Ratber, ich werds mal ausprobieren!
-
*Ausgrab*
Habe nun die Schaltung fertig und auch den Controller schon beschrieben. Nur leider läuft mein Lüfter durchgehend auf 12V (genauer gesagt 11,97V ^^). In der Schaltung habe ich keinen Fehler gefunden und wenn ich das Programm simuliere, funktioniert es auch. Außerdem müsste ja zumindest der Taster "An/Aus" funktionieren.
Hier einmal der Code, vllt ist ja einfach nur ein kleiner Fehler drin... wenn ihr wollt, kann ich auch Fotos von der Schaltung machen ;)
Code:
'Definitionen & Konfigurationen
$regfile = "at15def.dat"
$tiny
Config Pinb.6 = Output
Config Pinb.2 = Input
Config Pinb.3 = Input
Config Pinb.4 = Input
'Timer
Tccr1 = &B01010011
Tcnt1 = &B10000111
Ddrb.1 = 1
'Aliases
Ausgang Alias Pinb.6
Tasterhoch Alias Pinb.2
Tasterrunter Alias Pinb.3
Tastervoll Alias Pinb.4
'Variablen
Dim Aout As Iram Byte
Dim Bvar As Iram Byte
Dim Cfull As Iram Byte
Dim Bouncer1 As Iram Bit
Dim Bouncer2 As Iram Bit
Dim Bouncer3 As Iram Bit
'Var-Werte
Bvar = 10
Cfull = 255
Aout = 150
'Programm
Do
'Spannungserhöhung
If Tasterhoch = 0 And Bouncer1 = 0 Then
If Aout > 245 Then
Aout = Cfull
Else
Aout = Aout + Bvar
End If
Else
nop
Bouncer1 = 1
End If
If Tasterhoch = 1 Then
Bouncer1 = 0
End If
'Spannungsverminderung
If Tasterrunter = 0 And Bouncer2 = 0 Then
If Aout < Bvar Then
Aout = 0
Else
Aout = Aout - Bvar
End If
Else
nop
Bouncer2 = 1
End If
If Tasterrunter = 1 Then
Bouncer2 = 0
End If
'Volle 12V
If Tastervoll = 0 And Bouncer3 = 0 Then
If Aout = Cfull Then
Aout = 0
Else
Aout = Cfull
End If
Else
nop
Bouncer3 = 1
End If
If Tastervoll = 1 Then
Bouncer3 = 0
End If
Loop
End
-
Ja ,wundert auch nicht.
Ich dachte das hatte ich schon erwähnt.
Nicht den Pin ansteuern sondern den Timer über seine Register.
Mit
Compare1a = 100
oder
Pwm1a = 100
oder
OCR1A =100
Gehts dann auch.
-
D.h. mit der Konfiguration sollte der Lüfter sich nicht drehen:
Code:
'Definitionen & Konfigurationen
$regfile = "at15def.dat"
$tiny
Config Pinb.1 = Output
'Timer
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 64
Do
Ocr1a = 0
End
Loop
ersetzte, sollte sich der Lüfter nicht drehen oder? Oder wie setzt man Ocr1a ein?!
-
Ja genau.
0 = 0% also ständig Low.
255 =100% ständig High.
Die Werte dazwischen ergeben ein entsprechendes Tastverhältnis.
aber oben in dem Tiny26 Beispiel kannste dir das nochmal anschauen.
-
Hm komischerweise dreht sich auch der Lüfter, auch wenn der Code wie oben gepostet auf den Chip geschrieben ist. Einen Fehler in der Schaltung kann ich nicht entdecken, kann es sein, dass vllt. einer im Schaltbild ist? ;)
-
Kann ich dir sagen wenn du mir sagst was du denn nun aufgebaut hast.
-
Habe exakt deine Schaltung nachgebaut. Für die PWM habe ich einen 100nF Kondensator und einen 820Ohm Widerstand benutzt.
-
Dann lass die RC-Kombi erstmal weg und schau ob das PWM läuft.