저역통과필터 설정 및 모니터링


엔코더 모니터링을 위한 저역통과필터(low-pass filter) 설정 및 모니터링 명령어는 "lpf"입니다.
관련된 명령어로는 컷오프 주파수 설정, 노이즈 카운터 설정 및 노이즈 카운터 모니터링이 있습니다.

저역통과필터 컷오프 주파수 설정

저역통과필터 컷오프 주파수를 설정하는 명령어는 set freq입니다.

"dc1 lpf set freq (frequency)"

frequency에 컷오프 주파수를 지정합니다.

저역통과필터 컷오프 주파수를 설정하면 엔코더 모니터링 시 해당 주파수보다 높은 주파수에 해당하는 신호는 카운트하지 않습니다.

spc_request_dev($sid, "dc1 lpf freq 5000");

저역통과필터 노이즈 카운터값 설정

저역통과필터 노이즈 카운터값을 설정하는 명령어는 set pnc입니다.

"dc1 lpf set pnc (value)"

value에 노이즈 카운터값을 지정합니다.

spc_request_dev($sid, "dc1 lpf set pnc 0");

저역통과필터 노이즈 카운터값 모니터링

저역통과필터 노이즈 카운터값 모니터링을 위한 명령어는 get pnc입니다.

"dc1 lpf get pnc"


<?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");

$freq = 1000;
$count_prev = 0;

while(1)
{
    if($freq > 7000)
    {
        spc_request_dev($sid, "dc1 pwm set width 0");
        break;
    }
    spc_request_dev($sid, "dc1 lpf set freq $freq");
    $count = (int)spc_request_dev($sid, "dc1 lpf get pnc");
    $diff = $count - $count_prev;
    echo "noise count at freq $freq: $diff\r\n";

    $freq += 200;
    $count_prev = $count;
    usleep(200000);
}
?>