Schalt(schrank)brett und GRBL-Board by Marian

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Schalt(schrank)brett und GRBL-Board by Marian

      Hallo zusammen,

      ich bin endlich dazu gekommen mein Verkabelung ordentlich zu machen und das ganze hängt jetzt auf einem Brett an der Wand. Zusammen mit meinem Router und einer Netzwerkfestplatte.
      Links unten finden sich zwei zweipolige Schütze die mir als Hauptschalter dienen, eins für die Fräse und das zweite für meine Bewässerungsanlage auf dem Balkon. Daneben dann Netzteile 12V und 5V, sowie Relais für die Spindel und Absaugung.
      Oben in der Mitte hängt eine Raspberry auf dem habe ich bCNC laufen, auf welches ich dann remote übers Netzwerk zugreife.



      Wie geschrieben würde ich im Zuge des Umbaus gerne auch die Spindel sowie Absaugung aktiv schalten. Als Spindel fungiert aktuell eine Oberfäse, so dass Schalten bedeutet, die Steckdose am Turm, zu schalten, keine Drehzahlvorgabe. Dabei stoße ich aber an die Grenze des GRBL Boards. Ich habe jetzt einige Compiler Optionen für GRBL 1.1 durchgetestet und bin folgenden fast glücklich:
      • #define VARIABLE_SPINDLE - Muss bleiben, da ansonsten die Pin Zuweisung am parallel Port nicht mehr stimmt.
      • #define USE_SPINDLE_DIR_AS_ENABLE_PIN - Damit kann ich Pin 13 als Enable Pin nutzen und über die Lötbrücke auf das Relais der Steuerungsplatine legen.
      • #define SPINDLE_ENABLE_OFF_WITH_ZERO_SPEED - schaltet Enable auch bei einer gesetzen Drehzahl von 0 ab.
      • $N0=M5 - Beim Starten des Arduinos immer ein Spindel_aus senden
      Wie in der Doku beschrieben führt Pin 13 (rote LED auf dem Arduino) im Bootloader und auch beim Verbindungsaufbau von bCNC zum GRBL ein Eigenleben. Als Abhilfe wird empfohlen den Arduino direkt über ISP ohne Bootloader zu flashen. Hat das schon jemand gemacht, hilft das? Ich habe meinen AVR Programmer leider gerade nicht zur Hand. Habe auch versucht das SPINDLE_DIR Signal direkt zum Schalten der Spindel zu verwenden. Das wird aber bei M5 nicht abgeschaltet, sondern nur beim Wechsel nach M4. Mit M3 wird es dann wieder angeschaltet.

      Ich habe v2 von der Platine, gibt es da inzwischen einen Nachfolger? Ansonsten bestünde Interesse an einer etwas erweiterten Version? Ich dachte daran, die Zuordnung von Z_LIMIT und SPINDLE_ENABLE über Lötbrücken in Richtung Parallelport tauschbar zu machen, falls man VARIABLE_SPINDLE abschalten möchte.
      Genügend Platz, damit man die Spindel, Coolant und Bedientaster auch mit Klemmen herausführen kann.

      Gruß Michael
    • Hallo.

      SPINDEL_DIR liegt auf Pin 13 vom Arduino. Das ist auch der Pin an dem die interne LED angeschlossen ist. Eigentlich alle Bootloader blinken die drei Mal oder so kurz auf, um zu zeigen, dass der Bootloader aktiv ist.

      Nun gibt es mehrere Möglichkeiten:
      - Wie vorgeschlagen, flashst Du GRBL direkt auf den Arduino per ISP ohne Bootloader.
      - Du kompilierst Dir eine eigene Version von Optiboot und stellst dort ein, dass er nicht blinken soll, wenn der Bootloader ausgeführt wird. Dann kannst Du danach noch "normal" per USB-Kabel programmieren.
      - Du könntest versuchen den VARIABLE_SPINDLE_PWM-Pin zum Schalten des Relays zu benutzen. Der liegt auf Pin 11 und hat das Blink-Problem nicht. $30 gibt den "Max. Spindle Speed" an. Wenn Du den ganz niedrig einstellst (niedriger als die kleinste Drehzahl, die Du jemals im G-Code angibst), dann sollte GRBL den VARIABLE_SPINDLE_PWM immer auf "Voll an" setzen, so dass man ihn als Relay-Schaltimpuls benutzen können sollte.

      Viel Erfolg,
      Lars
    • chaotix wrote:

      - Du könntest versuchen den VARIABLE_SPINDLE_PWM-Pin zum Schalten des Relays zu benutzen. Der liegt auf Pin 11 und hat das Blink-Problem nicht. $30 gibt den "Max. Spindle Speed" an. Wenn Du den ganz niedrig einstellst (niedriger als die kleinste Drehzahl, die Du jemals im G-Code angibst), dann sollte GRBL den VARIABLE_SPINDLE_PWM immer auf "Voll an" setzen, so dass man ihn als Relay-Schaltimpuls benutzen können sollte.
      Hallo Lars,

      die Idee hat was, ich werde aber stattdessen #define SPINDLE_PWM_MIN_VALUE 254 als Compiler Option setzen, damit schwankt bin ich unabhängig von der Drehzahl im G-Code. Sollte weniger fehleranfällig sein.

      Da ich dann eh die Brücken an der Platine setzen muss, werde ich die Pins Spindle_DIR und Spindle_PWM auf Pins 17 und 16 des Parallel Ports legen. Damit sollte ich die an den Steckern für die 5. Achse abgreifen können und das Relay nutze ich dann zum Schalten der Absaugung über Coolant_EN.

      Werde ich gleich mal ausprobieren.

      Gruß Michael
    • Das sieht gut aus und scheint zu funktionieren. Ich musste noch #define INVERT_COOLANT_FLOOD_PIN setzen.
      Leider habe ich jetzt kein 5V Relay zur Hand, um die Spindel zu schalten. In dem Hutschienenhalter steckt aktuell ein 24V Relais.
      Ist generell die Frage, hat jemand einen Schaltplan zu der Steuerplatine? Mich würde interessieren, was da genau verbaut ist. Da die Ausgänge bei HIGH Pegel am Arduino ja nach Masse schalten, muss da ja ein Treiber IC / Optokoppler oder irgend etwas dazwischen sitzen. Ist natürlich interessant ob ich damit direkt ein 5V Relay jetzt schalten kann?

      Gruß Michael
    • Hallo Michael,

      sauberer Aufbau deiner Schaltwand, Respekt!

      Wir haben zwischenzeitlich bei der Weiterentwicklung der Platine (v3) auch einen neuen,
      bzw. umkonfigurierten Bootloader eingesetzt um eben genau das "klackern" des Relais zu unterbinden,
      aber dennoch nicht auf die Rückmeldung des Bootloaders zu verzichten.

      Die Option die Spindel-PWM abzuschalten benötigt man eigentlich nur für veraltete Hardware, die noch für GRBL 0.9 konzipiert war.

      Wir haben inzwischen drei verschiedene Konfigurationen (Firmware) von GRBL, und könnten Dir diese auch gerne zur Verfügung stellen.
      Zum Flashen benötigst Du allerdings wie oben bereits erwähnt einen ISP-Programmer.
      (ginge auch mit einem 2. Arduino, kann ich aber nicht empfehlen, ist echt ein krampf)

      Einziger wesentlicher Unterschied zwischen der Hardware v2 und v3 sind der herausgeführte PWM-Anschluss auf eine Stiftleiste, sowie Lötaugen zum Anschluss externer Taster.
      Der PWM-Anschluss dient zum Betrieb von DI-Spindeln oder Frequenzumrichtern mithilfe eines Normsignal-Signalwandlers.

      Da alle Pins auf der Unterseite sehr gut zugänglich sind, kannst Du auf Deiner Platine (v2) die Signale auch direkt unter dem Arduino an den entsprechenden Pins abgreifen, solltest Du etwas ändern wollen.

      Bezüglich des Anschlusses von Relais direkt an Logik-Pins kann ich nur warnen!
      Die Pins am Arduino sind nur für maximale Belastungen von 12mA ausgelegt.
      Bei mechanischen Relais ohne Freilaufdiode würde der Pin beim Abfallen des höchstwahrscheinlich Relais zerstört werden.
      Besser ein geeignetes Relais-Board mit Transistor und Schutzschaltung (ggf. Optokoppler) einsetzen.

      Gruß
      Marian
    • Hallo Marian,

      danke für das Lob. Eben damit es ordentlich bleibt, möchte ich gern alle Kabel auf Klemmen haben. Daher die Idee, zukünftig evtl. die Platine direkt mit Bestückungsoption für Klemmen zu bauen.

      Ich habe mir mal die rote Steuerplatine näher angeschaut und alle Schalteingänge werde da über einen Schmitt Inverter 74HC14D geführt. Also auch CW, CD an der Klemme für die 5. Achse. Der stellt immerhin 25mA zur Verfügung aber invertiert. Damit ist dort Spindle_PWM, nach der Idee von Lars, nicht nutzbar, da dieser dann eben von 0 rpm = 5V nach max. rpm = 0V ausgibt.
      Auch sind die 25mA immer noch etwas schwach, um ein Relais zu schalten. Müsste man also ebenso mit einer zusätzlichen Schaltung ergänzen.

      Fürs erste würde ich dann gerne deine angepasste Bootloader Version verwenden Marian und dann schalte ich die Spindel über Spindle_DIR als Spindle_EN. ISP Programmer ist kein Problem, habe ich hier.

      Mittelfristig werde ich mir wohl eine eigene Platine machen, welche ich als HAT auf dem Raspberry aufsetzen kann. Dort dann den Arduino mit integrieren und Coolant_Flood, Coolant_Mist sowie Spindle_Enable mit Schutzschaltung auf Klemmen heraus führen. Ebenso kann da dann gleich auch Klemmen für die Bedientasten drauf, sowie für die Stromeinspeißung des Raspberry.

      Gruß Michael
    https://www.daswetter.com/