-
-
Erfahrener Benutzer
Robotik Einstein
effizientes Soft PWM was haltet ihr von dieser lösung ?
Teileliste, für 24 Servos parallel (und dabei müsste THEORETISCH noch massenweise rechenleistung übrig bleiben)
1 Atmega32 @ 8Mhz intern
(jeder mega geht, für meine rechnungen sind nur die 8Mhz wichtig, auch die anzahl der Servos kann skaliert werden, bitte hinweis am ende beachten)
25 PNP transistoren
Bild hier
Timer0 in phase correct PWM
OC0 toggle on interrupt
prescale 32 @ 8Mhz
OCR0 = 62 (abgerundet) entspricht 0.5ms
OCR0 = 125 (exakt) entspricht 1mis
OCR0 = 188 (aufgerundet) entspricht 1.5ms
rechenbedarf nur während timer0 overflow und auch nur "ne hand voll" operationen um den nächsten pin anzuwählen und den passenden pwm wert einzustellen, den impuls stellt die hardware am OC0 bereit, der transistor leitet es nur an den richtigen servo weiter .. so hat man automatisch auch eine größere pause zwischen 2 impulsen (24 Servos könnten eine zu große pause ergeben, noch nicht getestet)
also was meint ihr ?! vll. noch optimierung hardwareseitig ?!
PS: da die pins low-active sind kann man auch über das PIN-Register kontrollieren welcher Servo wann angesteuert wird (diagnosezwecke?!)
EDIT: naguuuuut ist kein TOTALES Soft PWM aber ist doch sehr effizent als PWM-Port-Erweiterung
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen