Контроль двигателей и настройка PWM


Командой для контроля двигателей и настройки PWM является pwm.

Соответствующие команды устанавливают полярность, задают направление вращения, период установки и высоту (HIGH duration) 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 pol, так и set 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

Управляющие двигатели (Настройка HIGH duration для PWM)

Командой настройки HIGH duration для двигателя является set width.

Продолжительность HIGH - это время, в течении которого сигнал HIGH выводится в течении одного цикла сигнала PWM. Установка длительности HIGH определяет рабочий цикл сигнала PWM.

Рабочий цикл(%) = HIGH duration / период * 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);
}
?>

Настройка режима decay

Команда для настройки режима decay - set decay.

"dc1 pwm set decay (mode)"

Укажите параметры decay для mode.

Режим Описание
быстрый быстрый decay
медленный медленный decay
spc_request_dev($sid, "dc1 pwm set decay fast"); // fast decay
spc_request_dev($sid, "dc1 pwm set decay slow"); // slow decay