엔코더 설정 및 모니터링


엔코더 설정 및 모니터링 명령어는 enc입니다.
관련된 명령어로는 카운트 방향 설정, 카운터값 설정, 카운터값 모니터링 및 주기 모니터링 등이 있습니다.

엔코더 카운트 방향 설정

엔코더 카운트 방향을 설정하는 명령어는 set pol입니다.

"dc1 enc set pol (polarity)"

polarity에 카운트 방향(+ 또는 -)을 지정하며 기본 값은 +입니다.

센서가 하나인 인코더의 경우에는 polarity에 0을 설정합니다. 이 경우 pos의 값은 항상 증가합니다.

카운트 방향 모터 회전방향 카운터값
+ 정방향 증가
+ 역방향 감소
- 정방향 감소
- 역방향 증가
0 정방향 증가
0 역방향 증가
spc_request_dev($sid, "dc1 enc set pol +");
spc_request_dev($sid, "dc1 enc set pol -");

엔코더 카운터값 설정

엔코더 카운터값을 설정하는 명령어는 set pos입니다.

"dc1 enc set pos (value)"

value에 카운터값을 지정합니다. 카운터값은 -1000000000(-10억) 부터 1000000000(10억)까지 설정할 수 있습니다.

spc_request_dev($sid, "dc1 enc set pos -5000");
spc_request_dev($sid, "dc1 enc set pos 3000");

엔코더 샘플링 카운트 설정

엔코더 샘플링 카운트를 설정하는 명령어는 set psr입니다.

"dc1 enc set psr (value)"

value에 샘플링 카운트를 지정합니다.
엔코더 샘플링 카운트는 엔코더 출력 펄스의 주기를 측정할 때 사용할 펄스의 개수를 의미합니다. 샘플링 카운트가 많을수록 오차는 줄어듭니다. 엔코더 샘플링 카운트는 1부터 64까지 설정할 수 있습니다.

spc_request_dev($sid, "dc1 enc set psr 16");

엔코더 카운터값 모니터링

엔코더 카운터값 모니터링을 위한 명령어는 get pos입니다.

"dc1 enc get pos"

<?php
include "/lib/sd_spc.php";
spc_reset();
spc_sync_baud(115200);
$sid = 1;

spc_request_dev($sid, "dc1 pwm set period 10000");
spc_request_dev($sid, "dc1 pwm set width 1000");

while(1)
{
    $count = spc_request_dev($sid, "dc1 enc get pos");
    echo "$count\r\n";
}
?>

엔코더 출력 펄스 주기 모니터링

엔코더 출력 펄스 주기 모니터링을 위한 명령어는 get period입니다.

"dc1 enc get period"

엔코더 출력 펄스 주기의 단위는 마이크로초(us) 입니다. 엔코더 출력 펄스 주기를 모니터링할 때 오차를 줄이기 위해서는 엔코더 샘플링 카운트를 높은 값으로 설정하시기 바랍니다.

<?php
include "/lib/sd_spc.php";
spc_reset();
spc_sync_baud(115200);
$sid = 1;

spc_request_dev($sid, "dc1 pwm set period 10000");
spc_request_dev($sid, "dc1 pwm set width 1000");
spc_request_dev($sid, "dc1 enc set psr 4");

while(1)
{
    $count = spc_request_dev($sid, "dc1 enc get period");
    echo "$count\r\n";
}
?>