Pages: 1 [2]   Go Down
Author Topic: PWM Einstellung / Auflösung  (Read 3259 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3470
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Versuch macht klug. Warum misst Du das nicht einfach nach? Die Antwort ist völlig klar, aber wenn Du fragen musst, dann solltest Du einfach mal nachschauen. Das erhellt deutlich mehr.
Logged

Check out my experiments http://blog.blinkenlight.net

Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
este es la leche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Udo
Danke für die Antwort smiley-red. Das mit dem Messen ist mir schon klar, nur habe ich im Bereich PWM keinen blassen Schimmer, die Datenblätter sind für mich im großen und ganzen böhmische(englische) Dörfer, da mein Englisch unter aller Kanone ist und die Bücher die ich zu dem ganzen Thema Arduino etc. habe, haben auch nur kurze Ansätze im Bereich PWM (LED über 2 Taster dimmen, einfache Töne über Sinuskurven erzeugen etc.), gehen aber auf irgendwelche Einstellungen (Auflösung, Frequenz, Prescaler etc.) gar nicht ein. Und wenn ma schon dabei sind, erkläre mir doch mal einer dieses: TCCR4A = TCCR4A & 0b00000000 | 0x07; (TCCR4B = TCCR4B & 0b00000000 | 0x03;) das sich TCCR4A / TCCR4B auf den Timer4 bezieht habe ich noch verstanden, aber was bedeutet der Rest?
Gruß Erhard
« Last Edit: December 30, 2011, 05:38:29 pm by Arduinokiller » Logged

Offline Offline
Newbie
*
Karma: 2
Posts: 45
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi, da ich auch blutiger Anfänger bin kann ich dir auch nicht genau helfen. Allerdings wenn man die Bücher und auch diesen Thread hier liest bin ich mir ziemlich sicher das PWM nur ein an und abschalten einer bestimmten spannung ist im falle des Arduino 5V. Also bekommst du durch PWM immer nur 5V auch wennn dieser Ausgang z.B. zu 50% ausgeschaltet ist.
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21271
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@Zaisow
Wenn Du ein PWM Signal mit einem RC Glied glättest bekommst Du eine Gleichspannung die gleich dem aritmetischen Mittellwert über die Zeit des PWM Signals ist. Der einzige Pferdefuß ist, daß Änderungen wegen dem RC-Glied etwas lansam sind.
Grüße Uwe
« Last Edit: December 30, 2011, 06:30:54 pm by uwefed » Logged

Offline Offline
Newbie
*
Karma: 2
Posts: 45
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

es stellt sich für mich noch die Frage ob ich bei der ganzen Sache evtl. einen Denkfehler drin habe,
da ja der PWM Ausgang immer 5V liefert, ist dann die gemessene Spannung bei 50% 2,5V ?

Ich dachte er meint das man dem Arduino Spannungen entlocken kann die nicht 5 V sind durch PWM und das geht ja nicht. Das bei 50% die Spannung im mittel genau 2,5 V sind mir schon klar, das man dafür nen RC Glied nutzen kann war mir natürlich nicht bewusst da ich mich in der Richtung nicht auskenne.
Logged

0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3470
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Keine Ahnung warum das so geschrieben wurde:

Code:
TCCR4A = TCCR4A & 0b00000000 | 0x07; (TCCR4B = TCCR4B & 0b00000000 | 0x03;)

Ich würde sowas so schreiben:

Code:
TCCR4A = 7;
TCCR4B = 3;

Die Operatoren "&" und "|" sind Bitoperationen. Google nach C und Bitoperation. Dann findest Du Erklärungen dazu.

Gruß, Udo
Logged

Check out my experiments http://blog.blinkenlight.net

Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
este es la leche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe mal nen Versuchsaufbau gemacht, R 1K und LED zwischen PWM Pin9 und GND; Codeausschnitt wie folgt:

int PWMPin = 9;
int PWMVal = 0;

void setup()
.....
TCCR4A = 10;
TCCR4B = 3;
 pinMode(PWMPin, OUTPUT);
.....
void loop()
......
PWMVal = 299;   // (bei 299 = 0.83V; bei 358 = 1.96V Leerlaufspannung)
analogWrite(PWMPin, PWMVal);
.....

die LED leuchtet, gemessene Spannung siehe PWMVal, Auflösung ca. 0,018V auch wenn ich bei TCCR4A die Werte verändere kommt immer das gleiche Ergebnis raus, also ziemlich weit weg von dem was ich brauche (Auflösung sollte bei 0,0049 sein bei 10-Bit 5V/1024).
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 58
este es la leche
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Habe den Code geändert, jetzt hab ichs.

int PWMPin = 6; <- von Pin 9 auf Pin 6 geändert.
int PWMVal = 0;

void setup()
.....
TCCR4A = 10;
TCCR4B = 3;
 pinMode(PWMPin, OUTPUT);
.....
void loop()

PWMVal = 414;   // (bei 176 = 0.830V; bei 414 = 1.952V mit LED)
analogWrite(PWMPin, PWMVal);
.....


Danke an alle für die Anregungen.
Logged

Pages: 1 [2]   Go Up
Jump to: