|
本帖最后由 囧囧-科技大神粉 于 2015-2-13 19:29 编辑
- http://www.airspayce.com/mikem/arduino/AccelStepper/classAccelStepper.html#a73bdecf1273d98d8c5fbcb764cabeea5ac3523e4cf6763ba518d16fec3708ef23
- 支持对步进电机加速等等。更多…
- 公共类型
- 枚举
- MotorInterfaceType { //电机接口类型
- FUNCTION = 0, DRIVER = 1, FULL2WIRE = 2, FULL3WIRE = 3,
- FULL4WIRE = 4, HALF3WIRE = 6, HALF4WIRE = 8
- }
- 符号名为pin的数量。使用这个在AccelStepper针参数构造函数提供一个符号名的别针。
- FUNCTION
- 使用功能接口,实现你自己的驱动程序功能(仅内部使用)
- DRIVER
- 步进驱动,2线驱动。
- FULL2WIRE
- 2线整步
- FULL3WIRE
- 3线整步
- FULL4WIRE
- 4线整步
- HALF3WIRE
- 3线半步
- HALF4WIRE
- 4线半步
- 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)
- 参数
- [in] interface
- 引脚数接口。1,2,4或8个都支持,但它是优选使用 MotorInterfaceType 符号名
- AccelStepper::DRIVER (1) 指步进驱动器(与步骤和方向引脚)。如果还需要一个能线,调用 setEnablePin() 施工后。您也可以使用反转引脚setPinsInverted().
- AccelStepper::FULL2WIRE (2)指2线步进(需要2个引脚)。
- AccelStepper::FULL3WIRE(3)指3线步进,如HDD主轴(需要3引脚)。
- AccelStepper::FULL4WIRE (4)意味着一个4线步进(4引脚 需要)。
- AccelStepper::HALF3WIRE (6) means a 3 wire half stepper, such as HDD spindle (3 pins required)
- AccelStepper::HALF4WIRE (8)指4线半步进(4引脚需要)默认为 AccelStepper::FULL4WIRE (4) pins.
- [in] pin1(步)
- Arduino的数字引脚数电机引脚1.默认为引脚2.对于 AccelStepper::DRIVER (interface==1), 这是步骤输入到驱动器。从低到高的转变意味step)
- [in] pin2(驱动方向)
- Arduino的数字引脚数电机引脚2.默认为引脚3.对于 AccelStepper::DRIVER (interface==1), 这是方向输入的驱动程序。高意味着前进。
- [in] pin3
- Arduino的数字引脚数电机引脚3.默认为引脚4.
- in] pin4
- Arduino的数字引脚数电机引脚4.默认为引脚5.
- [in] enable
- 如果这是1(默认), enableOutputs() 将被调用,以使输出引脚的施工时间。
- References DIRECTION_CCW, enableOutputs(), and setAcceleration().
- AccelStepper (void(*forward)(), void(*backward)())
- 可选的构造,将调用自己的功能向前和向后的步骤。 你可以有多个同时步进,所有运动以不同的速度和加速度,只要你调用它们的run() 在足够频繁的时间间隔功能。
- 当前位置被设置为0,目标位置被设定为0。
- MaxSpeed and Acceleration 默认为1.0。
- 任何运动初始化应 发生前, 无引脚使用或初始化。
- 参数
- [in] forward
- 空隙返回程序,这将使向前一步
- [in] backward
- 空隙返回程序,这将使倒退
- References DIRECTION_CCW, and setAcceleration().
- void moveTo (long absolute)
- 设置目标位置. run() 函数将试图将电动机(每次调用最多一步)从当前位置到目标位置的最近调用这个函数。注意:moveTo 也会重新计算速度对下一步骤。如果你要使用恒速运动,应该调用setSpeed() 后调用moveTo().
- 参数
- [in] absolute
- 所需的绝对位置。负为0的位置逆时针。
- Examples:
- Bounce.pde, MultiStepper.pde, Overshoot.pde, ProportionalControl.pde, Quickstop.pde, and Random.pde.
- References computeNewSpeed().
- Referenced by move(), and runToNewPosition().
- void move (long relative)
- 设置目标位置相对于当前位置
- 参数
- [in] relative
- 所需的位置相对于当前位置。负是从当前位置逆时针。
- References moveTo().
- Referenced by stop().
- boolean run ()
- 投票电机和步骤,如果一步是因为,实施加速度
- 和减速到acheive目标位置。必须以最小的步骤的时间间隔称之为尽可能频繁地,但至少一次,最好是在主回路。请注意,每个调用 run() 将至多一个步,然后,只有当一个步是由于,基于当前速度和自最后步骤的时间。
- 返回
- 真 , 如果电机仍在运行到目标位置。
- Examples:
- Bounce.pde, MultiStepper.pde, Overshoot.pde, Quickstop.pde, and Random.pde.
- References computeNewSpeed(), distanceToGo(), and runSpeed().
- Referenced by runToPosition().
- boolean runSpeed ()
- 轮询电机,并加强它 如果一个步骤是因为,实施恒定的速度通过最近一次调用的设置为setSpeed().必须每步的时间间隔称此尽可能频繁地,但至少一次,
- 返回
- 真的,如果电机得到进一步加强。
- Examples:
- ConstantSpeed.pde.
- References DIRECTION_CW, and step().
- Referenced by run(), and runSpeedToPosition().
- void setMaxSpeed (float speed)
- 设置允许的最大速度。在 run() 函数将加速上升的速度通过该功能设定。注意:最高速度可达到取决于你的处理器和时钟速度。
- 参数
- [in] speed
- 所需的最大速度在每秒步骤。
- 必须>0。注意事项:速度超过了处理器所支持的最高速度在非线性加速和减速可能会导致。
- void setAcceleration (float acceleration)
- 设定加速/减速速率。
- Parameters
- [in] acceleration
- 所需的加速的步/秒秒,acceleration>0.0。这是一种昂贵的调用,因为它需要一个平方根来计算的。尽量少用
- Examples:
- Blocking.pde, Bounce.pde, MultiStepper.pde, Overshoot.pde, Quickstop.pde, and Random.pde.
- References computeNewSpeed().
- Referenced by AccelStepper().
- void setSpeed (float speed)
- 设置所需的恒定速度与使用 runSpeed().
- 参数
- [in] speed
- 所需的恒定速度在每秒步骤。正为顺时针。每秒超过1000步的速度是不可靠的。非常慢的速度可以设置(如0.00027777对每小时一次,大约。速度精度取决于Arduino的结晶。抖动取决于你如何频繁调用 runSpeed()函数。
- float speed ()
- 最近设置的速度
- 返回
- 最近的速度在每秒步
- Referenced by setMaxSpeed(), and setSpeed().
- long distanceToGo ()
- 从当前位置到目标位置的距离。
- 返回
- 从当前位置到在步骤目标位置的距离。正为顺时针从当前位置。
- Examples:
- Bounce.pde, MultiStepper.pde, and Random.pde.
- Referenced by computeNewSpeed(), and run().
- long targetPosition ()
- 最近设置的目标位置。
- 返回
- 在步骤目标位置。正为顺时针方向从0位置。
- long currentPosition ()
- 当前电动机位置。
- 返回
- 在步骤的当前电动机位置。正为顺时针方向从0位置。
- 例如:
- Bounce.pde, MultiStepper.pde, Overshoot.pde, and Quickstop.pde.
- void setCurrentPosition (long position)
- 重置马达的当前位置,使得无论电动机恰好是正确的,现在被认为是新的0位置。可用来设定一个初始的硬件定位运动后步进零位。具有当前马达速度设置为0的副作用。
- [in] position
- 设置步进电机现在的位置
- void runToPosition ()
- 使电机的当前选定的恒定速度(前进或后退)到目标位置和阻塞,直到它在位置上。不使用此事件循环,因为它会阻止。
- Examples:
- Quickstop.pde.
- References run().
- Referenced by runToNewPosition().
- boolean runSpeedToPosition ()
- 运行在当前选择的速度,直到到达目标位置不执行加速度。
- 返回
- 1,如果它在运行?//true if it stepped
- void runToNewPosition (long position)
- 移动电机到新的目标位置和阻塞,直到它在位置上。不使用此事件循环,因为它会阻止。
- [in] position
- 新的目标位置。
- Examples:
- Blocking.pde, and Overshoot.pde.
- References moveTo(), and runToPosition().
- void stop ()
- 设置一个新的目标位置,导致步进停止尽可能快,使用当前的速度和加速度的参数。
- Examples:
- Quickstop.pde.
- References move().
- virtual void disableOutputs ()
- 通过设置他们都LOW根据您的电子产品的设计,这可能在电源关闭的电机线圈,省电禁用电机引脚输出。这是非常有用的支持Arduino的低功耗模式:睡眠,然后重新启用期间禁用输出 withenableOutputs() 前再次加强。
- virtual void enableOutputs ()
- 通过设置电机引脚输出模式使电机引脚输出。由构造自动调用。
- References FULL3WIRE, FULL4WIRE, HALF3WIRE, and HALF4WIRE.
- Referenced by AccelStepper().
- void setMinPulseWidth (unsigned int minWidth)
- 设置由步进驱动所允许的最小脉冲宽度。最小实际脉冲宽度为大约20微秒。时间小于20微秒,通常会导致在20微秒左右。
- [in] minWidth
- 的最小脉冲宽度为微秒。
- void setEnablePin (uint8_t enablePin=0xff)
- 设置步进驱动器的使能引脚数量。 0xFF的指示未使用(默认)。否则,如果一个引脚设置,引脚将在何时开启enableOutputs() 调用并关机的时候disableOutputs() 调用
- Parameters
- [in] enablePin
- 电机使Arduino的数字引脚数
- See Also
- setPinsInverted
- void setPinsInverted (bool directionInvert=false, bool stepInvert=false, bool enableInvert=false)
- 设置反转步进驱动器引脚
- 参数
- [in] directionInvert 为True变换方向针,假的非反转
- [in] stepInvert 为True反转步销,假的非反转
- [in] enableInvert 为True反转使能引脚,假(默认值)的非反转
- void setPinsInverted (bool pin1Invert, bool pin2Invert, bool pin3Invert, bool pin4Invert, bool enableInvert)
- 设置反转2,3和4线步进针脚
- 参数
- [in] pin1Invert 为True反转PIN1,假的非反转
- [in] pin2Invert 为True反转PIN2码,假的非反转
- [in] pin3Invert 为True反转PIN3,假的非反转
- [in] pin4Invert 为True反转PIN4,假的非反转
- [in] enableInvert 为True反转使能引脚,假(默认值)的非反转
- Protected Types//保护类型
- Direction { DIRECTION_CCW = 0, DIRECTION_CW = 1 }
- 转向指示器符号名马达转动的方向。
- 枚举
- DIRECTION_CCW
- 顺时针方向。
- DIRECTION_CW
- 逆时针方向。
- Protected Member Functions
- //受保护的成员函数
- void computeNewSpeed ()
- 强制库来计算一个新的瞬时速度,并设置为当前的速度。这就是所谓的库:
- ~在每一步之后
- ~在通过setMaxSpeed() 改变setMaxSpeed之后
- ~在通过setAcceleration()改变setAcceleration之后
- ~在通过move() or moveTo() 改变目标位置(相对或绝对)之后
- virtual void setOutputPins (uint8_t mask)
- 低电平函数来设置电机输出引脚位0掩码对应_pin[0]位掩码1对应_pin[1]您可以覆盖这impment,例如串行芯片输出insted的直接使用输出引脚
- Examples:
- MotorShield.pde.
- References FULL3WIRE, FULL4WIRE, HALF3WIRE, and HALF4WIRE.
- Referenced by disableOutputs(), step1(), step2(), step3(), step4(), step6(), and step8().
- virtual void step (long step)
- 所谓以执行步骤。只有当需要的新的一步调用。子类可以重写,以实现新的步进接口。缺省调用step1(), step2(), step4() or step8() ,这取决于对步进定义的管脚数。
- Parameters
- [in] step 当前步相位数(0到7)
- virtual void step0 (long step)
- 所谓执行使用步进功能(pins = 0),只有当需要的新的一步称为步。调用_forward() or _backward() 来执行步
- [in] step 当前步相位数(0到7)
- virtual void step1 (long step)
- 叫上执行步进驱动器的步骤(例如那里pins == 1)。只有当需要的新的一步调用。子类可以重写,以实现新的步进接口。
- 默认设置或清除步骤的pin1步骤的输出, 并设置_pin2向所希望的方向的输出。 步骤引脚(_pin1)是脉冲1微秒 这是最低STEP脉冲宽度为3967的驱动程序。
- [in] step 当前步相位数(0到7)
- References setOutputPins().
- Referenced by step().
- virtual void step2 (long step)
- 所谓的执行上2针电机的一个步骤。只有当需要的新的一步调用。子类可以重写,以实现新的步进接口。默认设置或清除PIN1和PIN2的输出
- virtual void step3 (long step)
- 所谓的执行上3针电机,如HDD主轴的一步。只有当需要的新的一步调用。子类可以重写,以实现新的步进接口。默认设置或清除的PIN1,PIN2,Pin3输出
- virtual void step4 (long step)
- 所谓执行一个4针电机的一个步骤。只有当需要的新的一步调用。子类可以重写,以实现新的步进接口。默认设置或清除PIN1,PIN2,PIN3,PIN4的输出。
- virtual void step6 (long step)
- 所谓的执行上3针电机,如HDD主轴的一步。只有当需要的新的一步调用。子类可以重写,以实现新的步进接口。默认设置或清除的PIN1,PIN2,3脚输出
- virtual void step8 (long step)
- 所谓执行一个4针半步r电机的一个步骤。只有当需要的新的一步调用。子类可以重写,以实现新的步进接口。默认设置或清除PIN1,PIN2,PIN3,PIN4的输出。
- 详细说明
- 支持步进电机加速等等。
- 这定义了单个2或4引脚的步进电机,或具有fdriver芯片步进启动子,可选的加速,减速,绝对定位命令等多个同时步进机都支持,都以不同的速度和加速度移动。
- =================
- 运算
- 此模块通过计算在微秒的步的时间。由调用者被改变后的各步与速度和加速度参数之后的步的时间被重新计算。每个步骤的时间被记录在微秒。在run()函数步骤电机一次,如果的新的一步到期。该run()函数必须被频繁调用直到电机是在所需的位置,在这之后时间运行()什么也不做。
- =============
- 定位
- 位置由一个符号长整型指定。在施工时,马达的当前位置被认为是0正的位置是沿顺时针方向从初始位置;负位置是逆时针。当前位置可以初始化定位之后被改变对于实例。
- ===============
- 警告
- 这是一个开环控制器:如果电机摊位或oversped,AccelStepper不会有当电机确实是一个正确的想法(因为电机的实际位置的任何反馈。我们只知道,我们认为这是相对的。到初始开始点)。
- ===============
- 性能
- 可以可靠地支撑最快电机速度是每秒约4000步在16兆赫上的Arduino如乌诺等更快的处理器的时钟频率可以支持更快步进速度。然而,比下降到非常低的速度(远小于1每秒)也支持的任何速度更小,所提供的run()函数被调用足够频繁到步骤电动机每当需要的速度设定。调用setAcceleration()是昂贵的,因为它需要一个平方根来计算的。
复制代码
|
|