PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hard- oder Software PWM



Che Guevara
24.05.2011, 19:28
Hallo,

für meinen Tricopter bin ich gerade dabei, mir ein neues Layout zu machen! Jetzt bin ich allerdings am überlegen, was sich besser eignet:
Software PWM:
Vorteile:
- alle Ausgänge haben die gleiche Auflösung und die gleichen "Nullpunkte"
Nachteile:
- braucht viel Rechenzeit
Hardware PWM:
Vorteile:
- braucht keine Rechenzeit
Nachteile:
- 2 Ausgänge haben eine höhere/geringere Auflösung als die anderen beiden

Der µC ist ein ATTINY2313 im SOIC-Gehäuse. Er läuft mit 16MHz und kommuniziert mit einem ATMEGA8, der ihm die fertigen Daten für die 4 Aktoren (3Bl-Motoren, 1Servo) sendet, welche der TINY nur noch auf die Ausgänge geben muss.
Welche Lösung ist die bessere im Bezug auf Rechenzeit/Aufwand (für die Skalierung).

Gruß
Chris

Besserwessi
24.05.2011, 19:50
Das PWM Signal für die Servos ist realtiv unkritisch, weil die Frequenz mit ca. 50 Hz recht gering ist. Das kann man gut auch in Software machen. Weil nur eine kleiner Bereich (1-2 ms Pulsdauer bei 20 ms Periode) genutzt wird, ist 8 Bit PWM meist nicht ausreichend. Wenn man die Servo Pulse einen nach dem anderen erzeugt (also kein klassisches Software PWM) ist das von der Rechenzeit keine Problem auch für viele Servosignale. Wenn die Kanäle reichen geht HW PWM mit 16 Bit Auflösung sehr gut für Servos - der Tiny2313 hat davon 2 Kanäle.

Bei den BL Motoren müsste man sehen was die für ein Signal brauchen.

Nur für die PWM Singnale braicht der µC wohl auch keine 20 MHz, da sollten auch 4 MHz, ggf. auch vom internen Takt ausreichen. Die Skalierung ist von der Rechenzeit auch recht unkritisch. Vom Aufwand ist da auch kaum Unterschied ob HW oder Software.

BMS
24.05.2011, 19:50
Hallo,
welche Lösung die bessere ist hängt auch stark von der PWM-Frequenz ab. Bei einer hohen Frequenz ist die Hardware-PWM sicher im Vorteil, da die Software-Variante bei hohen Frequenzen ja oft aufgerufen werden muss usw.
Die Auflösung bei Hardware-PWM würde ich für alle bl-Motoren auf 8 Bit setzen, das sollte eigentlich reichen.
Den Servo würde ich über Software-PWM ansteuern, da das Tastverhältnis des benötigten Signals recht gering ist und sich bei Hardware-PWM sonst eine niedrige Auflösung ergäbe. Das PWM hierfür ist vergleichsweise langsam (Puls 1-2ms, 20ms Pause)
;)
Grüße, Bernhard