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 pol과 set dir에 모두 영향을 받습니다.
set pol의 값 | set dir의 값 | 회전 방향 |
---|---|---|
+ | + | 시계방향 |
+ | - | 반시계방향 |
- | + | 반시계방향 |
- | - | 시계방향 |
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"); // 느린 감쇠