diff options
author | adrian-bowyer <adrian-bowyer@cb376a5e-1013-0410-a455-b6b1f9ac8223> | 2008-04-30 18:06:30 +0000 |
---|---|---|
committer | adrian-bowyer <adrian-bowyer@cb376a5e-1013-0410-a455-b6b1f9ac8223> | 2008-04-30 18:06:30 +0000 |
commit | e19c1dd96c6999eaa0ae21d86da5e822cb69d626 (patch) | |
tree | 6e7e99a47848e36e06cd7a9437f7a48c282a0c16 | |
parent | 20ee2799d79ff3d868ab3bfe3f18d8062f98f106 (diff) | |
download | reprap-backup-e19c1dd96c6999eaa0ae21d86da5e822cb69d626.tar.gz reprap-backup-e19c1dd96c6999eaa0ae21d86da5e822cb69d626.zip |
Flow control valve code added. The valve uses a latching solenoid
connected to the B output of the DC motor controller PCB. This is driven
from pins 15 and 16 of the Arduino.
NB: the axis max sensors have been disabled to allow this.
git-svn-id: https://reprap.svn.sourceforge.net/svnroot/reprap@1549 cb376a5e-1013-0410-a455-b6b1f9ac8223
6 files changed, 47 insertions, 4 deletions
diff --git a/trunk/reprap/firmware/Arduino/Single_Arduino_SNAP/Single_Arduino_SNAP.pde b/trunk/reprap/firmware/Arduino/Single_Arduino_SNAP/Single_Arduino_SNAP.pde index 154ebb4c..297f10c7 100644 --- a/trunk/reprap/firmware/Arduino/Single_Arduino_SNAP/Single_Arduino_SNAP.pde +++ b/trunk/reprap/firmware/Arduino/Single_Arduino_SNAP/Single_Arduino_SNAP.pde @@ -38,6 +38,8 @@ #define EXTRUDER_HEATER_PIN 6 #define EXTRUDER_FAN_PIN 5 #define EXTRUDER_THERMISTOR_PIN 0 +#define VALVE_DIR_PIN 15 +#define VALVE_ENABLE_PIN 16 //NB: Conflicts with Max Z!!!! // how many steps do our motors have? #define X_MOTOR_STEPS 400 @@ -54,7 +56,8 @@ #include <ThermoplastExtruder_SNAP_v1.h> #include <CartesianBot_SNAP_v1.h> -ThermoplastExtruder extruder(EXTRUDER_MOTOR_DIR_PIN, EXTRUDER_MOTOR_SPEED_PIN, EXTRUDER_HEATER_PIN, EXTRUDER_FAN_PIN, EXTRUDER_THERMISTOR_PIN); +ThermoplastExtruder extruder(EXTRUDER_MOTOR_DIR_PIN, EXTRUDER_MOTOR_SPEED_PIN, EXTRUDER_HEATER_PIN, + EXTRUDER_FAN_PIN, EXTRUDER_THERMISTOR_PIN, VALVE_DIR_PIN, VALVE_ENABLE_PIN); CartesianBot bot = CartesianBot( 'x', X_MOTOR_STEPS, X_DIR_PIN, X_STEP_PIN, X_MIN_PIN, X_MAX_PIN, X_ENABLE_PIN, diff --git a/trunk/reprap/firmware/Arduino/library/LinearAxis/LinearAxis.cpp b/trunk/reprap/firmware/Arduino/library/LinearAxis/LinearAxis.cpp index ae6de5c4..85fd1419 100644 --- a/trunk/reprap/firmware/Arduino/library/LinearAxis/LinearAxis.cpp +++ b/trunk/reprap/firmware/Arduino/library/LinearAxis/LinearAxis.cpp @@ -36,9 +36,13 @@ bool LinearAxis::atMin() return digitalRead(this->min_pin); } +/* + * NB!!! Turned off by Adrian to free up pins +*/ bool LinearAxis::atMax() { - return digitalRead(this->max_pin); + return 0; + //return digitalRead(this->max_pin); } void LinearAxis::doStep() diff --git a/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder/ThermoplastExtruder.cpp b/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder/ThermoplastExtruder.cpp index 4db6842e..d9fdcdce 100644 --- a/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder/ThermoplastExtruder.cpp +++ b/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder/ThermoplastExtruder.cpp @@ -11,10 +11,14 @@ motor_pwm_pin and heater_pin must be PWM capable outputs. thermistor_pin must be an analog input. */ -ThermoplastExtruder::ThermoplastExtruder(byte motor_dir_pin, byte motor_pwm_pin, byte heater_pin, byte cooler_pin, byte thermistor_pin) +ThermoplastExtruder::ThermoplastExtruder(byte motor_dir_pin, byte motor_pwm_pin, + byte heater_pin, byte cooler_pin, byte thermistor_pin, byte valve_dir_pin, + byte valve_enable_pin) { this->motor_dir_pin = motor_dir_pin; this->motor_pwm_pin = motor_pwm_pin; + this->valve_dir_pin = valve_dir_pin; + this->valve_enable_pin = valve_enable_pin; this->heater_pin = heater_pin; this->cooler_pin = cooler_pin; this->thermistor_pin = thermistor_pin; @@ -22,6 +26,8 @@ ThermoplastExtruder::ThermoplastExtruder(byte motor_dir_pin, byte motor_pwm_pin, pinMode(this->motor_dir_pin, OUTPUT); pinMode(this->motor_pwm_pin, OUTPUT); pinMode(this->heater_pin, OUTPUT); + pinMode(this->valve_dir_pin, OUTPUT); + pinMode(this->valve_enable_pin, OUTPUT); this->getTemperature(); this->setSpeed(0); @@ -58,6 +64,17 @@ void ThermoplastExtruder::setDirection(bool dir) digitalWrite(this->motor_dir_pin, this->motor_dir); } +/*! + Pulse the valve to open or close it. dir == true: open; dir == false: closed +*/ +void ThermoplastExtruder::setValve(bool dir, byte pulse_time) +{ + digitalWrite(this->valve_dir_pin, dir); + digitalWrite(this->valve_enable_pin, 1); + delay(2*(int)pulse_time); + digitalWrite(this->valve_enable_pin, 0); +} + void ThermoplastExtruder::setTemperature(int temp) { this->target_celsius = temp; diff --git a/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder/ThermoplastExtruder.h b/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder/ThermoplastExtruder.h index adcf6962..bb709a3c 100644 --- a/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder/ThermoplastExtruder.h +++ b/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder/ThermoplastExtruder.h @@ -26,7 +26,9 @@ class ThermoplastExtruder { public: - ThermoplastExtruder(byte motor_dir_pin, byte motor_pwm_pin, byte heater_pin, byte cooler_pin, byte thermistor_pin); + ThermoplastExtruder(byte motor_dir_pin, byte motor_pwm_pin, byte heater_pin, + byte cooler_pin, byte thermistor_pin, byte valve_dir_pin, + byte valve_enable_pin); // various setters methods: void setSpeed(byte speed); @@ -38,6 +40,9 @@ class ThermoplastExtruder int getTemperature(); int calculateTemperatureFromRaw(int raw); void manageTemperature(); + + // Open and close the valve + void setValve(bool dir, byte pulse_time); //variables for easy access. byte heater_low; // Low heater, for when we're at our temp, 0-255 @@ -50,6 +55,8 @@ class ThermoplastExtruder //pin numbers: byte motor_pwm_pin; // motor PWM pin byte motor_dir_pin; // motor direction pin + byte valve_enable_pin; // valve enable pin + byte valve_dir_pin; // valve direction pin byte heater_pin; // heater PWM pin byte thermistor_pin; // thermistor analog input pin byte cooler_pin; // cooler fan PWM pin diff --git a/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder_SNAP_v1/ThermoplastExtruder_SNAP_v1.cpp b/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder_SNAP_v1/ThermoplastExtruder_SNAP_v1.cpp index 79dde664..7c1f3473 100644 --- a/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder_SNAP_v1/ThermoplastExtruder_SNAP_v1.cpp +++ b/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder_SNAP_v1/ThermoplastExtruder_SNAP_v1.cpp @@ -45,6 +45,16 @@ void process_thermoplast_extruder_snap_commands_v1() extruder.setDirection(0); extruder.setSpeed(snap.getByte(1)); break; + + // Open the valve + case CMD_VALVEOPEN: + extruder.setValve(1, snap.getByte(1)); + break; + + // Close the valve + case CMD_VALVECLOSE: + extruder.setValve(0, snap.getByte(1)); + break; // dunno what this is supposed to do... case CMD_SETPOS: diff --git a/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder_SNAP_v1/ThermoplastExtruder_SNAP_v1.h b/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder_SNAP_v1/ThermoplastExtruder_SNAP_v1.h index 3d8181ed..d0ac91df 100644 --- a/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder_SNAP_v1/ThermoplastExtruder_SNAP_v1.h +++ b/trunk/reprap/firmware/Arduino/library/ThermoplastExtruder_SNAP_v1/ThermoplastExtruder_SNAP_v1.h @@ -71,6 +71,8 @@ int calculatePicTempForCelsius(int temperature); #define CMD_SETHEAT 9 #define CMD_GETTEMP 10 #define CMD_SETCOOLER 11 +#define CMD_VALVEOPEN 12 +#define CMD_VALVECLOSE 13 #define CMD_PWMPERIOD 50 #define CMD_PRESCALER 51 //apparently doesnt exist... #define CMD_SETVREF 52 |