电机控制及PWM设定


电机相关主要函数

创建电机端口实例

将电机连接此板利用 ExpansionDCMotor() 函数在相应特定端口的实例创建。

ExpansionDCMotor dcmotor(sid, port);

PWM周期设定

通过 setPeriod() 函数设定PWM的周期。

dcmotor.setPeriod(period);

电机控制

通过 setWidth() 函数设定有效控制电机控制的时间。

dcmotor.setWidth(width);

有效时间是输出PWM的HIGH信号的时间。通过此时间与PWM的周期决定占空比。

Duty Cycle(%) = HIGH duration / period * 100

此函数实行的瞬间根据占空比启动电机。

示例

#include <PhpocExpansion.h>
#include <Phpoc.h>

byte spcId = 1;

ExpansionDCMotor dcmotor(spcId, 1);

int width = 3000;

void setup() {
    Serial.begin(9600);
    while(!Serial)
    ;

    Phpoc.begin(PF_LOG_SPI | PF_LOG_NET);
    Expansion.begin();

    Serial.println(dcmotor.getPID());
    Serial.println(dcmotor.getName());

    dcmotor.setPeriod(10000);
    dcmotor.setWidth(width);
}

void loop() {
    if(width > 0) {
        width -= 100;
        dcmotor.setWidth(width);
        delay(100);
    }
}

其他函数

设定PWM极性设定

通过利用 setPolarity() 课设定PWM信号的极性。

dcmotor.setPolarity(pol);

设置旋转方向

利用 setDirection() 函数课设定电机的旋转方向。

dcmotor.setDirection(dir);

※ 参考 : 实际电机的旋转方向受PWM极性设定与旋转方向设定受影响。

PWM 极性设定 旋转方向设定 实际旋转方向
normal forward clockwise
normal reverse counterclockwise
reverse forward counterclockwise
reverse reverse clockwise

设定衰减模式

通过 setDecay() 函数可设定衰减模式。

dcmotor.setDecay(decay)