PWM über Arduino ohne PWM Digital Kontakte?

2 Antworten

Ja, das ist möglich... Das PWM-Signal muss halt von Software erzeugt werden. Es ist dann nicht so genau - es hat einen Jitter. Hier dürfte das jedoch nicht stören.

Klassisches Vorgehen: Timer einstellen und Interrupt auslösen lassen. In der Interrupt-Routine dann Pin entsprechend ein- und ausschalten. Ich denke aber, dass es da bereits Bibliotheken dafür gibt.

PWM ist keine echte Analogspannung... weil du schreibst 3V-12V. Auch die normale MOSFET-Beschaltung macht keine Analogspannung daraus. Durch das Pulsen wird nur die Energiemenge begrenzt, sodass der Effekt zu einer regelbaren Analogspannung vergleichbar ist.


marke0505 
Fragesteller
 06.01.2024, 10:26

Ja genau. Dann gebe ich über einen digital Pin vom Arduino (wie du beschrieben hast) einfach ein HIGH und LOW aus und je nachdem wie oft auf den MOSFET gepulst wird, kommt dann dementsprechend eine höhere oder niedrigere Effektivspannung für die Pumpe bei raus. Richtig?

0
kmkcl  06.01.2024, 10:30
@marke0505

Nicht wie oft, sondern wie lange innerhalb einer festen Zeitspanne. Das ist PWM. Wenn du häufiger und seltener pulst, ist das PDM (Pulse Density Modulation), ist aber schwieriger zu handhaben.

1
marke0505 
Fragesteller
 06.01.2024, 10:34
@kmkcl

ah okay. Ja okay ich bleibe bei PWM. Und wie finde ich raus wie lange die Periodendauer ist? Weil Effektivwert = Pulsdauer/Periodendauer. Heißt ich muss wissen wie lange die Periodendauer der Rechteckspannung ist. Wie finde ich das raus? Über ein Oszilloskop? Oder gibt es auch andere wege.

0
Kelec  06.01.2024, 10:54
@marke0505

Das legst du selbst fest.

Nimm einen Timer und lasse den eben von 0 bis 255 laufen.

Dann hast du 1 Compare Interrupt und ein Overflow Interrupt. Beim Overflow Interrupt schaltest du den Pin ein und beim Compare Schaltest du ihn aus.

Dein Dutycycle ist dann eben der Maximalwert durch den Wert im Compare Register. Also wenn im Compare Register 127 steht hast du 127/255 = 0.498 also 49.8% Dutycycle.

Deine Periodendauer ist dann fix die Laufzeit des Timers. Also bei 8MHz Timerclock und ohne Prescaler wärens dann 31.25kHz. Es empfiehlt sich allerdings hier einen Prescaler zu verwenden um die CPU Last zu senken.

1
kmkcl  06.01.2024, 10:58
@marke0505

Ich würde dir raten, eine Bibliothek für Software-PWM zu suchen. Den "händischen" Weg (selbst programmieren) hat Kelec erläutert.

1

Möglich über Software PWM. Muss man sich halt anschauen ob einem das reicht.