This 3D-printed test model concept also uses a NEMA 17 stepper motor, Arduino Uno, and a CNC Shield. The idea is that the sled could be extended to include a taller chamber with temperature controls for just the print plate and printed model.
This may eventually be remixed with a taller chamber for use with a thermoelectric cooling device.
The stepper motor attaches to the bracket and sled with four M3 x 16 mm fasteners.
The models shown in the photos were printed using PETG.
The Arduino code to move the plate vertically starting in a lower position is:
#include <CNCShield.h>
#include <AccelStepper.h>
const int runflag = 0;
/*
* Create a CNCShield object and get a pointer to motor 0 (X axis).
*/
CNCShield cnc_shield;
StepperMotor *motorx = cnc_shield.get_motor(0);
StepperMotor *motory = cnc_shield.get_motor(1);
StepperMotor *motorz = cnc_shield.get_motor(2);
/*
* forwardstep() and backwardstep() needed by AccelStepper lib.
*/
void forwardstepx()
{
motorx->step(CLOCKWISE);
}
void backwardstepx()
{
motorx->step(COUNTER);
}
void forwardstepy()
{
motory->step(CLOCKWISE);
}
void backwardstepy()
{
motory->step(COUNTER);
}
void forwardstepz()
{
motorz->step(CLOCKWISE);
}
void backwardstepz()
{
motorz->step(COUNTER);
}
/*
* Create an AccelStepper object sending the above functions as parameters.
*/
AccelStepper stepperx(forwardstepx, backwardstepx);
AccelStepper steppery(forwardstepy, backwardstepy);
AccelStepper stepperz(forwardstepz, backwardstepz);
void setup()
{
cnc_shield.begin();
stepperx.setMaxSpeed(3);
steppery.setMaxSpeed(3);
stepperz.setMaxSpeed(3);
}
void loop()
{
if (runflag == 1) {
delay(10000);
const int cpx = stepperx.currentPosition();
const int cpy = steppery.currentPosition();
const int cpz = stepperz.currentPosition();
stepperz.moveTo(cpz-60);
while (stepperz.currentPosition() != cpz-60) {
stepperz.run();
}
stepperz.moveTo(cpz+0);
while (stepperz.currentPosition() != cpz+0) {
stepperz.run();
}
}
stepperz.stop();
delay(20000);
}
Enjoy!
The author marked this model as their own original creation.