Главная » Спутниковое ТВ
Призовой фонд
на март 2017 г.
1. UNI-T UT-39C
Паяльник
2. Тестер компонентов LCR-T4
Паяльник
3. 100 руб.
От пользователей

Похожие статьи:


Управление спутниковым мотоподвесом при помощи микроконтроллера

В совсем недалекую эпоху Dial-Up интернета многие устанавливали спутниковые тарелки с мотоподвесами для получения доступа к сравнительно быстрому интернету и бесплатному ТВ хорошего качества. Сегодня на первый план вышли ADSL и мобильный интернет.

Мотоподвесы (МП) у многих остались не у дел. Но не использовать такую классную вещь просто грех. Я решил использовать МП (SG2100A, один из самых популярных и недорогих) для системы слежения за положением солнца (планирую делать солнечный водонагреватель). Ведь МП - это шаговый двигатель+редуктор+большая шестерня+концевые выключатели+контроллер.

Контроллер МП работает по протоколу Diseqc, обычно версии 1.2 (односторонний, без ответов). Контроллер МП является slave-контроллером на шине Diseqc и выполняет команды master-устройства (ресивера, платы в ПК, микроконтроллера...). Вся документация по этому протоколу есть на сайте www.eutelsat.com (на английском).

Команда состоит как минимум из трех байт: стартовый, адрес, команда [, доп. байты для команды].

Стартовый байт может быть разным, но для МП он равен 0xE0.
Адрес может быть разным, но для МП он равен 0x31.
МП может выполнять много разных команд, но нас интересуют только следующие:
0x00   Reset, сброс МП, нужна для запоминания текущего положения как 0 градусов.
0x60   Stop, остановка двигателя
0x63   Disable Soft Limits, нужна для перемещения в крайнее доступное положение
0x66   Set East Soft Limit, задает макс угол поворота на Восток
0x67   Set West Soft Limit, задает макс угол поворота на Запад
0x68   Drive East, в 4-м байте задаются шаги или секунды
0x69   Drive West, в 4-м байте задаются шаги или секунды
0x6E   Goto x.x° (Goto X), в паспорте МП д.б. указано, что он понимает эту команду.

Достаточно.

МП питается постоянным напряжением 12-18 в (при подаче напряжения светодиод МП должен гореть зеленым цветом!)
Питание подается: плюс на жилу кабеля, минус - на оплетку.
Команды представляют собой модуляцию этого постоянного напряжения импульсами с частотой 22 кГц +-20%.
Амплитуда модуляции 650 мв +- 250 мв.
Байты передаются последовательно без пауз.
Каждый байт это 8 бит + 9-й бит дополнения до нечета (пример: 111100001)
Каждый бит имеет длительность 1500 мкс.
Причем бит "0" это 22 импульса общей длительностью 1000 мкс плюс пауза 500 мкс.
А бит "1" это 11 импульсов общей длительностью 500 мкс плюс пауза 1000 мкс.
Тогда подпрограмма выдачи битов для микроконтролера PIC, работающего с F= 4МГц, выглядят так:

// CCS C Compiler
#define MOPO  PIN_B0
**********
void sendbit(int8 v)  //v=0|1; 
{int8 k,n;
 if(v==0) n=23; else n=12;   //значение n подобрано опытным путем измерением в Proteuse
 for(k=1;k < n; k++)

{ output_high(MOPO);

  delay_us(19);   // опытным путем
  output_low(MOPO);   
  delay_us(12);   // опытным путем
 }
 delay_us(500); if(v==1) delay_us(500);   // фомирование паузы
}

Конечно, для формирования импульсов можно использовать таймер и прерывания.

Теперь необходимо сформировать байт для передачи в МП.
Байт передается, начиная со старшего бита, и заканчивается битом паритета.
Для его вычисления у нас есть красивый алгоритм (см. Microchip AN774):

int8 odd(int8 n)
{int8 p;
 p=n >> 1;    
 p ^= n;    // XOR
 n= p >> 2;
 p ^= n;   
 n= p >> 4;
 p ^= n;   
 return !(p & 1); // возврат младщего бита как бита нечетности
}

Теперь можем выдать в МП весь байт:

void sendbyte(int8 b)
{int8 i,bb; bb=b;
 for(i=0;i<8;i++) sendbit(shift_left(&bb,1,0));  // вывод, начиная со старшего бита
 sendbit(odd(b));    // вывод бита Odd
}

Порядок работы с МП:
1) Подать питание на МП (12-18 В)
2) Вручную, кнопкой переместить МП в 0-точку (Север)
3) Тонким стержнем нажать Reset (узкое отверстие) и держать ~2 сек., пока светодиод не загорится зеленым цветом. (МП запоминает эту позицию, как Север (0 гр.)).
4) Прошиваем МК, собираем схему формирования импульсов.
5) Выдаем команду Disable Soft Limits:
  sendbyte(0xE0);sendbyte(0x31);sendbyte(0x63);
Между командами необходимо выдерживать паузу и выдавать следующую после отработки предыдущей!
6) Теперь повернем МП в крайнее положение, чтобы узнать его возможности:

   sendbyte(0xE0); sendbyte(0x31); sendbyte(0x68); sendbyte(0x7F);

   -3-й байт команды 0x68 -Drive East
   -4-й байт команды это шаги или секунды:
   - 0x01 - 0x7F -это секунды 
   (т.е. 0x7F это вращение в течение 127 секунд, скорость вращения МП ок. 2гр./сек. при питании 12 В)
   - 0x80 -0xFF -это шаги, причем 0xFF-это 1 шаг, а 0x80 - 128 шагов
   - 0x00 -непрерывное движение до концевого мех-го ограничителя

Измеряем угол поворота МП, если недостаточен, то пытаемся снять или переместить концевые выключатели. У меня получилось +- 75 гр., что соответствует паспорту. После чего обязательно задаем предельные углы поворотов.

Но сначала надо научиться перемещать МП в заданную угловую позицию:
Сначала вернем МП в точку "Север":
   sendbyte(0xE0); sendbyte(0x31); sendbyte(0x6E); sendbyte(0x00);  sendbyte(0x00);
Рассмотрим структуру 4-го байта этой команды:
   -для движения в точку восточнее Севера (в моем случае 0-75) старщий полубайт = 0xE.
   -для движения в точку западнее Севера (0-75) старщий полубайт = 0x0.
   -число в младшем полубайте задает градусы: для получения градусов это число умножается на 16 (пример, 3х16=48градусов).
Структура 5-го байта этой команды:   
   -старший полубайт дает градусы (например, 0xA это 10 градусов)
   -младший полубайт определяет дробную часть:
   1xxx добавляет 0,5 градуса
   х1xx добавляет 0,25 градуса
   хх1x добавляет 0,125 градуса
   ххх1 добавляет 0,0625 градуса

Рассмотрим пример команды: 0xE0,0x31,0x6E,0xE5,0x3F
  
 - 0xE в 4-м байте говорит, что надо двигаться на восток
   - 0x5 в 4-м байте говорит, что надо двигаться в точку 5х16= 80гр.
   - 0х3 в 5-м байте говорит, что к 80 надо добавить еще 3 градуса
   - 0хF в 5-м байте говорит, что к 83 надо добавить еще 0,5+0,25+0,125+0,0625=0,9375
   Итого МП д. переместится в точку 83,9375 гр. вост. долготы.
Не забывайте, если мы разместим МП 0-й точкой на Юг (что и делается для антенн или солнечных концентраторов), то Запад и Восток поменяются местами.

Теперь переместимся в крайнюю восточную точку, например E60:
   sendbyte(0xE0); sendbyte(0x31); sendbyte(0x6E); sendbyte(0xE3); sendbyte(0xC0);
Зададим этот угол как предельный для востока:
   sendbyte(0xE0); sendbyte(0x31); sendbyte(0x66);
Теперь переместимся в крайнюю западную точку, например W60:
   sendbyte(0xE0); sendbyte(0x31); sendbyte(0x6E); sendbyte(0x03); sendbyte(0xC0);
Зададим этот угол как предельный для запада:
   sendbyte(0xE0); sendbyte(0x31); sendbyte(0x67);
Теперь, в случае ошибочной команды или сбоя МП не повернется дальше +- 60 градусов.

Схема управления спутниковым мотоподвесом при помощи микроконтроллера

Схема формирования импульсов взята из статьи "Тестер DISEqC-устройств с поддержкой протоколов управления: 1.0, 1.1 и 1.2", А. Данилин, СОВРЕМЕННАЯ ЭЛЕКТРОНИКА № 7 2009.
Только вместо двух диодов VD5,VD6 (1N4004) поставлен один.

Алгоритм и схема реально опробованы.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
U1 МК PIC 8-бит
PIC16F886
1 Поиск в FivelВ блокнот
Q1 Биполярный транзистор
BC338
1 Поиск в FivelВ блокнот
Q2 Биполярный транзистор
BC328
1 Поиск в FivelВ блокнот
D1 Выпрямительный диод
1N4002
1 Поиск в FivelВ блокнот
R1 Резистор
4.7 кОм
1 Поиск в FivelВ блокнот
R2 Резистор
1 кОм
1 Поиск в FivelВ блокнот
R3 Резистор
10 кОм
1 Поиск в FivelВ блокнот
RLOAD Резистор
100 Ом
1 Поиск в FivelВ блокнот
SW1 Тактовая кнопка1 Поиск в FivelВ блокнот
BATIN Батарея питания12 В1 Поиск в FivelВ блокнот
Исполнительный механизм мотоподвеса1 Поиск в FivelВ блокнот
Добавить все

Скачать список элементов (PDF)

Теги:

Опубликована: 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (4) | Я собрал (0) | Подписаться

0
Александр #
Это не моя схема. У меня иначе! Да и методом тыка не надо было подбирать, достаточно почитать стандарт.
Советую поставить два диода - это будет гарантировать нормальные фронты сигнала
С уважением, Александр Данинин
P.S. Не думал, что через 5 лет буду комментировать на эту тему
Ответить
0

[Автор]
w2i4t2a7 #
За что купил, за то и продаю...
У Вас 2 диода, но 600 мВ падения обеспечивает и 1 диод (или 2 Шоттки-диода). Как диод гарантирует ФРОНТ сигнала?
Стандарт я, вестимо, читал, но чтобы обеспечить точное время импульса (и паузы) надо использовать прерывания или подбор времени задержки. В случае с прерыванием также надо корректировать время - учет времени на обработку прерывания.
Тем не менее, спасибо за схему формирования импульса.
Ответить
0
Александр #
Два диода дают больший размах, что неплохо для длинной линии связи.
Схема не моя, я её взял у кума, а кум - у немцев из sat-тестера. Справа высветилась книжка - её я правил и дописывал как научный редактор. Время летит...
Ответить
0

[Автор]
w2i4t2a7 #
Насчет длиной линии учту. Пока, по прикидкам, контроллер будет стоять метрах в 2-3 от привода.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Сатфайндер
Сатфайндер
FM-модуль RDA5807M Тестер ESR, полупроводников, резисторов, индуктивностей
вверх