Hallo Leute, ich arbeite derzeit an einem Schulprojekt bei dem ich mittels IOWarrior 24 im I2C-Mode und dem PCA9685 mehrere Servos ansteuern muss. Nun habe ich bereits die letzten Tage etwas herumprobiert und geschaut mit welchen notwendigen Schritten und Daten ich eine Servo ansteuern kann. Dazu habe ich mich etwas in der Dokumentation zum PCA9685 belesen und gesehen, dass ich die Prescale vorher einmal setzen muss. Was mir jetzt noch fehlt ist, mit welchen Daten ich eine Servo an die und die Stelle fahren kann. Nehmen wir an ich möchte am LED0 vom PCA9685 die Servo betreiben, dann müsste ich laut Doku die Register 0x08 (LED0_OFF_LOW) und 0x09 (LED_OFF_HIGH) mit Daten beschreiben und genau hier fängt es dann auch mit meinem Problem an. Welche Daten muss ich nun genau an diese Register übergeben damit ich die Servo bewegen kann. Sind noch vorherige Schritte oder Schritte nach dem schreiben in die Register notwendig, damit ich dies realisieren kann? Ich würde mich um eine Hilfestellung dazu freuen! Gruss Nick
Hallo Nick... bin grad über deinen thread gestolpert... ist wahrscheinlich outdatet... Um mit dem PCA9685 Servos anzusteuern, musst du den Prescaler folgendermassen setzen: ca.20ms Takt = 50Hz -> interne Clock: 25000000 25000000 4096 50 das ganze -1 da der Zähler von 0-4095 läuft und dann den gerundeten Wert: int(((25000000 4096 50) -1) + 0.5) ACHTUNG: Der Prescaler lässt sich nur setzen, wenn MODE1 sleep gesetzt ist 0x00 -> 0x10 0xfe -> Prescaler 0x00 -> 0x01 sleep 5us 0x00 -> 0xa1 ( Danach einen Soft Reset ausführen ) der PCA9685 hat 2 Modi, wie er Daten in die Led Register übernimmt: Default: STOP Alternativ: ACK ich machs normalerweise so ( Servo 0 ) Reg: 0x06 -> 0x00, 0x00, 0x3d, 0x01 d.H. Ich schreibe immer ONL, ONH, OFFL, OFFH und sende dann ein STOP nach... Ich hoffe du kannst damit was anfangen
Hallo heax00, vielen Dank für deine Antwort - helfen kann Sie mir aufjedenfall, wenn auch nur noch Privat :) Werde es aber an meine alte Schule weiterleiten, damit diese auch einen Nutzen haben! Viele Grüße Nick Lubisch
Hallo, ich versuche im Moment mit dem PCA9685 zwei Servo anzusteuern. 0x00, 0x10 // Modus1 aktivieren 0xfe, 0xFE // Prescaler setzen, sprich Periode 50Hz bzw. 20ms 0x00, 0x01 // Was macht das? sleep 5us 0x06 // Reg. für PWM1 Ausgang 0x00, 0x00 // 12Bit 0x0000 Power On, sprich schalte bei 0% ein 0x99, 0x01 // 12Bit 0x0199 Power Off, sprich schalte bei 10% ab sleep 5us 0x07 // Reg. für PWM2 Ausgang 0x00, 0x00 // 12Bit 0x0000 Power On, sprich schalte bei 0% ein 0xCB, 0x00 // 12Bit 0x00CB Power Off, sprich schalte bei 5% ab sleep 5us 0x00, 0xA1 // Danach einen Soft Reset um PWM zu starten Für ein Neustellen des PWM benötige ich dann nur: 0x07 // Reg. für PWM2 Ausgang 0x00, 0x00 // 12Bit 0x0000 Power On, sprich schalte bei 0% ein 0x1E, 0x01 // 12Bit 0x011E Power Off, sprich schalte bei 7% ab Hab ich das so richtig verstanden oder gibt es daran was auszusetzen?
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.