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

Thema: outdoor I

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    das hätte ich jetzt nicht aus dem Video heraus lesen können, aber wenn die Radachse (bis Reifen-Mitte) 10cm (ca. 1/3) länger ist als der Radabstand (Achse-Achse), müsste es tatsächlich so gehen!

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    ok, also radabstand (mitte-mitte) zu achslänge (mitte reifen) ist 270/330. Die achslänge wird ja auch durch die adapter zwischen rad und Schrittmotor mit-bestimmt, die lassen sich im notfall auch noch etwas länger drucken...

    - - - Aktualisiert - - -
    Geändert von inka (21.10.2019 um 17:43 Uhr)
    gruß inka

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    Die Batterie beschäftigt mich etwas. Der Spitzenstrom ist i.O.. Aber wenn Dauerstrom max. 5A sind, dann kann man die Leistung für die Motoren wohl nicht ausnutzen. Die brauchen ca. 1.5 bis 1.7A pro Motor, bei voller Leistung. Hier könnte man 2 Packs verbauen, falls es nicht ausreicht. Zunächst kann man aber über die Treiber den Strom auf 1A pro Motor drosseln. Muss man dann schauen, wie es um die Kraft bestellt ist. Evtl. an die Kühlkörper für die Treiber denken (z.B.: https://www.amazon.de/gp/product/B07...?ie=UTF8&psc=1)

    Es gibt auch noch andere Treiber, die mehr Leistung zur Verfügung stellen (8825): https://www.amazon.de/AZDelivery-DRV...al&sr=1-7&th=1



    MfG
    Geändert von Moppi (21.10.2019 um 20:04 Uhr)

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    Beiträge
    2.180
    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

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.645
    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 09:22 Uhr)

  6. #6
    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.

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    76
    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

  8. #8
    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 !

  9. #9
    HaWe
    Gast
    Zitat Zitat von Rabenauge Beitrag anzeigen
    Echtes Multitasking funktioniert mit nem Single-Core nicht.
    Man muss zwischen Multitasking und Multithreading unterscheiden, oft wird das nicht scharf getrennt.
    Auf kleinen MCUs ist es Multithreading (time slice scheduling, round-robin), und hier stimmt das so nicht mit Single- vs. Multicores: der Due (M3 SAM) ist z.B. ein Singlecore, der mit der Scheduler Lib recht gutes kooperatives Multithreading kann, dieselbe Lib läuft auch z.B. mit einem M0/Zero (SAMD).
    Auch die neuen SAMD M4 (ebenfalls Singlecores) beherrschen laut Arduino Multithreading.
    Die Scheduler Lib wurde zwischenzeitlich auch für AVRs portiert, erfordert aber deutich mehr Justierungen für das Speichermanagement.
    Hier werden vom Thread Scheduler jedem Thread je eine eigene Zeitscheibe zugeteilt, und bei Wechsel zur nächsten alle Variablen und Register gesichert - ist er wieder dran, werden alle wieder zurückgelesen und dort weitergemacht, wo vorher aufgehört wurde.

    Doch auf Multicores läuft es deutlich besser, wie z.B. auf dem ESP32: der kann sogar preemptives Multithreading (ähnlich POSIX pthread und C++ std::thread), wobei jeder seiner beiden Cores genau so time-slice scheduling macht mit sehr vielen Parallel-Threads wie ein Singlecore - grundsätzlich nicht anders, aber hier können eben z.B. 20 Threads auf 2 "Schultern" verteilt werden.

  10. #10
    HaWe
    Gast
    ohne Regler für DC-Motore mit Rotationsencodern wird es nicht gehen:
    für Geschwindigkeits-Konstanz mindestens P (besser PD),
    für Zielpunkt-Annäherung mindestens PD (besser PID).
    Das Tunen und Feintunen der Regler ist allerdings wirklich ziemlich tricky und zeitaufwändig.

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte

Ähnliche Themen

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

Berechtigungen

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

12V Akku bauen