目前做一個項目遇到一個問題,就是在實現步進電機運動時,點動模式電機振動很厲害,現在就一個非常強大的第三方庫Accelstepper進行研究分析。
官網的函數說明:
具體官網說明見:http://www.airspayce.com/mikem/arduino/AccelStepper/index.html
#include <AccelStepper.h>中的公共成員函數:
Public Member Functions |
|
AccelStepper (uint8_t interface=AccelStepper::FULL4WIRE, uint8_t pin1=2, uint8_t pin2=3, uint8_t pin3=4, uint8_t pin4=5, bool enable=true) | |
AccelStepper (void(*forward)(), void(*backward)()) | |
void | moveTo (long absolute) |
void | move (long relative) |
boolean | run () |
boolean | runSpeed () |
void | setMaxSpeed (float speed) |
float | maxSpeed () |
void | setAcceleration (float acceleration) |
void | setSpeed (float speed) |
float | speed () |
long | distanceToGo () |
long | targetPosition () |
long | currentPosition () |
void | setCurrentPosition (long position) |
void | runToPosition () |
boolean | runSpeedToPosition () |
void | runToNewPosition (long position) |
void | stop () |
virtual void | disableOutputs () |
virtual void | enableOutputs () |
void | setMinPulseWidth (unsigned int minWidth) |
void | setEnablePin (uint8_t enablePin=0xff) |
void | setPinsInverted (bool directionInvert=false, bool stepInvert=false, bool enableInvert=false) |
void | setPinsInverted (bool pin1Invert, bool pin2Invert, bool pin3Invert, bool pin4Invert, bool enableInvert) |
bool | isRunning () |
#include <MultiStepper.h>中的公共成員函數。
Public Member Functions |
|
MultiStepper () | |
Constructor. | |
boolean | addStepper (AccelStepper &stepper) |
void | moveTo (long absolute[]) |
boolean | run () |
void | runSpeedToPosition () |
主要函數如下:
- a -
- AccelStepper() : AccelStepper
- addStepper() : MultiStepper
- c -
- computeNewSpeed() : AccelStepper
- currentPosition() : AccelStepper
- d -
- disableOutputs() : AccelStepper
- distanceToGo() : AccelStepper
- e -
- enableOutputs() : AccelStepper
- i -
- isRunning() : AccelStepper
- m -
- maxSpeed() : AccelStepper
- move() : AccelStepper
- moveTo() : AccelStepper , MultiStepper
- MultiStepper() : MultiStepper
- r -
- run() : AccelStepper , MultiStepper
- runSpeed() : AccelStepper
- runSpeedToPosition() : AccelStepper , MultiStepper
- runToNewPosition() : AccelStepper
- runToPosition() : AccelStepper
- s -
- setAcceleration() : AccelStepper
- setCurrentPosition() : AccelStepper
- setEnablePin() : AccelStepper
- setMaxSpeed() : AccelStepper
- setMinPulseWidth() : AccelStepper
- setOutputPins() : AccelStepper
- setPinsInverted() : AccelStepper
- setSpeed() : AccelStepper
- speed() : AccelStepper
- step() : AccelStepper
- step0() : AccelStepper
- step1() : AccelStepper
- step2() : AccelStepper
- step3() : AccelStepper
- step4() : AccelStepper
- step6() : AccelStepper
- step8() : AccelStepper
- stop() : AccelStepper
- t -
- targetPosition() : AccelStepper
以上函數的用法及示例如下:
1 AccelStepper() : AccelStepper
實例:AccelStepper stepper1(1, 2, 5); // (Type:driver, STEP, DIR) 定義步進電機及引腳
Type: FUNCTION = 0, //不知道,後續更新
DRIVER = 1, //驅動器驅動,只需要接步進脈衝和方向
FULL2WIRE = 2, //兩線全步進
FULL3WIRE = 3, //三項全步進
FULL4WIRE = 4, //四項全步進
HALF3WIRE = 6, //三項半步進
HALF4WIRE = 8 //四項半步進
2. addStepper() : MultiStepper //將電機增加到多電機控制中
實例:MultiStepper StepperControl; //首先創建MultiStepper實例
StepperControl.addStepper(stepper1);//將步進電機添加到多電機控制實例中,實現多電機控制
StepperControl.addStepper(stepper2);
StepperControl.addStepper(stepper3);//最多可添加幾個電機,目前不清楚,後續更新。