Arduino PWM und Bibliothek auf einem Timer

OP #7850740
Lesenswert?
• ▲
▼

Guten Abend zusammen,

Ich bastle mir gerade mit einem Arduino Nano V3.0 eine Lichtsteuerung mit IR Fernbedienung, die per PWM (analogWrite(0-255) N Mosfets ansteuert, die wiederum der LED die Masse geben. Da ich einen RGBCW LEDstreifen (24V) benutze brauche ich dafür 5 PWM Pins am Arduino (3,5,6,9,10; 11 bleibt frei). Jetzt habe ich aber einen Konflikt mit der IRRemote Bibliothek, die ebenso wie PWM PIN 3 & 11 den Hardwaretimer 2 nutzt. Daher schaltet pin 3 beim Andimmen auf einen Schlag ein, ab welchem analogWrite - Wert muss ich noch testen.

Daher meine Frage: wie löse ich diesen Timer Konflikt, bzw. wo kommt er her? Ausweichen auf andere Pins geht ja aufgrund der Anzahl nicht…

Danke schonmal für alle Tipps, Philipp

PS: ich hoffe ihr versteht mein Problem, ich beantworte natürlich alle Rückfragen

#7850754
Lesenswert?
• ▲
▼

Philipp K. schrieb:

wie löse ich diesen Timer Konflikt, bzw. wo kommt er her?

Philipp K. schrieb:

wo kommt er her?

Die Bibliothek nutzt einen Timer als Interrupt, um das Eingangssignal zu Samplen. https://github.com/Arduino-IRremote/Arduino-IRremote?tab=readme-ov-file#timer-and-pin-usage

Und denk dran, dass millis() auch einen Timer nutzt.

Philipp K. schrieb:

wie löse ich diesen Timer Konflikt

Mit einem PCA9685 zum Beispiel. Gut, die 16 Kanäle sind zwar vielleicht ein bisschen overkill, aber dafür 12bit und du kannst noch weitere Strips anschließen, wenn du sie einplanst

(Firma: Gast) #7851931
Lesenswert?
• ▲
▼

Adam P. schrieb:

PCA9685

7.7 Using the PCA9685 with and without external drivers • OUTDRV bit (MODE2 register) allows minimizing the amount of external components required to control the external driver (N-type or P-type device).

Aus: https://www.nxp.com/docs/en/data-sheet/PCA9685.pdf

Auch ab Seite 35 sehe ich keine Gatewiderstände... Wobei die fertigen Boards mit dem Chip alle (zumindest die ich kenne) 220R in den Pin Leitungen haben. Das sollte als Gatewiderstand reichen. Wobei ich da je nach P oder N Chanel FET auch noch Pullup oder Pulldown vorschlagen würde.

#7852070
Lesenswert?
• ▲
▼

Wenn man frei bei der Wahl des IR-Protokolls ist, könnte man auch das NEC-Protokoll nehmen. Das ist schön klein in der Codegröße und braucht keinen Interrupt. Alternativ könnte man auch einen 20 kHz-Oszillator (1 Gatter+R+C) an einen Portpin hängen, letzteren auf Pinchange-Interrupt stellen und damit die IRRemote-Interruptfunktion auslösen. Aber der PCA ist die komfortabelste Variante, die PWM-Qualität verbessert sich und man hat genug Erweiterungsmöglichkeiten.

#7852129
Lesenswert?
• ▲
▼

Mario M. schrieb:

Aber der PCA ist die komfortabelste Variante, die PWM-Qualität verbessert sich und man hat genug Erweiterungsmöglichkeiten.

Ohne Frage ist der PCA komfortabel. Und 12 Bit PWM-Auflösung sind auch besser als 8 Bit. Aber wie gesagt: es gibt auch Arduinos jenseits vom ATMega328. Und die haben das eingebaut (kein extra Chip). Beides, die höhere Auflösung und mehr Kanäle.

Wenn man auf das Arduino-Gedöhns verzichtet und lernt zu programmieren, kann man natürlich auch auf dem ATMega PWM mit bis zu 16 Bit machen (Soft-PWM). Mit 3 Kanälen hab ich das schon gemacht, es gehen aber bis zu 8 Kanäle (müssen dann auf dem gleichen Port liegen).

Oder man schaut sich bei anderen Herstellern um. Der STM8S105 hat 8(?) PWM-Kanäle in 16 Bit. Und IRMP läuft da auch drauf.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.