Hi, kann man mit einem PIC18F45K22 einen Hexapod Roboter bauen der 6 Beine hat? Jedes Bein hat 2 Servomotoren. Man braucht genügend Timer würde ich sagen oder? Meiner Meinung nach geht das mit dem genannten uC nicht. Aber was sagen die Profis?
Ich glaub nicht, dass das mit dem PIC (ordentlich) geht. Die Timer anzahl (min 1) ist eigentlich egal (weil man nur eine Timebase braucht) ABER es gibt nicht genug CCP-Einheiten (capture compare pwm) http://ww1.microchip.com/downloads/en/AppNotes/00696a.pdf - AP-Note über Servos von microchip
Was spricht denn gegen einen Richtigen. Mit 12 oder mehr timern, wie zB einem dsPIC33FJ64GS606, nicht immer dieses spielzeug..
dünnwandiger Trog schrieb: > Was spricht denn gegen einen Richtigen. Mit 12 oder mehr timern, wie zB > einem dsPIC33FJ64GS606, nicht immer dieses spielzeug.. stimme dir voll zu ein DsPic ist besser geeignet (bzw. glaub mit einem 8-bit PIC wirds eh schwirig...) aber der dsPIC33FJ64GS606 hat nicht genug Output-Compare-Einheiten... Bin mir nicht sicher, aber ich glaube die Motorcontrol-PWM's sind dafür nicht geeignet. mit dem dsPIC33EP512MU814 sollts gehen. Würde aber eher einen STM32 oder so nehmen dafür...
Was wenn ich mehrere kleine PICs parallel nutze und dadurch die Anzahl erhöhe? Wo würdet ihr da Probleme sehen?
Würd ich eher nicht machen - gehen wirds sicher, ist aber aufwendiger. Die dsPic's sind sehr ähnlich wie die 8-bit PICs bzw. man merkt beim programmieren keinen wirklichen unterschied (Die Initialisierung ist ein bisschen aufwendiger). vielleicht hilft dir das weiter Beitrag "PWM Servo Schieberegister"
Axel H. schrieb: > Ich glaub nicht, dass das mit dem PIC (ordentlich) geht. Die Timer > anzahl (min 1) ist eigentlich egal (weil man nur eine Timebase braucht) > ABER es gibt nicht genug CCP-Einheiten (capture compare pwm) Erschwerend kommt noch hinzu, daß man für 6 Beine eine inverse Kinematik rechnen muß. Axel H. schrieb: > Bin mir nicht sicher, aber ich glaube > die Motorcontrol-PWM's sind dafür nicht geeignet. Sind sie schon. Der größte Aufwand ist, alle nicht benötigten Features abzuschalten. MfG Klaus
Wäre es nicht möglich einfach die I/O Ports per Timer ein/auszuschalten, wäre man dann nicht unabhängig von der PWM Hardware? Ich würde sozusagen die PWM per Software basteln. Kam mir nur so der Gedanke
Ich hab's mir das gerade angeschaut, ja es sollte gehen. Ob in C ist die Frage weil du da schon an die Grenzen gehst. In ASM sollte es gehn... Ich nehm mal an das ist ein HTL Projekt oder so ? Wenn du die "PWM Daten" im vorhinein berechnest/vorbereitest und ins SRAM speicherst dann: Hab mir ausgerecht du braust ca. 7+ Instructions mit 1-2 Zyklen pro Inst. sind 10 Zyklen. Weil der Pic pro Zyklus 4 Taktzyklen braucht => 4*10=40 für 1° Auflösung => (0,001s)/(360°)=360kHz 360kHz*40 = 14Mhz Oszilator Frequenz bei Fmax=64Mhz (vom Pic) hättest du sogar 40 Instriuctons Zeit... Könnt sogar in C gehn dann hättest du noch 9/10 von der Rechenzeit übrig für Berechnungen (bei 20ms Periode der "PWM"). Aber ein DsPic ist eindeutig die bessere Lösung...
:
Bearbeitet durch User
Axel H. schrieb: > Ich hab's mir das gerade angeschaut, ja es sollte gehen. Danke für die ausführliche Analyse des Problems, schön zu wissen dass es hart ander Grenze ist aber zu gehen scheint. Das wäre übrigens ein reines Spaßprojekt. Welchen ARM Prozessor könntet ihr mir empfehlen für dieses Vorhaben (ich bevorzuge STM)?
loois schrieb: > Welchen ARM Prozessor könntet ihr mir empfehlen für > dieses Vorhaben (ich bevorzuge STM)? Also idealerweise dann einen mit 12 PWM Ausgängen???
Es könnte hilfreich sein, zu wissen daß die Impulse für die Servos deutlich kürzer sind, als die Periodendauer. Das kann man ausnutzen, indem man die Impulse für die Servos nacheinender erzeugt. Mit etwas zusätzlicher Logik kann ein Hardware-PWM-Ausgang locker 6-8 Servos ansteuern. Auch eine Software-PWM Lösung wird deutlich einfacher, wenn die Signale nicht alle gleichzeitig erzeugt werden müssen. Gängig sind z.B. 50Hz Rate -> 20ms, Impulslänge üblicherweise 1ms .. 2ms (Manchmal auch 0,5ms .. 2,5ms), 1,5ms ist Mittelstellung. Mit freundlichen Grüßen - Martin
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.