|
5D stepping DC extruder January 08, 2010 08:38PM |
Registered: 16 years ago Posts: 458 |
void extruder::sStep()
{
byte pwm;
if(usePot)
pwm = potVal;
else
pwm = pwmValue;
// This increments or decrements coilPosition then writes the appropriate pattern to the output pins.
if(digitalRead(E_DIR_PIN))
coilPosition++;
else
coilPosition--;
coilPosition &= 7;
// Which of the 8 possible patterns do we want?
// The pwm = (pwm >> 1) + (pwm >> 3); lines
// ensure (roughly) equal power on the half-steps
#ifdef FULL_STEP
switch((coilPosition&3) << 1)
#else
switch(coilPosition)
#endif
{
case 7:
pwm = (pwm >> 1) + (pwm >> 3);
digitalWrite(H1D, 1);
digitalWrite(H2D, 1);
analogWrite(H1E, pwm);
analogWrite(H2E, pwm);
break;
case 6:
digitalWrite(H1D, 1);
digitalWrite(H2D, 1);
analogWrite(H1E, pwm);
analogWrite(H2E, 0);
break;
case 5:
pwm = (pwm >> 1) + (pwm >> 3);
digitalWrite(H1D, 1);
digitalWrite(H2D, 0);
analogWrite(H1E, pwm);
analogWrite(H2E, pwm);
break;
case 4:
digitalWrite(H1D, 1);
digitalWrite(H2D, 0);
analogWrite(H1E, 0);
analogWrite(H2E, pwm);
break;
case 3:
pwm = (pwm >> 1) + (pwm >> 3);
digitalWrite(H1D, 0);
digitalWrite(H2D, 0);
analogWrite(H1E, pwm);
analogWrite(H2E, pwm);
break;
case 2:
digitalWrite(H1D, 0);
digitalWrite(H2D, 0);
analogWrite(H1E, pwm);
analogWrite(H2E, 0);
break;
case 1:
pwm = (pwm >> 1) + (pwm >> 3);
digitalWrite(H1D, 0);
digitalWrite(H2D, 1);
analogWrite(H1E, pwm);
analogWrite(H2E, pwm);
break;
case 0:
digitalWrite(H1D, 0);
digitalWrite(H2D, 1);
analogWrite(H1E, 0);
analogWrite(H2E, pwm);
break;
}
}
|
Re: 5D stepping DC extruder January 09, 2010 08:01AM |
Admin Registered: 18 years ago Posts: 7,883 |
|
Re: 5D stepping DC extruder January 09, 2010 03:32PM |
Registered: 16 years ago Posts: 458 |