电机控制及PWM设定


PWM设定及控制命令是pwm

相关命令有极性设定、旋转方向设定、PWM周期及有效期设定等。

PWM极性设定

设定PWM极性的命令是set pol

"dc1 pwm set pol (polarity)"

polarity上指定极性(“+” 或“-”)。 基本值为“+”,设定为“-”的情况极性向相反输出。

spc_request_dev($sid, "dc1 pwm set pol +"); // normal polarity
spc_request_dev($sid, "dc1 pwm set pol -"); // reverse plarity

设定旋转方向

设定旋转方向的命令是set dir

"dc1 pwm set dir (direction)"

spc_request_dev($sid, "dc1 pwm set dir +"); // forward
spc_request_dev($sid, "dc1 pwm set dir -"); // reverse

direction上指定旋转方向(“+” 或 “-”)。 基本值为“+”。 设定为“-”时,旋转方向为相反。 旋转方向受set polset dir的影响。

set pol的值 set dir的值 旋转方向
+ + 顺时方向
+ - 逆时方向
- + 逆时方向
- - 顺时方向

PWM周期设定

设定PWM周期的命令是set period

"dc1 pwm set period (period_us)"

period_us上指定周期。设定单位是毫秒。

spc_request_dev($sid, "dc1 pwm set period 10000"); // period: 10 ms

电机控制 例 (Setting HIGH duration of PWM)

为了电机控制的有效时间设定命令是set width

有效时间是指在PWM信号周期内,输出HIGH信号的时间。 设定有效时间后将,将根据此决定PWM信号的占空比(duty cycle)。

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

根据此设定开始PWM输出,所以此命令作为启动电机的角色。

<?php
include "/lib/sd_spc.php";
spc_reset();
spc_sync_baud(115200);

$sid = 1;
$width = 3000;

spc_request_dev($sid, "dc1 pwm set pol +");
spc_request_dev($sid, "dc1 pwm set dir +");
spc_request_dev($sid, "dc1 pwm set period 10000");
spc_request_dev($sid, "dc1 pwm set width $width");

while(1)
{
    $width -= 100;

    if($width <= 0)
        break;

    spc_request_dev($sid, "dc1 pwm set width $width");
    usleep(100000);
}
?>

设置衰减模式

设置衰减模式的命令是set decay

"dc1 pwm set decay (mode)"

mode上指定衰减模式。

模式 说明
fast fast decay
slow slow decay
spc_request_dev($sid, "dc1 pwm set decay fast"); // fast decay
spc_request_dev($sid, "dc1 pwm set decay slow"); // slow decay