- HEMS Solar Speicher Tutorial         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 566

Thema: outdoor I

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.677
    Blog-Einträge
    1
    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 21:04 Uhr)

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

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.677
    Blog-Einträge
    1
    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)

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

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    78
    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. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.677
    Blog-Einträge
    1
    Ist kein Problem!

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


    MfG

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    78
    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. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.677
    Blog-Einträge
    1
    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. #9
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    78
    Beiträge
    2.180

    wie empfindlich sind die A4988 eigentlich und wofür?

    Ich experimentiere immer noch ohne den akku, also mit einem streckernetzteil. Das handling damit ist warscheinlich schuld daran, dass die dinger bei mir wie die fliegen sterben! Einmal hab ich sogar alle vier auf einmal geschafft, ich weiss nicht wie. Die waren alle schon "richtig " an der seitenwand befestigt, allerdings gab es etwas druck auf den kühlkörper und damit den treiberbaustein. Die waren sachte angeklemmt. Kann das die ursache sein? Wie macht ihr eigentlich die dinger fest?
    gruß inka

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.677
    Blog-Einträge
    1
    ich habe es so gemacht, ist aber auch nicht richtig fest: https://www.roboternetz.de/community...7&d=1545060175
    Das ist generell irgendwie etwas unglücklich, weil ich auch aufpassen musste, dass der Kühlkörper nicht irgendwelche Überbrückungen erzeugt, was evtl. Kurzschluss auf der Platine bedeuten könnte (der Kühlkörper sollte nicht verrutschen). Ich glaub der liegt bei mir auf dem IC auf und auf den daneben angebrachten SMD-Widerständen, da ist nichts passiert.
    Bei mir ist nicht einer kaputt gegangen, obwohl ich immer damit gerechnet habe.
    Ich habe die Kühlkörper aber auch aufgebracht, weil ich die Treiber einlöte und so Wärme vom IC-Chip abtransportiert wird, ich wollte die Schädigung beim Löten vermeiden oder verringern.

    Wackelkontakt in der provisorischen Stromversorgung sollte vielleicht auch vermieden werden.

    Eine Idee wäre auch, einen Aufsatz für die Platine zu drucken (wie eine Klammer die von oben drauf zu setzen geht), wo eine Aussparung für den Kühlkörper drin ist, so dass der dort durchschaut und also nicht verrutschen kann (wenn das Teil jetzt ständig durchgerüttelt wird), wegen der Hitzebeständigkeit aber wohl kein PLA sondern etwas, was erst bei höheren Temperaturen weich wird (PLA bereits ab 50°C).

    Meine letzter Einfall: ist die Spannung vom Netzteil genügend geglättet? Nicht das dies der 4988-Platine schadet. Ich arbeite nur mit Akku und habe keinerlei Erwärmung des 4988 (allerdings auch nur geringe Leistungsabnahme bei kurzer Laufzeit bis max. 30sec).
    Hast Du einen Kondensator 100/220µF, zwischen Vmot und GND, an der Platine? Wenn nicht, bitte mal anbringen!

    Zum Probieren geht auch kurzfristig: Varta longlife MONO-D-Zellen zusammenschalten / löten. Da kommt man i.R. im nächsten Supermarkt dran. Habe ich auch schon gemacht.



    MfG
    Geändert von Moppi (25.10.2019 um 09:14 Uhr)

Seite 1 von 2 12 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
  •  

fchao-Sinus-Wechselrichter AliExpress