FIlament rounout sensor

edited December 2018 in Questions & Answers
wird es irgendwann möglich sein wie bei Octoprint einen Ganz normalen Endstop als Filament Runout Sensor zu nutzen? Nutze im Moment Klipper als Firmware und da ist das anders nicht möglich

Comments

  • Wir planen fürs nächste Release ein Monitor Skript einzufügen. Das wäre ein möglicher Anwendungsfall um solch ein Problem zu lösen. Das wäre dann eine kleine Lua Erweiterung in der man das programmieren kann. Geht jetzt schon mit einem externen Skript das dann über API die Pause auslöst.
  • edited December 2018
    Gibt's dafür dann schon ein Script oder hat sich da noch keiner Gedanken gemacht und es bereit gestellt
  • Denke schon das es das gibt, aber weiß nicht wer eins gebastelt hat. Gibt es vermutlich als python script - einfach ein pi pin abfragen script suchen auf den pin umstellen und z.b. mit curl den API Aufruf mit gcode "@pause Kein Filament mehr" schicken. Möglicherweis egibts auch einen leichten python Befehl aber Python ist nicht meine Programmiersprache. API format ist auf der Homepage unter web api beschrieben.
  • Okay danke für die Info denke ich schau mir das mal am Wochenende an und Fals es geht werde ich es posten
  • So hier mal das Script mit anleitung für den Repetier Server 10 mal getestet über Stecker und 1 mal beim druck

    Als Sensor nutze ich einen Ganz normalen Endstop (nur 2 kabel) mit Open und Close alles andere muss erst getestet werden
    Anschluss wie folgt bei dem Sensor ein kabel an einen Gpio Pin und das andere kabel an GND


    viel Spaß und erfolg beim probieren

    alles nur in deutsch. in englisch bin ich nicht so bewandert villeicht übersetzt es ja noch einer.

    Download: https://www.magentacloud.de/lnk/PMjUxhlE
  • Die Lösung gefällt mirch schon ziemlich gut.

    sudo apt install wiringpi

    ist übrigens der schnelle Weg wiring pi zu installieren. Unterstützt auch pi3+.

    Das einzige was zu Problemen führen könnte ist das es alle 0,5 sekunden pause schickt solange kein Filament anliegt. Das macht es unmöglich pause zu beenden ohne Filament. Es würde direkt wieder starten. Etwas besser wäre nach dem senden von pause auf das einlegen. Müsste dann ungefähr so aussehen (ungestestet)

    #!/bin/sh
    // Requires wiringpi: sudo apt install wiringpi
    #######Variable Edit bevor Use#########

    ip="localhost" #IP from Repetier Server
    port="3344" #Port from Repetier Server
    apikey="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"  #Your Api Key from Repetier https://www.repetier-server.com/en/wp-content/uploads/2017/02/33d3.png
    sensor="1" #Is Your sensor (without Filament) normaly closed use 0 or normaly Open use 1
    pin="5" #Gpio Pin where your sensor is connected (see table use wPi column )

    # +-----+-----+---------+------+---+--A Plus--+---+------+---------+-----+-----+
    # | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
    # +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
    # |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
    # |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5V      |     |     |
    # |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
    # |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | OUT  | TxD     | 15  | 14  |
    # |     |     |      0v |      |   |  9 || 10 | 0 | OUT  | RxD     | 16  | 15  |
    # |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
    # |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
    # |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
    # |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
    # |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
    # |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
    # |  11 |  14 |    SCLK |   IN | 0 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
    # |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
    # |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
    # |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
    # |   6 |  22 | GPIO.22 |   IN | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
    # |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
    # |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
    # |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
    # |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
    # +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
    # | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
    # +-----+-----+---------+------+---+--A Plus--+---+------+---------+-----+-----+
    ###################change nothing from here#####################################
    gpio mode $pin up
    gpio mode $pin in

    while true
    do

    result="$( gpio read $pin )"

    if [ "$result" = "$sensor" ]; then
    echo "Filament rounout" 

    while true
    do

    result="$( gpio read $pin )"

    if [ "$result" != "$sensor" ]; then
    echo "Filament inserted" 
      break
    fi

    sleep 0.5
    done
    fi

    sleep 0.5
    done
  • edited December 2018
    Danke für deinen Anregung. Ist mein erstes selbst geschriebenes Script. musste mich erst mal in alles einlesen und selbst da habe ich nur nach dem nötigsten erstmal gesucht

    hab das ganze angepasst und auch noch die Meldung M117 Filament Rounout alle 2 Sekunden senden lassen. Außerdem läuft die Server/Pin Config jetzt über eine extra Datei die bei der Installation durch abfrage der werte erstellte wird. Somit kann mann das Script dann auch updaten lassen

    Zu finden ist es ab sofort unter

    https://github.com/Raabi91/filament_rounout_Repetier


    Mfg Raabi

  • edited December 2018
    Habe gemerkt das ich einen schreibfehler im runout hatte

    fals der obere link irgendwann nicht mehr geht und ich nicht mehr editieren kann. das ist der neue


  • kommt immer Fehler beim installieren " command not found"
  • hi Sven wann kommt der fehler ?? die befehle was ich nutze ist eigentlich alles Standart
  • edited February 24
    Ich starte Putty.
    Kopiere "git clone https://github.com/Raabi91/filament_runout_Repetier "
    Dann kommt die Fehlermeldung
    "-bash: git: command not found "
  • Dann fehlt scheinbar das gut plugin zum clonen
    damit installieren und nochmals versuchen

    sudo apt install git
  • edited June 6
    V3 für mehrere sensoren am pi ist herausen

    https://github.com/Raabi91/filament_runout_Repetier
  • edited November 3
    Moin

    2 Fragen, läuft das ganze nicht am PI4 ?

    Habe einen 3adrigen Schalter angeklemmt.
    https://www.amazon.de/gp/product/B07FSXFPLD

    ROT an PIN2 (5V)
    SCHWARZ an PIN14 (GND)
    GRÜN/WEIß an PIN16 (wPI 4 / GPIO23)

    Ziehe ich das Filament raus (Teststück) passiert nichts. Druckt einfach weiter

    Config:
    #######Server/Sensor Config#########
    ip=localhost
    port=3344
    printer=AnetAM9
    apikey=a7cd7994-c6b2-4c19-a623-ab171bf130dd
    sensor=1
    pin=4
    #######Config End#########

    Tippe ich den Curl Befehl manuell ein, stoppt Repetier meinen Drucker.
    curl -k "http://localhost:3344/printer/api/AnetAM9?apikey=a7cd7994-c6b2-4c19-a623-ab171bf130dd&a=send&data={"cmd":"@pause Filament runout"} @pause Filament Rounout"

    Gleich eine 2te Frage hinterher. Soll der Drucker nur stoppen? Heizt der Extruder weiter? Gerade bei einem Nachtjob
    nicht schön....
    Mir wäre es ja lieber, wenn er das machen würde:

    - Filament Ende erkannt (Sensor offen)
    - Repetier: Drucker Pause
    - Retract 5mm
    - Fahre Z nach 10mm oben
    - Fahre auf X10 / Y10
    - Extruder aus
    - WARTE
    - Filament Neu erkannt (Sensor geschlossen)
    - Extruder an
    - Repetier: Druck fortsetzen gedrückt
    - Fahre zurück auf X / Y 
    - Fahre zurück auf Z
    - Druck fortsetzen
  • edited November 3
    Hab leider keinen pi 4 hier zum testen aber normal sollte es laufen. Kann jetzt an mehreren Gründen liegen müsste mann abarbeiten. den sensor kannst auch über putty prüfen in dem du das Script Manuel ausführst dann sollte es was anzeigen wenn du filament entfernst.

    zu der 2 frage. das ist alles Einstellungs sache in deinem server mit dem Script pausierst du nur repetier und den rest mach repetier das kannst aber einstellen alles
  • Kann es an den Rechten liegen?


    pi@Repetier-Server:~/filament_runout_Repetier $ ./filament.sh
    ./filament.sh: 5: .: Can't open /home/pi/filament_runout_Repetier/filament_runout_Repetier/Filament_config.sh


  • edited November 4
    normal sollte es noch einen unterordnen geben wo es die Datei nochmal gibt. Der unterordnen ist benannt nach dem namen des Sensors den du vergeben hast
  • So, am PI3 läufts

    pi@Repetier-Server:~/filament_runout_Repetier $ ./filament.sh
    Filament rounout
    {}{}{}{}{}{}{}{}{}{}{}{}{}Filament inserted
    {}


    Nun muss ich mal nach einem sinnvollen Gcode ran....

    Gruß
  • edited November 6
    okay dann muss ich mir mal einen pi 4 besorgen zum testen

    bzw ist das die Gekicher sd wie im pi 4 oder hast komplett neu aufgesetzt.

    Wenn es die gleiche ist könntest mal schauen welche wiringpi version du installiert hast
    geht über putty mit

    gpio - v


    danke
  • liegt wohl an wiringpi. anscheinend ist noch keine offizielle version für den PI4 vorhanden.
    die 2.50 war drauf, update auf 2.52 hat auch nicht geholfen
    http://wiringpi.com/wiringpi-updated-to-2-52-for-the-raspberry-pi-4b/

    Vielleicht wären gpiozero oder pigpio bessere alternativen zu wiringpi....


  • Ein Beispiel für den GCODE in Repetier (Sende bei Pause usw) würde mich interessieren, was
    ihr da stehen habt. Danke 
  • gpiozero: das ganze kann ich mir mal anschauen wenn ich mehr zeit habe 

    gcode kann ich dir aktuell nicht helfen da mein server nicht online ist gerade
Sign In or Register to comment.