summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoradrian-bowyer <adrian-bowyer@cb376a5e-1013-0410-a455-b6b1f9ac8223>2008-04-30 18:06:30 +0000
committeradrian-bowyer <adrian-bowyer@cb376a5e-1013-0410-a455-b6b1f9ac8223>2008-04-30 18:06:30 +0000
commite19c1dd96c6999eaa0ae21d86da5e822cb69d626 (patch)
tree6e7e99a47848e36e06cd7a9437f7a48c282a0c16
parent20ee2799d79ff3d868ab3bfe3f18d8062f98f106 (diff)
downloadreprap-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
-rw-r--r--trunk/reprap/firmware/Arduino/Single_Arduino_SNAP/Single_Arduino_SNAP.pde5
-rw-r--r--trunk/reprap/firmware/Arduino/library/LinearAxis/LinearAxis.cpp6
-rw-r--r--trunk/reprap/firmware/Arduino/library/ThermoplastExtruder/ThermoplastExtruder.cpp19
-rw-r--r--trunk/reprap/firmware/Arduino/library/ThermoplastExtruder/ThermoplastExtruder.h9
-rw-r--r--trunk/reprap/firmware/Arduino/library/ThermoplastExtruder_SNAP_v1/ThermoplastExtruder_SNAP_v1.cpp10
-rw-r--r--trunk/reprap/firmware/Arduino/library/ThermoplastExtruder_SNAP_v1/ThermoplastExtruder_SNAP_v1.h2
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