Hallo zusammen, Ich hab einen Arduino ATmega 328p und möchte damit eine RGB LED ansteuern. Dazu benötige ich 3 PWM die jeweils mit einem Potentiometer verstellt werden sollen, um jede Farbe darstellen zu können. Der ATmega328p hat zwar einige PWM Ausgänge jedoch können nicht alle gemeinsam genutzt werden. Wie viele PWM kann ich gleichzeitig ansteuern? Hoffe auf schnelle Antwort. MFG Michael
Michael S. schrieb: > Der ATmega328p hat zwar einige PWM Ausgänge jedoch können nicht alle > gemeinsam genutzt werden. Interessant, welche denn? Das Datenblatt beschreibt etwas anderes. > Wie viele PWM kann ich gleichzeitig ansteuern? Ausreichend: > und möchte damit eine RGB LED ansteuern.
Michael S. schrieb: > Der ATmega328p hat zwar einige PWM Ausgänge jedoch können nicht alle > gemeinsam genutzt werden. Nunja, das kommt allein auf die Randbedingungen an. Im Extremfall können wirklich alle gleichzeitig benutzt werden, d.h.: du hast dann insgesamt 6 PWM-Kanäle, also ausreichend für sogar zwei RGB-LEDs. Allerdings verringert natürlich jede Timernutzung für einen Zweck die Freiheitsgrade, die für die Benutzung der Timer für andere Zwecke zur Verfügung stehen. Es ist einfach eine Frage der Abwägung, was sinnvoller ist. Für die Ansteuerung irgendwelcher dümmlichen LEDs wird es aber i.A. sinnvoller sein, das in Software abzuhandeln und die wertvollen Timer für die wirklich zeitkritischen Aufgaben zu reservieren...
So, hier noch ein paar Details zu den PWM Pins und deren zugeordneten Timer. Pin 5 und 6: Timer0 (PWM Frequenz: 62500 Hz) Pin 9 und 10: Timer1 (PWM Frequenz: 31250 Hz) Pin 11 und 3: Timer2 (PWM Frequenz: 31250 Hz) Deine Beschaltung sollte, wenn möglich, nur zwei Timer in Anspruch nehmen. Am Besten Timer1 und Timer2.
Mick schrieb: > Frequenz: 62500 Hz Entspricht nicht dem Arduino Default. Mick schrieb: > Frequenz: 31250 Auch nicht. Mick schrieb: > Am Besten Timer1 und Timer2. Ja! Die PWMs des Timer0 gehen nicht unbedingt sauber zwischen 0% und 10% Den Grund kann man in der Arduino PWM Doku nachlesen. Ebenso, das mit den Frequenzen.
Sorry, hab mich in meiner Tabelle vertan. Die Frequenzen liegen bei etwa 500 Hz und 1000 Hz.
Ulrich F. schrieb: > Die PWMs des Timer0 gehen nicht unbedingt sauber zwischen 0% und 10% > Den Grund kann man in der Arduino PWM Doku nachlesen. Kannst du das mal einem nicht Arduino-Nutzer erklären? Der Controller is n Mega328, der hat meines Wissens nach keine Probleme mit 0-10%...
Ingo L. schrieb: > Der Controller is n Mega328, N'türlich! Bitte lesen: > Notes and Known Issues in: https://www.arduino.cc/en/Reference/AnalogWrite Die tieferen Gründe wirst du dir aus dem Arduino Core selbst raus suchen dürfen. Mir reicht es, das als gegeben hin zu nehmen. Wenn ich Timer0 selber brauche, verzichte ich auf das millis() und delay() Gedöns. Dann wird auch die PWM sauber laufen (ungetestet). Das Register Gefummel ist aber vermutlich nix für den typischen Arduino Fan.
Hier stehts doch klar: The PWM outputs generated on pins 5 and 6 will have higher-than-expected duty cycles. This is because of interactions with the millis() and delay() functions, which share the same internal timer used to generate those PWM outputs. This will be noticed mostly on low duty-cycle settings (e.g 0 - 10) and may result in a value of 0 not fully turning off the output on pins 5 and 6 Wieder ein Grund dieses Zeuch nicht zu nutzen... Aber für Anfänger als Einstieg sicher gut, will das Ding auch nicht schlecht machen ;)
Ingo L. schrieb: > Wieder ein Grund dieses Zeuch nicht zu nutzen... Naja... Immerhin ist der Effekt dokumentiert. Und, wie schon gesagt, man kann den Effekt unterbinden, wenn man Timer0 von seinen anderen Aufgaben befreit.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.