• So ganz schlau werde ich aus dem ganzen Azimtuh/Altitude Dingens nicht.
    Aber ja, ein generelles nach 200 Steps (ist ja definiert das 200 steps = 360Grad sind)
    wieder zurück gibt es weder im Python noch C++ Code, da der Servo mit reinspielt.
    Ich kann mir, werde ich sogar da es mich jetzt interessiert wie
    das funktioniert, das gerne nach die Feiertage anschauen.
    Bezgl. Feierage -> Frohes und erhlosames Fest für Dich und deine Famile.

    Cheers
    Claudia

  • Moin ihr beiden,
    das kam auch etwas zu "fordernd" rüber. Der Weihnachtsstress :)

    Ich prüfe das erst noch. Vielleicht dreht der sich doch wieder korrekt herum.
    Aber was ich auf jeden Fall noch machen muss, ist den Stepper am Ende des Überflugs AUS stellen.
    Der bleibt aktuell auf servo-start. Somit wird der Kopf des Robis warm, das überträgt sich nach unten in Richtung Display.
    Das Display ist nur geklebt und löst sich jetzt wegen der Wärme. Herrlich.

    Schaue ich mir an, wenn das Weihnachtskoma vorbei ist. Kann ja nicht viel sein.
    Ein http://192.168.1.77/stepper/stop erfüllt schon den Zweck. Nur noch herausfinden, wo das im Python-Code eingebaut werden muss.

  • Neue Möglichkeiten, neue Ideen:

    Ich habe jetzt eine durchgehende Achse und Schlepp gedruckt. Läuft sehr ruhig und stabil.

    Irgendwas stört noch im Code.
    http://192.168.1.77/stepper/stop funktioniert nur nach dem Start des Robis. Danach wird der Befehl laut Web-Rückmeldung zwar ausgeführt, aber der Motor bleibt auf "Bereit" (entsprechend warm).

  • Hi Don,

    Du hattest ja schon mal angemerkt, dass der Motor anscheinend nur in eine Richtung dreht
    aber nie mehr in die Ausgangsstellung zurück kommt. (hab ich so im Gedächtnis, sorry wenn ich
    mich irre)
    Hat sich da noch was ergeben in deinen Tests? Ist dem so?
    Aktueller Code ist wo?

    Zum Projekt, lustig wäre eine Parabolschüssel oben drauf, so wie bei SETI

    Cheers
    Claudia

  • Hi,

    der "nur in eine Richtung"-Effekt lag an meiner unsauberen Methode für die Achse.
    Zurück konnte der Motor bzw die Befestigung der Achse am Motor nicht richtig packen und ist somit nicht wieder komplett in die 0-Stellung gefahren.
    Jetzt, mit starrer Achse, funktioniert die 0-Stellung perfekt.

    Im Anhang die aktuell ino und py.
    In der py findet man noch 2 IP-Adressen. Das ist aber für den Code egal, da der an der Stelle eben nur ins leere führt.
    Die IP hat zwischenzeitlich auf die LED (Augen) gezeigt. Das habe ich aber komplett anders gelöst. Reed-Schalter der auf die Bewegung des Arms reagiert.

  • Ist dir aufgefallen, dass der Stepper warm ist und bleibt nachdem dieser was getan hat?
    Oder evtl. schon/nur vorher.

    Wenn vorher, dann ist wahrscheinlich der setup schuld.
    Im setup der ino wird der Port auf HIGH gesetzt.

    C
    // prepare STBY GPIO and set Stepper motors
      pinMode(STBY, OUTPUT);
      digitalWrite(STBY, HIGH);


    da bleibt es solange, bis der Port im main loop neu gesetzt wird

    C
    else if (req.indexOf("/stepper/stop") != -1) {
        digitalWrite(STBY, LOW);
        respMsg = "OK: MOTORS OFF";
      } 
      else if (req.indexOf("/stepper/start") != -1) {
        digitalWrite(STBY, HIGH);
        blink();
        respMsg = "OK: MOTORS ON";
      }


    daher würde ich im setup den Port eher auf LOW setzen.

    Ansonsten sehe ich im ersten Moment nur die Möglichkeit,
    das im Pythonmodule


    eine doppelte exception auftritt. Die erste würde im except block landen und wenn dann auch der urllib2.urlopen(cmd) fehlschlägt
    dann würde der Port wiederum auf HIGH stehen bleiben.
    Man könnte zwar eine while schleifen einbauen, die müsste aber auch irgendwan abgrochen werden damit nicht das ganze Script
    blockiert würde. Sowas im Sinne von



    Sinnvoll wäre evtl auch den resp.read Wert zu prüfen ob tatsächlich Motor off kommt und nicht etwas anderes.

    Cheers
    Claudia

  • Jetzt wo du es erwähnst ... ja, der startet immer im Status AN.
    Probiere ich aus.

    Ich bin heute morgen noch auf etwas anderes gestoßen:
    https://www.instructables.com/id/Simple-ISS-Notification-System/

    Auch interessant. Anscheinend alles auf dem ESP berechnet. Genau habe ich es mit aber auch noch nicht angeschaut.
    Wäre natürlich genial, wenn alles im Chip ohne externen Python-Code laufen könnte.

  • Auch interessant. Anscheinend alles auf dem ESP berechnet. Genau habe ich es mit aber auch noch nicht angeschaut.
    Wäre natürlich genial, wenn alles im Chip ohne externen Python-Code laufen könnte.

    Na im Grunde parsed er nur einen JSON String mit den aktuellen Koordinaten, wo sich die ISS gerade befindet :)
    Ähnlich mache ich das bei meinem Touch-Flight-Tracker auch, nur dass ich eben die Daten für die Darstellung der Flugzeuge auf dem Nextion verwende.

    Das ist wirklich recht komfortabel, wenn der JSON String nicht zu groß ist.

    Zum Problem mit dem warm werdenden Motor:
    Normalerweise sollte der Motor 1 (eigentlich 2) Enable Eingänge haben. Wenn die Selbsthemmung bzw. das Haltemoment groß genug ist, könntest Du die immer abschalten - oder Du fährst den Motor in eine "Safe" Position und schaltest ihn dann ab, ehe er für den neuen Run gebraucht wird. Welchen Typ verwendest Du nochmal? Denn manchmal redest Du von Servo, manchmal von Stepper :)

  • Ja, der LOW beim Start bringt schon mal genau das. Robi startet den Stepper nicht beim Boot.
    Danach kann ich den Stepper mit
    http://192.168.1.77/stepper/start anwerfen (man sieht die LEDs leuchten)
    und mit
    http://192.168.1.77/stepper/stop ausschalten (LEDs aus).

    Wenn ich aber auch nur einen Step-Befehl setze, wie zb:
    http://192.168.1.77/stepper/steps?200

    dann bringt ein
    http://192.168.1.77/stepper/stop
    nichts mehr. Es wird zwar noch im Webinterface quittiert:
    "OK: MOTORS OFF"
    Aber der Motor bleibt im ON-State.

    Vielleicht liegt es am Billigmodul/Motor.

  • Ob das jetzt weiterhilft weiß ich nicht aber


    LOW

    The meaning of LOW also has a different meaning depending on whether a pin is set to INPUT or OUTPUT. When a pin is configured as an INPUT with pinMode(), and read with digitalRead(), the Arduino (ATmega) will report LOW if:

    • a voltage less than 1.5V is present at the pin (5V boards)
    • a voltage less than 1.0V (Approx) is present at the pin (3.3V boards)

    When a pin is configured to OUTPUT with pinMode(), and set to LOW with digitalWrite(), the pin is at 0 volts (both 5V and 3.3V boards). In this state it can sink current, e.g. light an LED that is connected through a series resistor to +5 volts (or +3.3 volts).

    Hört sich nach deinem Problem an, oder? Der Motor zieht weiterhin Strom und bleibt warm!?

    Cheers
    Claudia

  • Da könnte ich mit einem Widerstand etwas probieren.
    Mir ist das auch schon hin und wieder aufgefallen, dass einige in den Projekten eine für mich auf den ersten Blick unsinnige Verkabelung bei Motoren vornehmen.
    Da wird dann zB bei einem Servo die Steuerleitung gleichzeitig mit einem Widerstand gegen Masse gezogen.
    Vermutlich aus genau diesem Grund.

    Aktuell sieht es so aus, wie geschrieben.
    Bei Start des Robis geht der Motor direkt in den LOW/Standby und bleibt kalt.
    Dann kann ich den per Befehl in den HIGH setzen und auch wieder in den LOW.
    Wenn ich den Motor aber ein paar Steps machen lasse, wodurch er ja in den HIGH gehen muss, kann ich den nicht wieder LOW setzen.
    Es spielt auch keine Rolle, ob ich den erst HIGH setze und danach erst die Steps fahre, und dann wieder LOW. LOW geht einfach nicht mehr.
    Der Befehl wird zwar angenommen, aber der Motor bleibt AN. Abgesehen von der Temperatur sieht man es auch an den Status-LEDs.

  • Gibt es vielleicht eine Möglichkeit, die Stromversorgung zum Motor zu unterbrechen, wenn er nicht genutzt wird? Ich denke da an ein externes Relais, etc.

    Wäre zwar weder elegant, noch hübsch - könnte aber für Abhilfe sorgen.

    Wobei der Motor schon auch von sich aus unbestromt geschaltet werden sollte...

  • Ist schon seltsam, oder?
    Heisst das dann das der Strom, der nötig ist um Schritte zu machen den Motor in Wallung bringt und dann der
    Strom der noch fließt wenn auf LOW gesetzt ihn in Wallung hält,
    aber einzele HIGH LOWS nicht genügend Strom liefern um ihn in Wallung zu bringen?

    Das ist doch alles Rakentwissenschaft - kann der net einfach a'sgehn wenn I's soag.

    Cheers
    Claudia

  • Da der Code schon laaange bedingt durch Python3 nicht mehr läuft, habe ich ChatGPT gefragt, ob es mich bei der Umsetzung unterstützen kann.
    Und Hölle noch eins, das ist wirklich gut.
    Alles wurde mir erklärt. Mit Sprachausgabe ist es schon "gruselig" gut. (Aber eher nichts für mich).
    Sogar Code-Doku im Code wurde nachträglich umgesetzt:

    Und funktioniert auch. Als nächstes werde ich das "Ticken" angehen. Der Servo tickt natürlich noch immer.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!