12345678910111213141516171819202122232425262728293031323334 |
- #pragma once
- #include "TeensyStep.h"
-
- class Winder
- {
- public:
- Winder(Stepper &spindle, Stepper &feeder);
- void begin();
- Winder &setSpindleParams(unsigned stpPerRev, unsigned acceleration); // steps per spindle revolution & acceleration in stp/s^2
- Winder &setFeederParams(unsigned stpPerMM, unsigned acceleration); // steps to move the feeder 1mm, acceleration for pitch trimming
- void setSpindleSpeed(float rpm); // changes the spindle speed to the given rpm
- void setPitch(float pitch_in_mm); // changes the winder pitch to the given value
- void updateSpeeds();
- inline int getCurSpindleSpeed() { return spindleCtrl.isRunning() ? spindleCtrl.getCurrentSpeed() : 0; }
- inline int getCurFeederSpeed() { return feederCtrl.isRunning() ? feederCtrl.getCurrentSpeed() : 0; }
- inline float getCurPitch(){return (float)getCurFeederSpeed()/getCurSpindleSpeed()/pitchFactor; }
- protected:
- Stepper &spindle;
- Stepper &feeder;
- unsigned spindleStpPerRev, spindleAcc, feederStpPerMM, feederAcc;
- float pitchFactor;
- float targetSpindleSpeed, targetPitch;
- float oldSpindleSpeed, oldPitch;
- RotateControl feederCtrl, spindleCtrl;
- };
|