Support for BariCUDA Paste Extruder derived from MakerBot Frostruder. Using Ultimachine RAMBo board. M126/M127 and M128/M129.

This commit is contained in:
Jordan Miller 2013-05-14 16:25:53 -04:00 committed by Erik van der Zalm
parent 90664d20a4
commit fbd899a37d
5 changed files with 61 additions and 1 deletions

View file

@ -186,6 +186,8 @@ extern float add_homeing[3];
extern float min_pos[3]; extern float min_pos[3];
extern float max_pos[3]; extern float max_pos[3];
extern int fanSpeed; extern int fanSpeed;
extern int ValvePressure;
extern int EtoPPressure;
#ifdef FWRETRACT #ifdef FWRETRACT
extern bool autoretract_enabled; extern bool autoretract_enabled;

View file

@ -101,6 +101,10 @@
// M115 - Capabilities string // M115 - Capabilities string
// M117 - display message // M117 - display message
// M119 - Output Endstop status to serial port // M119 - Output Endstop status to serial port
// M126 - Solenoid Air Valve Open (BariCUDA support by jmil)
// M127 - Solenoid Air Valve Closed (BariCUDA vent to atmospheric pressure by jmil)
// M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil)
// M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil)
// M140 - Set bed target temp // M140 - Set bed target temp
// M190 - Wait for bed current temp to reach target temp. // M190 - Wait for bed current temp to reach target temp.
// M200 - Set filament diameter // M200 - Set filament diameter
@ -168,6 +172,8 @@ float extruder_offset[2][EXTRUDERS] = {
#endif #endif
uint8_t active_extruder = 0; uint8_t active_extruder = 0;
int fanSpeed=0; int fanSpeed=0;
int ValvePressure=0;
int EtoPPressure=0;
#ifdef FWRETRACT #ifdef FWRETRACT
bool autoretract_enabled=true; bool autoretract_enabled=true;
@ -1169,6 +1175,37 @@ void process_commands()
break; break;
#endif //FAN_PIN #endif //FAN_PIN
// PWM for HEATER_1_PIN
#if HEATER_1_PIN > -1
case 126: //M126 valve open
if (code_seen('S')){
ValvePressure=constrain(code_value(),0,255);
}
else {
ValvePressure=255;
}
break;
case 127: //M127 valve closed
ValvePressure = 0;
break;
#endif //HEATER_1_PIN
// PWM for HEATER_2_PIN
#if HEATER_2_PIN > -1
case 128: //M128 valve open
if (code_seen('S')){
EtoPPressure=constrain(code_value(),0,255);
}
else {
EtoPPressure=255;
}
break;
case 129: //M129 valve closed
EtoPPressure = 0;
break;
#endif //HEATER_2_PIN
#if (PS_ON_PIN > -1) #if (PS_ON_PIN > -1)
case 80: // M80 - ATX Power On case 80: // M80 - ATX Power On
SET_OUTPUT(PS_ON_PIN); //GND SET_OUTPUT(PS_ON_PIN); //GND

View file

@ -1474,7 +1474,7 @@
#define HEATER_1_PIN 7 #define HEATER_1_PIN 7
#define TEMP_1_PIN 1 #define TEMP_1_PIN 1
#define HEATER_2_PIN -1 #define HEATER_2_PIN 6
#define TEMP_2_PIN -1 #define TEMP_2_PIN -1
#define E0_STEP_PIN 34 #define E0_STEP_PIN 34

View file

@ -439,12 +439,18 @@ void check_axes_activity()
unsigned char z_active = 0; unsigned char z_active = 0;
unsigned char e_active = 0; unsigned char e_active = 0;
unsigned char tail_fan_speed = fanSpeed; unsigned char tail_fan_speed = fanSpeed;
unsigned char valve_pressure = 0;
unsigned char e_to_p_pressure = 0;
unsigned char tail_valve_pressure = 0;
unsigned char tail_e_to_p_pressure = 0;
block_t *block; block_t *block;
if(block_buffer_tail != block_buffer_head) if(block_buffer_tail != block_buffer_head)
{ {
uint8_t block_index = block_buffer_tail; uint8_t block_index = block_buffer_tail;
tail_fan_speed = block_buffer[block_index].fan_speed; tail_fan_speed = block_buffer[block_index].fan_speed;
tail_valve_pressure = block_buffer[block_index].valve_pressure;
tail_e_to_p_pressure = block_buffer[block_index].e_to_p_pressure;
while(block_index != block_buffer_head) while(block_index != block_buffer_head)
{ {
block = &block_buffer[block_index]; block = &block_buffer[block_index];
@ -486,6 +492,17 @@ void check_axes_activity()
#ifdef AUTOTEMP #ifdef AUTOTEMP
getHighESpeed(); getHighESpeed();
#endif #endif
#if HEATER_1_PIN > -1
if (ValvePressure != 0){
analogWrite(HEATER_1_PIN,ValvePressure); // If buffer is empty use current fan speed
}
#endif
#if HEATER_2_PIN > -1
if (EtoPPressure != 0){
analogWrite(HEATER_2_PIN,EtoPPressure); // If buffer is empty use current fan speed
}
#endif
} }
@ -559,6 +576,8 @@ void plan_buffer_line(const float &x, const float &y, const float &z, const floa
} }
block->fan_speed = fanSpeed; block->fan_speed = fanSpeed;
block->valve_pressure = ValvePressure;
block->e_to_p_pressure = EtoPPressure;
// Compute direction bits for this block // Compute direction bits for this block
block->direction_bits = 0; block->direction_bits = 0;

View file

@ -60,6 +60,8 @@ typedef struct {
unsigned long final_rate; // The minimal rate at exit unsigned long final_rate; // The minimal rate at exit
unsigned long acceleration_st; // acceleration steps/sec^2 unsigned long acceleration_st; // acceleration steps/sec^2
unsigned long fan_speed; unsigned long fan_speed;
unsigned long valve_pressure;
unsigned long e_to_p_pressure;
volatile char busy; volatile char busy;
} block_t; } block_t;