모터 제어 및 PWM 설정


PWM 설정 및 제어 명령어는 pwm입니다.
관련된 명령어로는 극성 설정, 회전방향 설정, PWM주기 및 유효시간 설정 등이 있습니다.

PWM 극성 설정

PWM 극성을 설정하는 명령어는 set pol입니다.

"dc1 pwm set pol (polarity)"

polarity에 극성(+ 또는 -)을 지정합니다. 기본 값은 +이며 -로 설정하는 경우 극성이 반대로 출력됩니다.

spc_request_dev($sid, "dc1 pwm set pol +"); // 정상 극성
spc_request_dev($sid, "dc1 pwm set pol -"); // 반대 극성

회전 방향 설정

회전 방향을 설정하는 명령어는 set dir 입니다.

"dc1 pwm set dir (direction)"

spc_request_dev($sid, "dc1 pwm set dir +"); // 정방향
spc_request_dev($sid, "dc1 pwm set dir -"); // 역방향

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"); // 주기: 10밀리초

모터 제어 예

모터 제어를 위한 유효시간을 설정하는 명령어는 set width입니다.

유효시간은 PWM신호의 한 주기 내에서 HIGH신호가 출력되는 시간을 의미합니다. 유효시간을 설정하면 이에 따라서 PWM 신호의 듀티사이클이 결정됩니다.

듀티사이클(%) = 유효시간 / 주기 * 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 빠른 감쇠
slow 느린 감쇠
spc_request_dev($sid, "dc1 pwm set decay fast"); // 빠른 감쇠
spc_request_dev($sid, "dc1 pwm set decay slow"); // 느린 감쇠