Kaynağa Gözat

Laser Cutter Air Assist (#21753)

Mike La Spina 3 yıl önce
ebeveyn
işleme
741e3c1280
No account linked to committer's email address

+ 10
- 4
Marlin/Configuration_adv.h Dosyayı Görüntüle

3166
   //#define AIR_EVACUATION                     // Cutter Vacuum / Laser Blower motor control with G-codes M10-M11
3166
   //#define AIR_EVACUATION                     // Cutter Vacuum / Laser Blower motor control with G-codes M10-M11
3167
   #if ENABLED(AIR_EVACUATION)
3167
   #if ENABLED(AIR_EVACUATION)
3168
     #define AIR_EVACUATION_ACTIVE       LOW    // Set to "HIGH" if the on/off function is active HIGH
3168
     #define AIR_EVACUATION_ACTIVE       LOW    // Set to "HIGH" if the on/off function is active HIGH
3169
-    #define AIR_EVACUATION_PIN          42     // Override the default Cutter Vacuum or Laser Blower pin
3169
+    //#define AIR_EVACUATION_PIN        42     // Override the default Cutter Vacuum or Laser Blower pin
3170
   #endif
3170
   #endif
3171
 
3171
 
3172
-  //#define SPINDLE_SERVO         // A servo converting an angle to spindle power
3172
+  //#define AIR_ASSIST                         // Air Assist control with G-codes M8-M9
3173
+  #if ENABLED(AIR_ASSIST)
3174
+    #define AIR_ASSIST_ACTIVE           LOW    // Active state on air assist pin
3175
+    //#define AIR_ASSIST_PIN            44     // Override the default Air Assist pin
3176
+  #endif
3177
+
3178
+  //#define SPINDLE_SERVO                      // A servo converting an angle to spindle power
3173
   #ifdef SPINDLE_SERVO
3179
   #ifdef SPINDLE_SERVO
3174
-    #define SPINDLE_SERVO_NR   0  // Index of servo used for spindle control
3175
-    #define SPINDLE_SERVO_MIN 10  // Minimum angle for servo spindle
3180
+    #define SPINDLE_SERVO_NR   0               // Index of servo used for spindle control
3181
+    #define SPINDLE_SERVO_MIN 10               // Minimum angle for servo spindle
3176
   #endif
3182
   #endif
3177
 
3183
 
3178
   /**
3184
   /**

+ 15
- 1
Marlin/src/feature/spindle_laser.cpp Dosyayı Görüntüle

71
   #if ENABLED(AIR_EVACUATION)
71
   #if ENABLED(AIR_EVACUATION)
72
     OUT_WRITE(AIR_EVACUATION_PIN, !AIR_EVACUATION_ACTIVE);            // Init Vacuum/Blower OFF
72
     OUT_WRITE(AIR_EVACUATION_PIN, !AIR_EVACUATION_ACTIVE);            // Init Vacuum/Blower OFF
73
   #endif
73
   #endif
74
+  #if ENABLED(AIR_ASSIST)
75
+    OUT_WRITE(AIR_ASSIST_PIN, !AIR_ASSIST_ACTIVE);                    // Init Air Assist OFF
76
+  #endif
74
 }
77
 }
75
 
78
 
76
 #if ENABLED(SPINDLE_LASER_PWM)
79
 #if ENABLED(SPINDLE_LASER_PWM)
147
 
150
 
148
   void SpindleLaser::air_evac_toggle()  { TOGGLE(AIR_EVACUATION_PIN); } // Toggle state
151
   void SpindleLaser::air_evac_toggle()  { TOGGLE(AIR_EVACUATION_PIN); } // Toggle state
149
 
152
 
150
-#endif
153
+#endif // AIR_EVACUATION
154
+
155
+#if ENABLED(AIR_ASSIST)
156
+
157
+  // Enable / disable air assist
158
+  void SpindleLaser::air_assist_enable()  { WRITE(AIR_ASSIST_PIN,  AIR_ASSIST_PIN); } // Turn ON
159
+
160
+  void SpindleLaser::air_assist_disable() { WRITE(AIR_ASSIST_PIN, !AIR_ASSIST_PIN); } // Turn OFF
161
+
162
+  void SpindleLaser::air_assist_toggle()  { TOGGLE(AIR_ASSIST_PIN); } // Toggle state
163
+
164
+#endif // AIR_ASSIST
151
 
165
 
152
 #endif // HAS_CUTTER
166
 #endif // HAS_CUTTER

+ 9
- 0
Marlin/src/feature/spindle_laser.h Dosyayı Görüntüle

221
     }
221
     }
222
   #endif
222
   #endif
223
 
223
 
224
+  #if ENABLED(AIR_ASSIST)
225
+    static void air_assist_enable();         // Turn on air assist
226
+    static void air_assist_disable();        // Turn off air assist
227
+    static void air_assist_toggle();         // Toggle air assist
228
+    static inline bool air_assist_state() {  // Get current state
229
+      return (READ(AIR_ASSIST_PIN) == AIR_ASSIST_ACTIVE);
230
+    }
231
+  #endif
232
+
224
   static inline void disable() { isReady = false; set_enabled(false); }
233
   static inline void disable() { isReady = false; set_enabled(false); }
225
 
234
 
226
   #if HAS_LCD_MENU
235
   #if HAS_LCD_MENU

+ 0
- 3
Marlin/src/gcode/control/M10-M11.cpp Dosyayı Görüntüle

25
 #if ENABLED(AIR_EVACUATION)
25
 #if ENABLED(AIR_EVACUATION)
26
 
26
 
27
 #include "../gcode.h"
27
 #include "../gcode.h"
28
-#include "../../module/planner.h"
29
 #include "../../feature/spindle_laser.h"
28
 #include "../../feature/spindle_laser.h"
30
 
29
 
31
 /**
30
 /**
32
  * M10: Vacuum or Blower On
31
  * M10: Vacuum or Blower On
33
  */
32
  */
34
 void GcodeSuite::M10() {
33
 void GcodeSuite::M10() {
35
-  planner.synchronize();      // Wait for move to arrive (TODO: asynchronous)
36
   cutter.air_evac_enable();   // Turn on Vacuum or Blower motor
34
   cutter.air_evac_enable();   // Turn on Vacuum or Blower motor
37
 }
35
 }
38
 
36
 
40
  * M11: Vacuum or Blower OFF
38
  * M11: Vacuum or Blower OFF
41
  */
39
  */
42
 void GcodeSuite::M11() {
40
 void GcodeSuite::M11() {
43
-  planner.synchronize();      // Wait for move to arrive (TODO: asynchronous)
44
   cutter.air_evac_disable();  // Turn off Vacuum or Blower motor
41
   cutter.air_evac_disable();  // Turn off Vacuum or Blower motor
45
 }
42
 }
46
 
43
 

+ 24
- 0
Marlin/src/gcode/control/M7-M9.cpp Dosyayı Görüntüle

61
 }
