Forum: Mikrocontroller und Digitale Elektronik Flackern von KSQ mit ATtiny84


von mdorenka (Gast)


Lesenswert?

Hallo,

ich habe mir eine Schaltung zum dimmen von meinen Schreibtischlampen 
aufgebaut.

Schaltungsaufbau:
-----------------
Bei den Lampen handelt es sich um diese hier: 
http://www.ikea.com/de/de/catalog/products/60213782/
Standardmäßig haben sie eine KSQ im steckernetzteil integriert, welche 
700mA liefert bei ca 5V.

Meine idee war nun diese zu ersetzen durch eine eigene KSQ mit PWM 
Eingang.
Also habe ich hier im wiki etwas gesucht und bin hierauf gestoßen: 
http://www.mikrocontroller.net/articles/Datei:Power-LED_Stromquelle.png
Diese Schaltung basiert auf diesen Modulen hier: 
http://www.mikrocontroller.net/articles/Konstantstromquelle_fuer_Power_LED#Fertigmodul

Zum ansteuern habe ich einen ATtiny84 gewählt. Programmiert ist das 
ganze mit dem Arduino Framework und läuft auf 8mHz Internal Clock.

Als Stromversorgung dient ein altes PC-Netzteil
-----------------



Nun zum eigentlichen Problem:
In den Leistungsbereichen mit <15% oder >85% Duty-Cycle sieht das ganze 
recht ordentlich aus. Bei ~50% jedoch flackert das ganze echt herb.



Hat einer von euch eine Idee woher das kommt und wie ich das vor allem 
beheben kann?

Viele Grüße,
Marcel

von Stefan (Gast)


Lesenswert?

Ist die PWM Frequenz angemessen?

von mdorenka (Gast)


Lesenswert?

wie stelle ich das fest?

von Stefan (Gast)


Lesenswert?

Die Frequenz bestimmt das Programm durch Konfiguration der Register des 
Timers. Welche Frequenz angemessen ist, steht in dem von Dir gelinkten 
Artikel (100-300Hz).

von mdorenka (Gast)


Lesenswert?

Oh da koennte schon der fehler sein... ich hab khz gelesen ;) ich 
berichte gleich nach dem testen

von mdorenka (Gast)


Lesenswert?

ok also es liegt an der frequenz.
jetzt muss ich nurnoch aus dem UC eine adäquate frequenz zaubern - ohne 
logic analyzer ganz schön müßig :/

von mdorenka (Gast)


Lesenswert?

für alle die es interessiert:

Fuse-Bits
clock auf internal 8mhz
clock prescaler auf 8

Timer Konfiguration:
timer0 clock prescaler auf 8
timer1 clock prescaler auf 1


hier der entsprechende code
1
void setup()  { 
2
  TCCR0B = TCCR0B & 0b11111000 | 0x2;
3
  TCCR1B = TCCR1B & 0b11111000 | 0x1;
4
} 
5
6
void loop()  { 
7
  for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=1) { 
8
    analogWrite(7, fadeValue);         
9
    analogWrite(6, fadeValue); 
10
    delay(5);                            
11
  } 
12
13
  for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=1) { 
14
    analogWrite(7, fadeValue);  
15
    analogWrite(6, fadeValue);     
16
    delay(5);                            
17
  }
18
}

von Falk B. (falk)


Lesenswert?

@mdorenka (Gast)

>jetzt muss ich nurnoch aus dem UC eine adäquate frequenz zaubern - ohne
>logic analyzer ganz schön müßig :/

Nö, ein wenig Grundrechenarten und die richtige Einstellung für den 
Timer reicht.

von Marcel D. (Gast)


Lesenswert?

leider bin ich durch die libraries von arduino nicht ganz 
durchgestiegen, deswegen der explorative ansatz. es funktioniert jetzt 
einwandfrei auf beiden timern.

von Marcel D. (Gast)


Lesenswert?

ok nochmal eine blöde frage zur berechnung der prescaler


cputakt / prescaler (also beim attiny 1 8 64 256 oder 1024) / (256 oder 
65536) (beim 8bit timer bzw 16 bit timer) = hz?

von Stefan (Gast)


Lesenswert?

Ja, so hast Du den Prescaler richtig verstanden.

> leider bin ich durch die libraries von arduino nicht ganz durchgestiegen

Das lese ich hier jede Woche. Dann lass sie doch weg und programmiere 
"zu fuß". Direkt Register anzusprechen hast Du ja schon gemacht.

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.