Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched.
Close
ich habe eine hoffentlich einfache Frage zum i2c.example.
Hab mir an meinen Raspy das PCA9685 Servo-Shield von Adafruit angebaut. Funktioniert soweit auch wenn ich auf der Konsole nach i2c-Geräten suche finde ich eines und wenn ich es in Codesys einhänge wird es auch grün.
Problem an der ganzen Geschichte ist nur, dass sich mein Servo einfach nicht bewegen möchte. Den Code unten habe ich aus dem i2c-Beispiel entnommen und an meine Variablen angepasst. Die Adresse von meinem i2c-Gerät habe ich von 0 auf 40 geändert, da es mir so ja auf der Konsole angezeigt wird.
Hier noch ein paar Screenshots.
Kann mir bitte jemand sagen, woran es liegt, dass sich mein Servo nicht drehen möchte?
Vielen Dank & Grüße
Timo
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
vielen lieben Dank für die schnelle Antwort!
Leider klappt auch das nicht. Ich habe das i2cexample geladen und nichts verändert.
Ich konnte ohne Fehler compilieren und übertragen.
Mein Servo bewegt sich leider trotz allem keinen Millimeter.
Hast du vielleicht noch einen Tipp an was es liegen könnte oder was ich kontrollieren kann?
Warum muss ich die Adresse nicht verändern, wenn mir mit i2cdetect Adresse 40 angezeigt wird? Das habe ich nicht verstanden.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi,
bei dem Adafruit Board Treiber wird wenn keine Adresse gesetzt wird der Default 16#40
genommen.
Sprich wenn du keine Adresse in dem Parameter setzt sind es die 0x40 und das muss dann mit deinem Board
funktionieren.
Grüße
Edwin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Der Servo macht exakt was er soll. Nämlich lenken. Da Python geht. Bin ich mir sicher, dass meine Verdrahtung richtig ist.
Unter Codesys öffne ich einfach nur das Beispiel und übertrage es auf den Raspberry. Aber es passiert einfach nichts. Ich bin gerade echt etwas frustriert.
Als Adresse habe ich 0 eingetragen. Die Frequenz steht auf 50Hz. Im Gerätebaum ist alles Grün. Wenn ich den Servo auf einen anderen Kanal stecke bewegt er sich ein bisschen. Das war es aber auch schon.
Ich benutze das aktuellste Codesys 3.5.12 SP2 und einen Raspberry Model B (also schon etwas älter) kann es daran liegen?
Hast nicht noch irgend einen Tipp den ich probieren könnte?
Lieben Dank & Grüße
Timo
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
https://forum.codesys.com/viewtopic.php ... 212#p21212
hier ist ein Beispiel basierend auf dem I2C ohne SoftMotion.
Denke aber fast mit SoftMotion wäre zweckmäsig oder auch einfach weil du musst ja nur MC_Power aufrufen und dann
mit MC_MoveAbs oder Relativ auf deine Stellung fahren...
Grüße
Edwin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo zusammen,
ich habe eine hoffentlich einfache Frage zum i2c.example.
Hab mir an meinen Raspy das PCA9685 Servo-Shield von Adafruit angebaut. Funktioniert soweit auch wenn ich auf der Konsole nach i2c-Geräten suche finde ich eines und wenn ich es in Codesys einhänge wird es auch grün.
Problem an der ganzen Geschichte ist nur, dass sich mein Servo einfach nicht bewegen möchte. Den Code unten habe ich aus dem i2c-Beispiel entnommen und an meine Variablen angepasst. Die Adresse von meinem i2c-Gerät habe ich von 0 auf 40 geändert, da es mir so ja auf der Konsole angezeigt wird.
Hier noch ein paar Screenshots.
Kann mir bitte jemand sagen, woran es liegt, dass sich mein Servo nicht drehen möchte?
Vielen Dank & Grüße
Timo
Hi,
das muss gehen mit der Default Einstellung des Beispiel Projekts. (also 0)
Grüße
Edwin
Hallo Edwin,
vielen lieben Dank für die schnelle Antwort!
Leider klappt auch das nicht. Ich habe das i2cexample geladen und nichts verändert.
Ich konnte ohne Fehler compilieren und übertragen.
Mein Servo bewegt sich leider trotz allem keinen Millimeter.
Hast du vielleicht noch einen Tipp an was es liegen könnte oder was ich kontrollieren kann?
Warum muss ich die Adresse nicht verändern, wenn mir mit i2cdetect Adresse 40 angezeigt wird? Das habe ich nicht verstanden.
Hi,
bei dem Adafruit Board Treiber wird wenn keine Adresse gesetzt wird der Default 16#40
genommen.
Sprich wenn du keine Adresse in dem Parameter setzt sind es die 0x40 und das muss dann mit deinem Board
funktionieren.
Grüße
Edwin
Hallo Edwin,
noch einmal danke schön!
Es funktioniert leider immer noch nicht.
Ich habe mich an das Tutorial bei Adafruit gehalten und das Beispiel zum testen der Library installiert und damit getestet
Das Tutorial:
https://learn.adafruit.com/adafruit-16-channel-servo-driver-with-raspberry-pi/using-the-adafruit-library
Das Ergebnis:
https://www.youtube.com/watch?v=1IYbup0aC3E
Der Servo macht exakt was er soll. Nämlich lenken. Da Python geht. Bin ich mir sicher, dass meine Verdrahtung richtig ist.
Unter Codesys öffne ich einfach nur das Beispiel und übertrage es auf den Raspberry. Aber es passiert einfach nichts. Ich bin gerade echt etwas frustriert.
Als Adresse habe ich 0 eingetragen. Die Frequenz steht auf 50Hz. Im Gerätebaum ist alles Grün. Wenn ich den Servo auf einen anderen Kanal stecke bewegt er sich ein bisschen. Das war es aber auch schon.
Ich benutze das aktuellste Codesys 3.5.12 SP2 und einen Raspberry Model B (also schon etwas älter) kann es daran liegen?
Hast nicht noch irgend einen Tipp den ich probieren könnte?
Lieben Dank & Grüße
Timo
Hi,
nimm bitte mal das andere Beispiel:
"c:\Users\<deinwindowsusername>\CODESYS Control for Raspberry PI\3.5.12.10\Examples\SoftMotion Servo Example.project" </deinwindowsusername>
Grüße
Edwin
Hallo Edwin,
das Programm geht!
Jetzt habe ich nur ein Problem: das ist nicht strukturierter Text und ich verstehe nicht was da gemacht wird!
Kannst du bitte helfen?
Lieben Dank & Grüße
Timo
Hi,
https://forum.codesys.com/viewtopic.php ... 212#p21212
hier ist ein Beispiel basierend auf dem I2C ohne SoftMotion.
Denke aber fast mit SoftMotion wäre zweckmäsig oder auch einfach weil du musst ja nur MC_Power aufrufen und dann
mit MC_MoveAbs oder Relativ auf deine Stellung fahren...
Grüße
Edwin
Ich habe das gleiche Problem gehabt. Mit dieser Änderung funktioniert mein Programm:
Adafruit_PWM.alrPWM[0] := 0.5 + 0.5*SIN(t);