Roboterarm Joysticksteuerung PWM-Controller

Hi für ein Schulprojekt baue ich einen Roboterarm, der mithilfe von zwei Joysticks gesteuert werden soll. Der Roboterarm hat 6 Servos verbaut, die alle über einen PWM-Controller gesteuert werden sollen. Hab jetzt das Problem, dass sich die Servos kein Stück rühren. Hab im Internet auch nichts gefunden, was mir wirklich weiterhelfen kann. Wäre echt cool wenn mal jemand drüber gucken könnte und mir vllt helfen kann.
Danke schonmal.

/*Notes
  Joystick1 Farben:
  X-Achse:  Blau
  Y-Achse:  Lila
  Z-Achse:  Orange

  Joystick2 Farben:
  X-Achse:  Grün
  Y-Achse:   Weiß
  Z-Achse:  Braun
*/

#include <Adafruit_PWMServoDriver.h>
#include <Servo.h>
#include <Wire.h>

const int Joystick1_X = A0;
const int Joystick1_Y = A1;
const int Joystick1_Z = 2;
const int Joystick2_X = A2;
const int Joystick2_Y = A3;
const int Joystick2_Z = 3;


Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
//Servos
Servo baseServo;
Servo shoulderServo;
Servo elbowServo;
Servo wristServo;
Servo wristRotateServo;
Servo gripperServo;

void setup() {
  Serial.begin(9600);
  pwm.begin();
  pwm.setPWMFreq(60);  
  baseServo.attach(0);
  shoulderServo.attach(1);
  elbowServo.attach(2);
  wristServo.attach(3);
  wristRotateServo.attach(4);
  gripperServo.attach(5);
  pinMode(Joystick1_Z, INPUT_PULLUP);
  pinMode(Joystick2_Z, INPUT_PULLUP);
}

void loop() {
  //Joystick1
  int Joystick1_X_value = map(analogRead(Joystick1_X), 0, 1023, -90, 90);
  int Joystick1_Y_value = map(analogRead(Joystick1_Y), 0, 1023, -90, 90);
  int Joystick1_Z_value = digitalRead(Joystick1_Z);

  //Joystick2
  int Joystick2_X_value = map(analogRead(Joystick2_X), 0, 1023, -90, 90);
  int Joystick2_Y_value = map(analogRead(Joystick2_Y), 0, 1023, -90, 90); 
  int Joystick2_Z_value = digitalRead(Joystick2_Z);

  //ServoSteuerung
  baseServo.write(Joystick1_X_value);
  shoulderServo.write(Joystick1_Y_value);
  elbowServo.write(Joystick2_X_value);
  wristServo.write(Joystick2_Y_value);
  wristRotateServo.write(Joystick2_Y_value);
  delay(500);

  //Gripper
  if(Joystick1_Z_value == LOW) {
    gripperServo.write(90);
  } else {
    gripperServo.write(0);
  }
}

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

mal in

int Joystick1_X_value = map(analogRead(Joystick1_X), 0, 1023,0,180);
  int Joystick1_Y_value = map(analogRead(Joystick1_Y), 0, 1023,0,180);
  int Joystick1_Z_value = digitalRead(Joystick1_Z);

  //Joystick2
  int Joystick2_X_value = map(analogRead(Joystick2_X), 0, 1023,0,180);
  int Joystick2_Y_value = map(analogRead(Joystick2_Y), 0, 1023,0,180); 

ändern

Hat leider nicht geholfen

Mit welcher Spannungsversorgung?

Hab 12V Netzteil angeschlossen daran kann es also eigentlich auch nicht liegen

Welchen Strom kann das Netzteil liefern?

Gruß Tommy

Können die Servos das?

Hab es erst mit weniger versucht damit hat es auch nicht geklappt.

Ganz normales Netzteil was jeder daheim hat 12V Wechselstrom1A 12W

Dann schaue mal ins Datenblatt Deiner Servos, was die so an Strom ziehen.

Gruß Tommy

Wen das wirklich 12V Wechselstrom ist dann Gute Nacht.
Und was für Servos sind das?

Die großen so zwischen 500-900 mA davon hab ich 3 und noch 3 kleinere sollten so zwischen 400-600 mA haben

Servos funktionieren auch alle einzeln

Dann rechne doch 3x500mA+3x400mA = 2700 mA. Und da habe ich nur den minimalen Strom genommen. Unter Last ist der höher.
Rechne lieber mit 3x900 mA +3x600 mA = 4500 mA x 1,5 (Sicherheitsreserve) = 6750 mA, also mindestens ein 8A Netzteil.

Gruß Tommy

Alles klar hab mir ein passendes Netzteil bestellt sollte morgen ankommen. Der Code sollte aber soweit funktionieren oder?

Ich denke es hätte Sinn zu zeigen wie was angeschossen ist.
Weil die einen Servos bis 5V und die andern bis 7,2V sind und du ein 12V Netzteil hast.
Und Wechselstrom!? passt hier nicht.

Das kann ich nicht glauben. Servos für 5V sind über12V nicht glücklich.

Wenn die über die 5V des Arduino gespeist werden, und der mit 12V, dann schafft das der on-board Regler keineswegs. Die Servos brauchen ein kräftiges 5V Netzteil.

Ich würde mal sagen du hast Glück gehabt, dass das Netztteil den Strom nicht schafft, den deine Servos brauchen. Sonst wäre sie wohl schon in Rauch aufgegangen. Wenn die Servos 5 Volt brauchen, killst du sie mit 12 Volt. Also KEIN 12 VOLT NETZTEIL!! Damit gehen die Servos in Rauch auf, wenn du ein Netzteil mit genügend Strom, aber mit 12 Volt anschließt.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.