61
 }
62
 
62
 
63
 #endif // COOLANT_CONTROL
63
 #endif // COOLANT_CONTROL
64
+
65
+#if ENABLED(AIR_ASSIST)
66
+
67
+#include "../gcode.h"
68
+#include "../../module/planner.h"
69
+#include "../../feature/spindle_laser.h"
70
+
71
+/**
72
+ * M8: Air Assist On
73
+ */
74
+void GcodeSuite::M8() {
75
+  planner.synchronize(); 
76
+  cutter.air_assist_enable();   // Turn on Air Assist pin
77
+}
78
+
79
+/**
80
+ * M9: Air Assist Off
81
+ */
82
+void GcodeSuite::M9() {
83
+  planner.synchronize(); 
84
+  cutter.air_assist_disable();  // Turn off Air Assist pin
85
+}
86
+
87
+#endif // AIR_ASSIST

+ 1
- 0
Marlin/src/lcd/language/language_en.h Dosyayı Görüntüle

118
   PROGMEM Language_Str MSG_SPINDLE_POWER                   = _UxGT("Spindle Pwr");
118
   PROGMEM Language_Str MSG_SPINDLE_POWER                   = _UxGT("Spindle Pwr");
119
   PROGMEM Language_Str MSG_LASER_TOGGLE                    = _UxGT("Toggle Laser");
119
   PROGMEM Language_Str MSG_LASER_TOGGLE                    = _UxGT("Toggle Laser");
120
   PROGMEM Language_Str MSG_LASER_EVAC_TOGGLE               = _UxGT("Toggle Blower");
120
   PROGMEM Language_Str MSG_LASER_EVAC_TOGGLE               = _UxGT("Toggle Blower");
121
+  PROGMEM Language_Str MSG_LASER_ASSIST_TOGGLE             = _UxGT("Air Assist");
121
   PROGMEM Language_Str MSG_LASER_PULSE_MS                  = _UxGT("Test Pulse ms");
122
   PROGMEM Language_Str MSG_LASER_PULSE_MS                  = _UxGT("Test Pulse ms");
122
   PROGMEM Language_Str MSG_LASER_FIRE_PULSE                = _UxGT("Fire Pulse");
123
   PROGMEM Language_Str MSG_LASER_FIRE_PULSE                = _UxGT("Fire Pulse");
