Die PWM will einfach nicht.

OP #5742446
Lesenswert?

Hallo,

ich versuche derzeit 6 PWMs auf einem ATMega128 ins laufen zu kriegen. 
Aber egal was ich auch mache, tue, setze. Entweder habe ich 100% oder 
garnichts.

Also ich habe am PWM PIN einen Transistor, der widerrum betreibt einen 
Lüfter. Mit I/O lässt sich der Lüfter ein und ausschalten. Perfekt

Nun will ich aber mittels PWM die Geschwindigkeit steuern...

Ich habe die ganze Nacht nun alle ermöglichen Varianten probiert.. Die 
PWM will einfach nicht laufen...
1
//      TCCR0 = (1<<WGM01); // CTC Modus
2
//      TCCR0 = (1<<CS02); // Prescaler 64
3
        // ((1200000/64)/1000) = 187,5
4
//      OCR0 = 187-1;
5

6
        // Timer 1 PWM
7
        DDRB |= (1<<PB5);
8
        ICR1 = 0xFFFF;
9
        // set TOP to 16bit
10
        OCR1A = 0x3FFF;
11
        TCCR1A |= (1 << COM1A1)|(1 << COM1B1);
12
        TCCR1A |= (1<<WGM12) | (1 << WGM11);
13
        TCCR1B |= (1 << WGM13);
14
        TCCR1B |= (1 << CS10);
15
//      TCCR1A |= (1<<WGM10) | (1<<COM1A1);
16
//      TCCR1B |= (1<<CS11) | (1<<CS10);
17

18
        // Timer 3 PWM
19
//      TCCR3A = (1<<COM3A1) | (1<<COM3B1) | (1<<COM3C1) | (1<<WGM31) | (1<<WGM30);
20
//      TCCR3B = (1<<WGM32) | (1<<CS30);
21

22
//      OCR1A = 180;
23
//      OCR1B = 1000;
24
//      OCR1C = 1000;
25

26
//      OCR3A = 1000;
27
//      OCR3B = 1000;
28
//      OCR3C = 1000;
29

30
        // Compare Interrupt erlauben

Das ist jetzt mein letzter Test gewesen...

Egal auf welchen Wert ist OCR1A auch setze... der Lüfter "piept" oder 
"summt" nur so ganz komisch. Setzte ich den PWM Wert also OCR1A aber auf 
254 oder in anderen versuchen auf 1023 dann dreht der Lüfter mit voller 
Geschwindigkeit.

Setze ich den Wert auf darunter geht nichts mehr...

Ich verzweifel langsam.

Es ist ein ATMega128 mit 12Mhz externem Quarz.

Ich hoffe ihr könnt mir weiter helfen.
OP #5742528
Lesenswert?

Du meinst ein Multimeter?

Also ich habe jetzt mal einen LED Strip angehängen anstatt dem Lüfter..
1
        TCCR1A |= (1<<WGM10) | (1<<COM1A1);
2
        TCCR1B |= (1<<CS11) | (1<<CS10);
3
        OCR1A = 10;

Das Stripe lässt sich dimmen. Aber ab 40 nicht mehr. Also ich kann von 0 
- 40 Dimmen... Dann wird 40 Wohl TOP sein.. was ich nicht ganz 
nachvollziehen kann.


Aber warum lässt sich der Lüfter nicht regulieren?

Ich habe den Lüfter mal an 5V und mal an 12V geklemmt (ist nen 12V 
Lüfter) also da dreht auch schneller und langsamer...

Und die PWM macht ja nichts anderes...
OP #5742605
Lesenswert?

Ja habe ich...

0 - 11,4V also das passt soweit.
1
        // Timer 1 PWM
2
        DDRB |= (1<<PB5);
3
        TCCR1A |= (1<<WGM11) | (1<<WGM10) | (1<<COM1A1);
4
        TCCR1B |= (1<<CS11) | (1<<CS10);
5
        OCR1A = 200;

So habe ich die PWM jetzt laufen..

Also das müsste ja jetzt sein:

PWM, Phase Correct, 10-bit      (WGM11 und WGM10)

Prescale von 64                 (CS11 und CS10)

Komischerweise ist der Wert trotzdem nur OCR1A 0 - 255... müsste dieser 
nicht 0 - 1023 sein?

Wenn ich mich recht erinnere habe ich nun 12.000.000  1024  (2 * 
64/prescale)) also 91,55 Hz... korrekt?

Damit müsste doch auch jeder Lüfter laufen....

LEDs kein Problem...

Setze ich den Prescale auf 1 dann piepen die Lüftermotoren laut.. je 
höher ich den Prescaler setze um so leiser wird das piepen.. sie drehen 
aber nicht..

ab einem prescale von 256 blinken die leds und dimmen nicht mehr

Wenn ich die Lüfter anfasse dann spüre ich den Strom... komisch zu sagen 
aber ich merke wie da Spannung anliegt nur sie drehen eben nicht.. Das 
fühlt sich so komisch an.. als ob die Motoren brummen oder er andrehen 
will aber nicht kann weil er blockiert wäre oder so komisch..
Gast #5742626
Lesenswert?

Mark S. schrieb:
> Das Stripe lässt sich dimmen. Aber ab 40 nicht mehr. Also ich kann von 0
> - 40 Dimmen... Dann wird 40 Wohl TOP sein.. was ich nicht ganz
> nachvollziehen kann.

Da wird wohl noch was passieren, Du sieht es aber nicht mehr.
Deine Augen arbeiten logarithmisch. Im unteren Helligkeitsbereich siehst 
Du schnell irgendwelche Änderungen, im oberen nicht mehr.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren