- 3D-Druck Einstieg und Tipps         
Seite 2 von 57 ErsteErste 12341252 ... LetzteLetzte
Ergebnis 11 bis 20 von 566

Thema: outdoor I

  1. #11
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Anzeige

    Praxistest und DIY Projekte
    die anderen treiber haben die gleichen abmessungen und die gleichen anschlüsse, wie mir scheint. Also auch zum späteren zeitpunkt einsetzbar, denke ich. Aber danke für die ausführungen

    Ein zweiter akku hätte natürlich auch platz im gehäuse...

    Was mich aber im moment beschäftigt sind die Stepper und treiber ( A4988 ) und deren behandlung im sketch:

    den ersten code habe ich mit der accelstepper lib geschrieben, komme damit aber nicht so gut zurecht


    Code:
    // https://www.makerguides.com/a4988-st...uino-tutorial/
    
    /*Example sketch to control a Stepper motor with A4988 Stepper motor driver, AccelStepper library and Arduino:
      acceleration and deceleration. More info: https://www.makerguides.com */
    // Include the AccelStepper library:
    #include <AccelStepper.h>
    
    
    uint8_t idx;
    
    enum stepper_e
    { stepper_VL, stepper_HL, stepper_VR, stepper_HR, stepper_MAX };
    
    
    AccelStepper stepper[stepper_MAX]
    {
      AccelStepper(1, 2, 3),
      AccelStepper(1, 4, 5),
      AccelStepper(1, 6, 7),
      AccelStepper(1, 8, 9)
    };
    
    void setup()
    {
    
      Serial.begin(115200);
    
      Serial.println("code---- /home/georg/Arduino/outdoor_robo/stepper/test_vier_stepper/vier_stepper_acceleration_and_decceleration_1");
    
      for (idx = stepper_VL; idx < stepper_MAX; idx++)
      {
        stepper[idx].setMaxSpeed(400);
        stepper[idx].setAcceleration(30);
        //    stepper[idx].setDirection(CCW);
        //    stepper[idx].rotate(1);
    
    
      }
    }
    
    
    void loop()
    {
    
      vorwaerts();
    
      delay(1000);
    
      rueckwaerts();
    
      delay(1000);
    }
    
    void vorwaerts(void)
    {
      //  rotate_li = true;
    
      for (idx = stepper_VL; idx < stepper_MAX; idx++)
      {
        stepper[idx].moveTo(600);
        stepper[idx].runToPosition();
        stepper[idx].setSpeed(300);
        //    stepper[idx].rotate(1);
      }
    
      /*  for (idx = stepper_VR; idx < stepper_MAX; idx++)
        {
          stepper[idx].moveTo(600);
          stepper[idx].runToPosition();
          //    stepper[idx].setDirection(CW);
          //    stepper[idx].rotate(1);
        }*/
    }
    
    void rueckwaerts(void)
    {
      //  rotate_li = true;
    
      for (idx = stepper_VL; idx < stepper_MAX; idx++)
      {
        stepper[idx].moveTo(0);
        stepper[idx].runToPosition();
        stepper[idx].setSpeed(300);
        //    stepper[idx].rotate(1);
      }
    
      /*  for (idx = stepper_VR; idx < stepper_MAX; idx++)
        {
          stepper[idx].moveTo(0);
          stepper[idx].runToPosition();
          //    stepper[idx].setDirection(CW);
          //    stepper[idx].rotate(1);
        }*/
    }
    Vorher verwendete ich die customstepper lib, allerdings mit dem stepper_28BYJ_48 und ULN2003 treiber. Geht die customstepper auch mit den NEMA17 Schrittmotoren und den A4988 treibern? Da gibt es ja nur die pinns "step" und "dir". Wie mache ich das? Zum beispiel die richtungsangabe (CW / CCW). Da finde ich den zugang dazu irgendwie nicht
    gruß inka

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    die anderen treiber haben die gleichen abmessungen und die gleichen anschlüsse, wie mir scheint. Also auch zum späteren zeitpunkt einsetzbar, denke ich. Aber danke für die ausführungen
    Deswegen hatte ich das erwähnt, falls Du später evtl. ein Problem haben solltest, dass Du gleich einen Ausweg parat hast. Allerdings ist es so, dass meine NEMA17, die ich zuhause habe (heute Morgen nochmals ins Datenblatt geschaut) 1.5A Nennstrom haben, bei 2.xV (2.5 .. 2.8V). Die Spannung am Treiber soll möglichst hoch sein, damit bei schnellen Umdrehungen viel Kraft aufgebaut werden kann. 24V wären da evtl. überlegenswert.

    Um nochmal einen Tip zu der Treibersteuerung zu geben:
    Die ist wirklich sehr, sehr einfach. Einfach die Steuerpins eines Treibers mit Pins vom Arduino verbinden und Quellen zur Ansteuerung durchlesen und programmieren. Ich würde keine LIB von jemand anderem verwenden. Ich hatte Dir ja schon Quellen geschickt.
    Step und Dir brauchst Du ja auch nur, um einen Schritt (Step) in die eingestellte Richtung (Dir) zu machen. Ansonsten kannst Du noch Vollschritt, Halbschritt, 16tel Schritt etc. über die Steuerpins einstellen (damit kann mal herumprobieren - ist recht interessant aber nicht "überlebenswichtig").
    Ich sehe gerade: runToPosition();
    Ein Stepper ist ja kein Servo. Eine bestimmte Position anzufahren, ist mit einem Stepper nur möglich, wenn Du die Ausgangslage kennst. Der kann soundsoviele Schritte pro Umdrehung machen (steht in der Doku wieviele), das ist alles.

    Vieles oder einiges wirst Du schon wissen ... nur nochmal so erwähnt.

    Ich habe mir nochmals Mühe gemacht und die essentiellen Sachen zur Steppersteuerung, mit dem 4988, aus meinem Blog kopiert, um zu ermutigen:

    Code:
    //-----------------------------------------------------------------------------
    //A4988
    #define Dir 8
    #define Step 9
    #define Sleep 10
    #define MS3 11
    #define MS2 12
    #define MS1 13
    //-----------------------------------------------------------------------------
    
    
    //Ausgänge für Motortreiber
      pinMode(Dir, OUTPUT);
      pinMode(Step, OUTPUT);
      pinMode(Sleep, OUTPUT);
      pinMode(MS3, OUTPUT);
      pinMode(MS2, OUTPUT);
      pinMode(MS1, OUTPUT);
      
    //-----------------------------------------------------------------------------
    
    
    //Den Schrittmodus am Motortreiber einstellen:
    //-----------------------------------------------------------------------------
    void StepMode(byte mode){
     switch(mode){
      case 0:
        digitalWrite(MS1, LOW);
        digitalWrite(MS2, LOW);
        digitalWrite(MS3, LOW);
        break;
      case 1:
        digitalWrite(MS1, HIGH);
        digitalWrite(MS2, LOW);
        digitalWrite(MS3, LOW);
        break;
      case 2:
        digitalWrite(MS1, LOW);
        digitalWrite(MS2, HIGH);
        digitalWrite(MS3, LOW);
        break;
      case 3:
        digitalWrite(MS1, HIGH);
        digitalWrite(MS2, HIGH);
        digitalWrite(MS3, LOW);
        break;
      case 4:
        digitalWrite(MS1, HIGH);
        digitalWrite(MS2, HIGH);
        digitalWrite(MS3, HIGH);
     }
    }
    //-----------------------------------------------------------------------------
    
    //einen Schritt machen:
          digitalWrite(Step, HIGH);
          delayMicroseconds(i);     //i bestimmt die Pause zwischen den Signalflanken und damit die Geschwindigkeit (abhängig vom eingestellten Step-Mode)
          digitalWrite(Step, LOW);
          delayMicroseconds(i);
    
    
    //-----------------------------------------------------------------------------
    //Richtung bestimmen:
    
    
         digitalWrite(Dir,LOW); //digitalWrite(Dir,HIGH);
    
    
    
    
    //-----------------------------------------------------------------------------
    //Die Motor Start-/Stopfunktionen. Wie man sieht, wird hier nur der Treiber schlafen geschickt; damit wird der Motorstrom abgeschaltet.
    //Wird der Motor hier "gestartet", wird er unter Strom gesetzt, dreht sich aber noch nicht.
    
    
    void power_a4988_disable(){
      digitalWrite(Sleep, LOW); 
    }
    void power_a4988_enable(){
      digitalWrite(Sleep, HIGH); 
    }

    MfG
    Geändert von Moppi (22.10.2019 um 10:22 Uhr)

  3. #13
    HaWe
    Gast
    auch wegen Steuerung und Odometriefähigkeit halte ich Stepper für den Antrieb für suboptimal, denn zusätzlich zum Schlupf kommen auch noch verschluckte Steps und passive Verdrehungen unter Last als Problem dazu, sodass man die aktuelle Drehposition noch unzuverlässiger ermitteln kann als bei DC-Motoren mit Rotationsencodern.

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von inka Beitrag anzeigen
    Geht die customstepper auch mit den NEMA17 Schrittmotoren und den A4988 treibern?
    Die Frage lässt sich so nicht beantworten. NEMA17 beschreibt nur das Flanschmass des Motors. Über die elektrischen Eigenschaften wie Strom, Spannung, Leistung Uni oder Bipolar sagt der NEMA-Wert nichts aus. Nema 17 bedeutet der Motor hat eine Front mit 42x42mm und die Befestigungslöcher haben einen Abstand von 31mm. Das hat mit dem Treiber alles nichts zu tun.

    Da gibt es ja nur die pinns "step" und "dir". Wie mache ich das? Zum beispiel die richtungsangabe (CW / CCW). Da finde ich den zugang dazu irgendwie nicht
    Ist doch recht einfach. Für jeden Puls am step-Eingang dreht der Motor um einen Schritt. Und in welcher Richtung bestimmt das direction, das Richtungs-Signal. Dabei kann der Motor ClockWise also rechtsrum wie die Uhr oder CounterClockWise, linksrum drehen. Amis kürzen das halt gern ab.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  5. #15
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von Moppi Beitrag anzeigen
    Die ist wirklich sehr, sehr einfach. Einfach die Steuerpins eines Treibers mit Pins vom Arduino verbinden und Quellen zur Ansteuerung durchlesen und programmieren. Ich würde keine LIB von jemand anderem verwenden. Ich hatte Dir ja schon Quellen geschickt.
    gutes beispiel aus Deinem blog, danke für deine mühe, ich habe es aber rein zufällig entdeckt, weil ich selten nach hinten blätere, so entgehen einem die nachträglichen editierungen... Wäre schade drum gewesen...
    Eine durchaus interessante möglichkeit der direkten programmierung ohne eine lib. Ich finde das aber nicht unbedingt übersichtlicher als eine lib bzw. die befehle aus einer lib:

    Code:
    void vorwaerts(void)
    {
      for (idx = stepper_VL; idx < stepper_VR; idx++)
      {
        stepper[idx].runSpeed();
        stepper[idx].move(-100);
      }
    
      for (idx = stepper_VR; idx < stepper_MAX; idx++)
      {
        stepper[idx].runSpeed();
        stepper[idx].move(100);
      }
    }
    hier sehe ich spätestens auf den zweiten blick was da passiert und muss mich nicht unbedingt mit der "hintergrundaktivität auf bitebene" belasten...
    gruß inka

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Ist kein Problem!

    Jeder macht es so, wie er am besten damit zurecht kommt.


    MfG

  7. #17
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    inzwischen drehen die Stepper brav alle gleichzeitig und gleichmässig vor sich hin... Jetzt habe ich das teil hochgebockt und betreibe es mit einem steckernetzteil, weil ja der akku noch fehlt...
    Wie war das noch mal mit der strombegrenzung an den treibern?
    gruß inka

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    an dem kleinen Drehpoti drehen!

    Nach einer Richtung bleiben die Stepper stehen (weil Strom zu niedrig wird), nach der andern Richtung gedreht gelangt ein höherer Strom zum Stepper (max 1.5 bis 1.7 A oder mehr - kommt auf die Treiberplatine an). Man kann das auch messen/bestimmen, ist aber recht fummelig. Habe ich deshalb nie gemacht, weil auch nicht gebraucht.

    Willst Du wissen wie? Schau hier: https://www.derpade.de/3d-drucker-a4...ke-einstellen/
    Und nochmal mit einem DRV8825: https://www.my-home-fab.de/de/dokume...rom-einstellen


    MfG
    Geändert von Moppi (23.10.2019 um 09:29 Uhr)

  9. #19
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Zitat Zitat von Moppi Beitrag anzeigen
    das kenne ich, die fummeligen potis auch. Als ich versucht habe daran zu drehen merkte ich nicht mal dass sich was ändert? Ich dachte da gäbe es noch ein softwaremässige möglichkeit um den strom zu begrenzen?
    gruß inka

  10. #20
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Nein, bei den Teilen nicht, da gibts andere Treiber, wo man den Strom digital einstellen kann, sind auch einiges teurer.

    Du merkst da so nicht viel, wenn die Last fehlt, musst Du ein Rad festhalten und probieren.

    Stell auf Max-Strom ein (Anschlag links oder rechts) damit der Motor den maximalen Strom für jede Wicklung bekommen kann. Je höher dann die "Motor"-Spannung am Treiber, desto "kraftvoller" dreht der Motor auch bei schnelleren Schrittfolgen. So Pi mal Daumen ausgedrückt. Wenn der Schrittmotor sehr schnell sehr warm wird, ist es vielleicht etwas viel des Guten gewesen.
    Geändert von Moppi (22.10.2019 um 17:46 Uhr)

Seite 2 von 57 ErsteErste 12341252 ... LetzteLetzte

Ähnliche Themen

  1. Abstandsmessung Outdoor bis 3m
    Von robo218 im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 14.12.2017, 07:56
  2. outdoor spy robot
    Von jancrombach im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 14.08.2010, 14:09
  3. Outdoor Roboter
    Von OsramLED im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 3
    Letzter Beitrag: 07.08.2006, 10:34
  4. Outdoor-Robo
    Von RobotrixerP im Forum Mechanik
    Antworten: 3
    Letzter Beitrag: 16.04.2006, 19:38
  5. Outdoor - Navigation
    Von Quaio im Forum Sensoren / Sensorik
    Antworten: 37
    Letzter Beitrag: 21.04.2005, 13:31

Berechtigungen

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

Solar Speicher und Akkus Tests