123
   PROGMEM Language_Str MSG_FLOWMETER_FAULT                 = _UxGT("Coolant Flow Fault");
124
   PROGMEM Language_Str MSG_FLOWMETER_FAULT                 = _UxGT("Coolant Flow Fault");

+ 5
- 0
Marlin/src/lcd/menu/menu_spindle_laser.cpp Dosyayı Görüntüle

56
       EDIT_ITEM(bool, MSG_CUTTER(EVAC_TOGGLE), &evac_state, cutter.air_evac_toggle);
56
       EDIT_ITEM(bool, MSG_CUTTER(EVAC_TOGGLE), &evac_state, cutter.air_evac_toggle);
57
     #endif
57
     #endif
58
 
58
 
59
+    #if ENABLED(AIR_ASSIST)
60
+      bool air_assist_state = cutter.air_assist_state();
61
+      EDIT_ITEM(bool, MSG_CUTTER(ASSIST_TOGGLE), &air_assist_state, cutter.air_assist_toggle);
62
+    #endif
63
+
59
     #if ENABLED(SPINDLE_CHANGE_DIR)
64
     #if ENABLED(SPINDLE_CHANGE_DIR)
60
       if (!is_enabled) {
65
       if (!is_enabled) {
61
         editable.state = is_rev;
66
         editable.state = is_rev;

+ 4
- 4
buildroot/tests/mega2560 Dosyayı Görüntüle

173
 restore_configs
173
 restore_configs
174
 opt_set MOTHERBOARD BOARD_RAMPS_14_EFB LCD_LANGUAGE en TEMP_SENSOR_COOLER 1 EXTRUDERS 0 TEMP_SENSOR_1 0 SERIAL_PORT_2 2
174
 opt_set MOTHERBOARD BOARD_RAMPS_14_EFB LCD_LANGUAGE en TEMP_SENSOR_COOLER 1 EXTRUDERS 0 TEMP_SENSOR_1 0 SERIAL_PORT_2 2
175
 opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT EEPROM_SETTINGS EEPROM_BOOT_SILENT EEPROM_AUTO_INIT \
175
 opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT EEPROM_SETTINGS EEPROM_BOOT_SILENT EEPROM_AUTO_INIT \
176
-           LASER_FEATURE LASER_COOLANT_FLOW_METER MEATPACK_ON_SERIAL_PORT_1
176
+           LASER_FEATURE AIR_EVACUATION AIR_ASSIST LASER_COOLANT_FLOW_METER MEATPACK_ON_SERIAL_PORT_1
177
 
177
 
178
-exec_test $1 $2 "REPRAP MEGA2560 RAMPS | Laser Feature | Cooler | Flowmeter | 12864 LCD | meatpack | SERIAL_PORT_2 " "$3"
178
+exec_test $1 $2 "REPRAP MEGA2560 RAMPS | Laser Feature | Air Evacuation | Air Assist | Cooler | Flowmeter | 12864 LCD | meatpack | SERIAL_PORT_2 " "$3"
179
 
179
 
180
 #
180
 #
181
 # Test Laser features with 44780 LCD
181
 # Test Laser features with 44780 LCD
183
 restore_configs
183
 restore_configs
184
 opt_set MOTHERBOARD BOARD_RAMPS_14_EFB LCD_LANGUAGE en TEMP_SENSOR_COOLER 1 EXTRUDERS 0 TEMP_SENSOR_1 0
184
 opt_set MOTHERBOARD BOARD_RAMPS_14_EFB LCD_LANGUAGE en TEMP_SENSOR_COOLER 1 EXTRUDERS 0 TEMP_SENSOR_1 0
185
 opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT EEPROM_SETTINGS EEPROM_BOOT_SILENT EEPROM_AUTO_INIT \
185
 opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT EEPROM_SETTINGS EEPROM_BOOT_SILENT EEPROM_AUTO_INIT \
186
-           LASER_FEATURE LASER_COOLANT_FLOW_METER
186
+           LASER_FEATURE AIR_EVACUATION AIR_ASSIST LASER_COOLANT_FLOW_METER
187
 
187
 
188
-exec_test $1 $2 "REPRAP MEGA2560 RAMPS | Laser Feature | Cooler | Flowmeter | 44780 LCD " "$3"
188
+exec_test $1 $2 "REPRAP MEGA2560 RAMPS | Laser Feature | Air Evacuation | Air Assist | Cooler | Flowmeter | 44780 LCD " "$3"
189
 
189
 
190
 #
190
 #
191
 # Language files test with REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
191
 # Language files test with REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

Loading…
İptal
Kaydet