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
«1

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 2019
    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 2019
    V3 für mehrere sensoren am pi ist herausen

    https://github.com/Raabi91/filament_runout_Repetier
  • edited November 2019
    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 2019
    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 2019
    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 2019
    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
  • Hi euch allen, erstmal ein großes Lob ans Forum hab mir schon so manche Info herausgelesen die sehr hilfreich war ;-) und zudem auch ein schönes neues Jahr =).
    Dann dachte ich mir, Versuchs doch mal mit einem Runout Sensor, aber aus irgendeinem Grund will es nicht so funktionieren =(.

    Meine aktuelle Aufstellung:
    Repetier Server auf einem Windows Rechner
    4 x 3D Drucker (für den ersten Test würde mir mal 1ner reichen (Modell Anet A8 - Software Skynet 3D))
    Code -> Letzte hier im Forumsbeitrag mit mehreren Sensoren wie beschrieben installiert.
    Endstop mit C - NO -NC
    Anschluss beim Endstop
    C -> GND
    NO -> GPIO 4 (ist auch in den Einstellungen so eingestellt)
    Signal Einstellung ist auf 1
    Getestet auf 2 raspberry Pi (einmal 3B+ und einmal Zero w) vorzugsweise der Zero w da er weniger Platz einnimmt ;-).

    Nun zu meinem Problem:

    Hatte bei Beiden Pi dieselben Probleme.

    Ich selbst bin ziemlicher Neuling im Bereich PI Programmierung (kenne mich aber im Bereich Programmierung ein wenig aus z.B. VB)

    Problem:
    Verbindung funktioniert, der Befehlt M117 wird gesendet und wird unter Repetier Server auch in der Konsole angezeigt. Aber leider ist dem das ziemlich egal ob ich den Endstop betätige oder nicht M117 wird dennoch gesendet (betätigt und nicht betätigt).
    Hab es auch mal ohne Schalter, einfach mit Zusammendrehen der Drähte versucht dasselbe Problem =(.

    Nun zu meinen Fragen:

    1)    Muss ich hier vielleicht noch einen Widerstand dazwischenschalten das er das realisiert, das hier was geschaltet wird (aus irgendeinem Grund immer was anliegt. Oder ist die Software mit diesen Modellen nicht kompatibel und es funktioniert deswegen nicht.

    2)    Der Befehl M117 wird auch super angezeigt am Display aber der Druck geht nicht in Pause muss hier nicht der Befehl @pause geschickt werden? Wie mache ich das, hab schon versucht die URL durch löschen von „M117 Filament runout“ durch „@pause“ zu ersetzen und hat auch funktioniert (nur wie in Punkt 1 ständig) aber es hat funktioniert =).

     Ist das aber gewollt das ich den Code manuell umschreiben muss oder sollte das auch ohne Modifikationen funktionieren?

    3)    Gibt es eine Möglichkeit dies auch zu testen (was wird gesendet) ohne immer einen druck starten zu müssen, wen ja wie mache ich das?

    Vielen Dank euch allen schon mal im Voraus
    Grüße
    withewolf



  • edited January 2020
    Das script muss so laufen wie es ist wenn alle settings passen da wird dann auch das @pause geschickt. so wie es such für mich anhört regestriert er den pin nicht auch den richtigen pin bei wiringpi ausgewählt? Wenn das passt Dann versuch mal einen anderen gpio pin.

    Einen Wiederstand brauchst nicht selbst getestet mit einen normalen Endstop wie du hast
  • Hi raabi,

    super vielen dank jetzt läufts =). Mein Fehler war das ich in GPIO gedacht habe nicht in Pins ;-) und deshlab den falschne Pin verwendet habe.

    Vielen Dank
    Grüße
    withewolf
  • Hi, bin komplett neu im Thema mit Repetier Server und rasberry pi. Gibt es eine Neuerungen zu dem Filament Sensor Programm und wie man es auf dem pi 4 zum laufen bekommt? Und gibt es auch eine Anleitung wie man es auf den pi installiert und richtig anschließt? entschuldigt die blöde frage aber habe echt keine ahnung <span>:neutral:</span>
  • Wiringpi für Raspberry 4b Versin 2.52 installieren


    Ich versuche mal zu helfen,hatte da als Neuling zum Thema Raspberry Pi auch so meine Schwierigkeiten.

    PC und Rasperry pi am besten über Lankabel ans gleiche Netztwerk anschließen, sollte auch mit Wlan funktionieren, wenn es eingerichtet ist.

    Raspberry natürlich einschalten!

    http://wiringpi.com/wiringpi-updated-to-2-52-for-the-raspberry-pi-4b/

    Putty downloaden

    https://www.putty.org/

    Putty starten

    Repetierserver auswählen


    192.168.178.34
     
    Diese Adresse müst ihr bei euch im Router nachschauen ,wohin der Repetierserver gelegt worden ist.
    192.168.1.1 gilt für die meisten Router
    192.168.178.1 ist für Fritzbox Router,den habe ich.
    Dort einlogen und nachsehen welche Adresse der Repetierserver hat.
    Wenn ihr es ertmittelt habt, dann diese Adresse in Putty oben in das Fenster unter Host Name eingeben
    Port 22 kann bleiben
    SSH auch
    Dann mit open die Eingabemaske starten.
    jetzt folgendes eingeben um darauf zugreifen zu können:


    Eingabe: pi

    Passwort: raspberry

    Folgende Zeilen kopieren und mit rechter Maustaste einfügen und jeweils mit Enter bestättigen:


    sudo apt-get install wiringpi

    cd /tmp

    wget https://project-downloads.drogon.net/wiringpi-latest.deb

    sudo dpkg -i wiringpi-latest.deb

    sudo reboot

    Jetzt sollte Wiringpi 2.52 installiert sein.
    Um den Runoutsensor zu installieren
    Putty nochmal wie oben mit dem Drucker verbinden.

    Jetzt die Anleitung von Raabi91 in deutsch,nur das nötigste:

    https://github.com/Raabi91/filament_runout_Repetier

    Folgende Befehle kopieren und einfügen:



    sudo apt install git

    git clone https://github.com/Raabi91/filament_runout_Repetier

    cd filament_runout_Repetier

    sh install_filament.sh


    Jetzt kommen einige Abfragen wie:

    Server Ip ,ist hier wie oben die ermittelte : 192.168.178.34
     
    Server Port :  3344

    Printer Name :  Name Eures Druckers hier nachschauen:https://www.repetier-server.com/en/wp-content/uploads/2017/02/s3d2.png

    API-key : hier nachschauen: https://www.repetier-server.com/en/wp-content/uploads/2017/02/33d3.png

    Sensor normalerweise geschlossen,also : 0

    Pin der von WiringPi : 2

    number : 1

    sudo reboot


    Jetztz sollte der Sensor schon funktionieren,allerdings braucht der Server noch Befehle damit der Drucker weiß was er bei einem Runout tun soll.
    Unter Druckerliste-Druckereinstellungen-G-Codes-Ereignisabhängig im Feld "Sende bei Pause"
    Zeilen einfügen was er tun soll.
    Bei mir steht z.B. folgendes drin.

    G91
    Z+2
    G90
    G1 y15 F5000
    M0

    Er Fährt von letzter Z Position 2mm höher und auf Y 15mm.
    Jetzt kann man das Filament wechseln und den Druck fortsetzten.
    Wer möcht kann natürlich auch noch das Filament ein Stück zurückfahren,usw.


    Schwarzer Runoutsensor hat 3 Kabel:

    Rot : 5V
    Schwarz : GND  0V
    Grau Sensor : an WiringPi Pin 2, das ist GPIO 27

    Achtung habe hier den Runoutsensor in Weiß und Schwarz ausprobiert. Schwarz funktioniert, weiß nicht!
    Der Weiße hat eine Led die leuchtet der Schwarze nicht, vermute das der anders geschaltet wird.
    Ich habe den weißen auf jeden Fall nicht zum Laufen gebracht!
    Die Sensoren kann man günstig über Alieexpress beziehen.






  • @UPS
    so wie es sich ließt hast du einen 4er pi und es läuft bei dir wenn du das bestätigen kannst das nehme ich die Anleitung dazu auf im github

    ich habe leider immer noch keinen 4er und wenig zeit deswegen bin ich nicht dazu gekommen

    zu dem Thema Sensor weiß schwarz kannst ja mal Bilder posten z.b bei einem bekannten haben wir einen Sensor mit led verbaut

    Hoffe das das Script noch sauber läuft da ich leider kein Repetier Server mehr habe 

    gruß raabi
  • Hallo rabbi,
    ja ich habe sogar zwei Raspberry Pi 4B und beide so installiert.
    Die weißen Sensoren hatte ich mal bei irgendeinem Touch Display dabei bekommen meine ich. Die schwarzen Sensoren hatte ich letztens bei Aliexpress bestellt und die funktionieren einwandfrei.

    Das Skript läuft einwandfrei, hab allerdings einen Fehler in dem G Code oben da muss ein großes Y 15 hin, dann fährt der Drucker auch auf die Position.

    Also nochmal der G Code

    G91
    G1 Z+2
    G90
    G1 Y+15 F5000
Sign In or Register to comment.