5D stepping DC extruder January 08, 2010 08:38PM |
Registered: 14 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: 17 years ago Posts: 7,879 |
Re: 5D stepping DC extruder January 09, 2010 03:32PM |
Registered: 14 years ago Posts: 458 |