-         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: me-arm, 12bit servotreiber und ein joystick

  1. #11
    Erfahrener Benutzer Roboter Genie Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    72
    Beiträge
    1.460
    Anzeige

    Hawe, es verwirrt nur, wenn du deine Antworten editiert ohne dass es erkennbar ist. Worauf soll man denn Antworten? Und du möchtest doch auch eine Antwort, oder?
    ps. Schnelligkeit ist nicht alles...

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    4.741
    ehrlich gesagt, nein.
    Ich wollte dir nur logische Erlärungsansätze liefern.
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    433
    Blog-Einträge
    3
    Zitat Zitat von inka Beitrag anzeigen
    ...der arm ruckelt aber ziemlich...
    Code:
    void loop() {
      float dx = map(analogRead(xdirPin), 0, 1023, -5.0, 5.0);
      float dy = map(analogRead(ydirPin), 0, 1023, 5.0, -5.0);
      float dz = map(analogRead(zdirPin), 0, 1023, 5.0, -5.0);
      float dg = map(analogRead(gdirPin), 0, 1023, 5.0, -5.0);
    map ist eine Integerfunktion. dx, dy etc. werden also nur ganzzahlige Werte zwischen -5 und 5, also 11 Schritte annehmen. Damit ruckelts.

    Lösung ist einfach: Einfach folgende Funktion vor die loop()-Definition setzen:
    Code:
    float map(long x, long in_min, long in_max, float out_min, float out_max)
    {
      return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
    }
    Geändert von Sisor (19.02.2019 um 19:26 Uhr) Grund: Lösungsvorschlag angehängt.

  4. #14
    Erfahrener Benutzer Roboter Genie Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    72
    Beiträge
    1.460
    danke Sisor,
    leider kann ich es im moment nicht ausprobieren, ich muss jetzt erstmal überlegen wie ich HaWe's vorschläge für den anschluss der joystickplatine realisiere...
    Es ging bei der ursprünglichen frage um's ruckeln, ich wollte probieren, ob es bei einer "behutsamen" ansteuerung mit dem joystick auch so ruckartig fährt. Es ruckelt aber auch bei anderen sketches wie dem hier z.b.


    Code:
    #include <Wire.h>
    #include <Adafruit_PWMServoDriver.h>
    
    
    Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
    
    
    #define MIN_PULSE_WIDTH 650
    #define MAX_PULSE_WIDTH 2350
    #define DEFAULT_PULSE_WIDTH 1500
    #define FREQUENCY 50
    
    
    //uint8_t servonum = 0;
    uint8_t i;
    
    
    
    
    void setup()
    {
      Serial.begin(115200);
      Serial.println("16 channel Servo test!");
      pwm.begin();
      pwm.setPWMFreq(FREQUENCY);
    }
    int pulseWidth(int angle)
    {
      int pulse_wide, analog_value;
      pulse_wide = map(angle, 0, 180, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
      analog_value = int(float(pulse_wide) / 1000000 * FREQUENCY * 4096);
      Serial.println(analog_value);
      return analog_value;
    
    
      //pwm.setPWM(0, 0, pulseWidth(0));
    }
    
    
    void loop()
    {
    
    // servo für horizontale drehung
    
      for (i = 70; i <= 135; i++)
      {
        //Serial.println(i);
        pwm.setPWM(0, 0, pulseWidth(i));
    
        delay(50);
      }
    
      delay(500);
    
      for (i = 135; i >= 70; i--)
      {
        //Serial.println(i);
        pwm.setPWM(0, 0, pulseWidth(i));
    
        delay(50);
      }
    }
    hängt das hier auch mit dem "map" zusammen?
    gruß inka

  5. #15
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    433
    Blog-Einträge
    3
    hängt das hier auch mit dem "map" zusammen?
    Nö, da wird map() richtig benutzt.

  6. #16
    Erfahrener Benutzer Roboter Genie Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    72
    Beiträge
    1.460
    ich stell die ursprüngliche frage mal anders herum:

    mit diesem sketch:
    Code:
    /* meArm_Adafruit IK test - York Hackspace May 2014
     * Test applying Nick Moriarty's Inverse Kinematics solver
     * to Phenoptix' meArm robot arm, to walk a specified path.
     *
     * Pins:
     * Arduino    PWMServo
     *    GND         GND
     *     5V    VCC & V+
     *     A4         SDA
     *     A5         SCL
     * 
     * The Servos attach to the first block of four servo connections on
     * the Adafruit board, brown wire at the bottom, yellow wire at the top.
     * Adafruit    Servo
     *       0      Base
     *       1  Shoulder (right)
     *       2     Elbow (left)
     *       3   Gripper
     *
     * You can attach to a different block of four by changing the 'begin' call
     * to specify a block 0-3, e.g. to use the second block call arm.begin(1);
     * - to mirror movements to all 4 blocks, call arm.begin(-1);
     */
    #include "meArm_Adafruit.h"
    #include <Adafruit_PWMServoDriver.h>
    #include <Wire.h>
    
    
    meArm arm;
    
    
    void setup() {
      Serial.begin(115200);
      arm.begin();
    }
    
    
    void loop() 
    {
    //Go to start position
      arm.gotoPoint(0,100,50);
      
      //Clap - so it's obvious we're at this part of the routine
      arm.openGripper();
      arm.closeGripper();
      arm.openGripper();
      arm.closeGripper();
      arm.openGripper();
      delay(500);
      
      //Go up and left to grab something
      arm.gotoPoint(-80,100,140); 
      arm.closeGripper();
      //Go down, forward and right to drop it
      arm.gotoPoint(70,200,60);
      arm.openGripper();
      //Back to start position
      arm.gotoPoint(0,100,50);
      delay(2000);
      
    }
    werden diese bewegungen erzeugt:

    https://youtu.be/lR8RHupNr-s

    was haltet ihr davon, ist es für den aufbau ok und sollte ich meine erwartungen runterschrauben?
    gruß inka

  7. #17
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    50
    Beiträge
    1.409
    Was hast du denn für Servos verbaut?
    Für den Fall, dass es diese billigen SG-90 für 2€ sind (oder vergleichbarer Ramsch) finde ich, der bewegt sich doch ganz gut.
    Bei _diesen_ Hebellängen würde ich, wenn der Arm irgendwas anheben soll, wenigstens MG-90 verwenden.
    Die sind kräftiger und schneller.
    Das Problem bei Billigservos (auch den MG-90, nur sind die halt schon etwas besser) ist, dass sie gegen Ende des Weges kaum mehr Kraft haben, weil die Regelung sie dann "runterfährt" (wahrscheinlich um ein überfahren der Soll-Position zu verhindern), dadurch erreichen sie PosSoll aber nur schwer, vor allem, unter Last.
    Wenn du wissen willst, ob die Servos überhaupt ausreichend stark sind: lass den Greifer mal das schwerste halten, was der Arm bewältigen soll, und dann fahr den Arm möglichst weit aus- so dass du maximale Last am unteren Servo hast.
    Wenn es an dieser Position brummt, sind die Servos zu schwach.

    Ansonsten: bei vielen billigen Servos ist es so, dass die sich-selbst ohne Last-teilweise nicht wirklich geschmeidig bewegen. Das liegt einfach daran, dass in denen das billigste Gerümpel verbaut ist, was der Wühltisch hergab. Bessere Servos haben z.B. Doppelschleifer-Potis. Sowas fährt dann auch beim tausendsten Mal die gleiche Position immernoch _genau_ an.
    Billige schätzen ihre Position öfter einfach nur....
    Ebenfalls gern genommen, bei billigen Servos mit Kunstoff-Welle: wenn man die Schraube, die das Servohorn sichert, zu fest zieht, spreizt sich die Welle etwas auf- und das ganze Servo läuft schwer oder überhaupt nicht mehr.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  8. #18
    Erfahrener Benutzer Roboter Genie Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    72
    Beiträge
    1.460
    die servos, die bei dem arm dabei waren sind auch verbaut, es steht SG-90 drauf und beim preis des bausatzes von 12€ können sie nicht mal 2€ pro stück gekostet haben ...
    mir ging es bei diesem experiment - ich hatte vorher so gut wie nichts mit Servos am hut (ausser mal den Ultraschallsensor ein bischen hin und her zu schwenken) - hauptsächlich um die bewegung, die inverse kinematik (verstanden habe ich das thema noch lange nicht) weniger um das heben/halten von lasten. Aber den versuch mit den MG-servos mache ich noch...
    Aber du scheinst da einiges zu wissen? Beim drehen des arms wackelt ja das ganze ziemlich, wird das mit den MG-servos besser? Die geschwindigkeit ist nicht so das, was ich anstrebe, eine saubere bewegung schon...
    gruß inka

  9. #19
    Erfahrener Benutzer Roboter Genie Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    50
    Beiträge
    1.409
    ...ein bisschen besser wird es.
    Die SG sind so mies, dass sich sogar die Abtriebswelle etwas verdrehen kann, hehe. Beim MG (MG=metal gear) ist die aus Metall.
    Auch gibts zu den MG-90 bessere Servoarme- die von den SG verbiegen sich ja schon, wenn du sie scharf anschaust.
    Insgesamt sind die MG etwas stärker, ich vermute, dass daher auch die höhere Geschwindigkeit kommt, die SG haben ja schon im Leerlauf mit sich selber zu tun....

    An deiner Stelle würde ich, zumindest an den längeren Hebeln (an der Greiflkaue kommts ja eher nicht so drauf an) MG-90 einbauen. Die gibts auch im 3er oder 5er-Pack bezahlbar in Ebay.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Servotreiber RNS1
    Von Naturp im Forum Elektronik
    Antworten: 33
    Letzter Beitrag: 07.02.2010, 21:38
  2. ADC mit 12bit besser 16bit mit 1Wire oder I2C gesucht
    Von mat-sche im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 25.01.2010, 21:54
  3. wie verschicke ich 12bit per spi??
    Von drivepro82 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 21
    Letzter Beitrag: 16.09.2008, 19:36
  4. AVR 12Bit-PWM Lookuptable
    Von teslanikola im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 17.06.2008, 14:05
  5. einen 4bit und 8bit wertals 12bit Wert verarbeiten
    Von Olle_Filzlaus im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 14.08.2007, 11:42

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •