Перейти к содержимому
CESBO.RU
admin

Управление мотором спутниковой тарелки с помощью Cesbo Astra

Recommended Posts

Все современные спутниковые адаптеры снабжены генератором тонового сигнала 22 кгц. Он подаётся в коаксиальный кабель для переключения конвертера в режим HIGH BAND (диапазон частот выше 11700 мгц). Промодулировав данный тон-сигнал нулями (1 мсек) и единицами (0.5 мсек), можно с помощью такого генератора посылать команды и другим устройствам: коммутаторам, позиционерам, актуаторам и пр. Осуществляется это драйверами программно, т.е. сам по себе адаптер дополнительного хардваре в схемотехнике не требует. Такой протокол носит название DISEqC. В этой заметке я покажу как управлять мотоприводом SG-2100A (и другие подобные) из-под linux-а с помощью Cesbo Astra (возможность реализована начиная с версии 5.64).

Скрин ниже снят анализатором Saleae. Такая посылка должна быть отправлена, чтобы установить мотор в 0E (по-сути 0W то же самое) по градации на шкале мотора.

diseqc_analyze

Перечень команд (взят из драйверов):

[E0 31 60]            // Stop Positioner movemoment
[E0 31 63]            // Disable Limits
[E0 31 66]            // Set East Limit
[E0 31 67]            // Set West Limit
[E0 31 68 00]         // Drive Motor East continously
[E0 31 68 FF-nn]      // Drive Motor East nn steps
[E0 31 69 FF-nn]      // Drive Motor West nn steps
[E0 31 69 00]         // Drive Motor West continously
[E0 31 6A nn]         // Store nn
[E0 31 6B nn]         // Goto nn
[E0 31 6F XX XX XX]   // Recalculate Position
[E0 31 6A 00]         // Enable Limits
[E0 31 6E XX XX]      // Gotoxx
[E0 10 38 F4]         // User

diseqc = «[E0 31 6E D4 80]» — 74W
diseqc = «[E0 31 6E D0 00]» — 0W
diseqc = «[E0 31 6E E0 00]» — 0E
diseqc = «[E0 31 6E E4 80]» — 74E

Высчитываем один шаг: 74 / 0x480 = 0.064236
-Теперь, чтобы например установить на 10.5E (по шкале мотора):
0xE000 + (10.5 / 0.064236) = 0xE0A3

Конфиг астры:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
dvb_tune({
    adapter = 0,
    type = "S",
    frequency = 12155,   -- HIGH band [tone 22 khz]
    lnb_sharing = false, -- enable voltage lnb
    polarization = "H",  -- 18V
    symbolrate = 27500,  --
    lof1 = 9750,         --
    lof2 = 10600,        --
    slof = 11700,        --
    modulation = "QPSK", --
    diseqc_mode = "cmd", --
    diseqc = "t W50 [E0 31 6E E0 A3] W30 T"  -- set 10.5E
});

Команду дисека можно и упростить — «t W50» (снятие и выдержка 50 мсек) можно не указывать. Так тоже будет работать. Но вернуть тон (если он был) в конце обязательно надо. А вот в случае с нижним поддиапазоном несколько попроще картина. Отключать/включать тон 22 кгц и выдерживать таймауты нет необходимости. Поэтому здесь конфиг выглядит так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
dvb_tune({
    adapter = 0,
    type = "S",
    frequency = 11555,   -- LOW band [no tone 22 khz]
    lnb_sharing = false, -- enable voltage lnb
    polarization = "H",  -- 18V
    symbolrate = 27500,  --
    lof1 = 9750,         --
    lof2 = 10600,        --
    slof = 11700,        --
    modulation = "QPSK", --
    diseqc_mode = "cmd", --
    diseqc = "[E0 31 69 FE]"  -- повернуть на один шаг на West
});

 

источник.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×