AFON//Радиотехник
AHDL · проект 36/50

Контроллер сервопривода

Импульс 1…2 мс с периодом 20 мс

Задача

Формировать управляющий сигнал сервопривода: период 20 мс, ширина импульса 1…2 мс по заданию pos.

Тип схемы и среда

Последовательная схема при тактовой 1 МГц (1 отсчёт = 1 мкс): счётчик периода и компаратор ширины.

Алгоритм работы

Счётчик отсчитывает 20000 мкс. Ширина импульса = 1000 + масштабированный pos; пока счётчик меньше ширины, выход активен.

Код на AHDL

ahdl_36_servo_kontroller.tdf↓ скачать .tdf
% Проект 36: контроллер сервопривода (импульс 1..2 мс) %
SUBDESIGN ahdl_36_servo_kontroller
(
    clk, clrn : INPUT;   % 1 МГц: 1 отсчёт = 1 мкс %
    pos[7..0] : INPUT;   % 0..255 -> 1000..2000 мкс %
    servo     : OUTPUT;
)
VARIABLE
    cnt[14..0] : DFF;    % период 20000 мкс %
    width[11..0]: NODE;
BEGIN
    cnt[].clk  = clk;
    cnt[].clrn = clrn;
    IF cnt[].q == 19999 THEN
        cnt[].d = 0;
    ELSE
        cnt[].d = cnt[].q + 1;
    END IF;
    width[] = 1000 + (B"0000", pos[]) + (B"00", pos[], B"00");  % 1000 + pos*~4 %
    servo   = cnt[].q < width[];
END;

Пояснения

Стандарт хобби-серво: 1 мс — крайнее положение, 1,5 мс — центр, 2 мс — другой край, период около 20 мс. Масштаб pos подобран под диапазон 1000…2000 мкс.

Инструменты и справочники по теме

📦 help-user.ru — скупка и ремонт компьютерной техники. Продать ноутбук, ПК, комплектующие — help-user.ru.

Что дальше

Скачайте ahdl_36_servo_kontroller.tdf, создайте проект в MAX+PLUS II или Quartus, назначьте выводы под свою плату и скомпилируйте. Остальные 49 разработок — в разделе проектов на AHDL.