3D-Printer Z-axis Motion with Chamber Concept Test Model

This is a test model concept of a 3D-printer Z-axis motion mechanism.
2
5
0
56
updated May 4, 2025

Description

PDF

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!

Tags



Model origin

The author marked this model as their own original creation.

License


Highlighted models from creator

View more