Одно из направлений в радиолюбительстве это связь через радиолюбительские спутники. Для качественной радиосвязи можно использовать поворотные устройства для антенн. В этой статье описан опыт создания такого поворотного устройства с нуля и до полевых испытаний.
Пара слов о безопасности
Следите за электробезопасностью! Электрический ток может быть опасен!
Соблюдайте правила использования аккумуляторов;
Следите за пожарной безопасностью;
движущиеся части устройства могут зажать части тела;
Различные выступающие части могут представлять опасность для глаз! Особенно части антенны. При отключении питания антенна падает. Следите за своими глазами!
Этот проект выполнен на основе работы австралийских школьников. Вот ссылка на их сайт. А также спасибо автору за статью на русском языке о том, как это всё запустить.
Поводом для моей статьи стал недостаток, с которым я не стал мириться. Это калибровка используемого в оригинальном проекте датчика GY-511 LSM303DLHC. У меня очень часто возникала ситуация, когда система начинала постоянно вращаться в одном направлении и закручивать все провода. Датчик был исключен, электродвигатели постоянного тока были заменены на шаговые двигатели с редуктором. Эти изменения позволили сильно упростить исходный код и избавиться от необходимости калиброваться, но появились свои недостатки:
Система теперь не имеет обратной связи, поэтому ее необходимо вручную ориентировать «на север» и «по горизонту». От этой установки будет линейно зависеть точность наведения на радиолюбительский спутник.
В режиме ведения радиолюбительского спутника, когда он переходит 0 градусов системы координат поворотное устройство начинает двигаться в противоположном направлении на 360 градусов, пока не установит антенну в необходимое положение. (примерно на 35 секунде видно как система "теряет" спутник и движется в необходимую точку)
Почему так происходит
Идея работы этого поворотного устройства заключается в том, что оборот шагового двигателя, который отвечает за угол азимута разбивается на 360 градусов. При получении новой координаты система занимает необходимое положение. При "ведении" радиолюбительского спутника система получает очередную координату, например 2 градуса по азимуту и занимает необходимое положение, затем получает 1 градус и шаговик делает ~0.55 шага (200 импульсов на оборот / 360 градусов = 0,55 шага). Далее поступает команда занять положение 0 градусов, происходит еще 0,55 шага. Но при поступлении команды занять положение "359 градусов", шаговый двигатель должен сделать целый оборот.
Это можно исправить, возможно кто-то из читателей это сделает и опубликует статью.
Несмотря на эти недостатки система рабочая и позволяет автоматически наводить радиолюбительскую антенну на радиолюбительский спутник. Далее я расскажу подробно как это сделать.
Поворотное устройство
Для изготовления поворотного устройства понадобится:
Корпус. Мной использован алюминиевый корпус 222x146x55 мм (пишите в личку сброшу ссылку). Прототип был вообще сделан в картонном корпусе, фото ниже.
Два шаговых двигателя с редукторами. Мной использованы NEMA17 c редукторами с коэффициентом 1:10 из известного интернет-магазина (пишите в личку сброшу ссылку). Без редуктора тоже пробовал, правда только NEMA17. Обычные вообще не справились с нагрузкой усиленные справились, но при малейшем неверном движении (например, зацепился кабель) происходили пропуски шагов. Не думаю что NEMA23 будут много лучше, да и они больше.
Драйвера для шаговиков. A4988 справляются пока. С ними очень удобно использовать посадочные модули, они тоже будут на фото ниже.
DC-DC понижающий преобразователь. В поле удобно пользоваться аккумуляторами. Заводим напряжение с них на понижайку, а с нее подаем 9 вольт на драйвера.
Arduino Nano. Просто и достаточно для выполнения данной задачи. Отладку тоже удобно использовать с посадочным модулем (Nano V3 IO Shield (DIY) для Arduino Nano).
Жесткие муфты 8х8 мм. Обязательно жесткие, потому что там и так всё болтается, но необязательно 8x8. Все зависит от Вашего выходного вала и того на что будет крепиться поворотное устройство и как будет закреплена антенна.
Тумблер. Например, MTS-102. Можно аналог, а можно и без него. А еще можно сурово делать скрутку. Шутка.
Разъем для питания. Опять же это для удобства, на функционал не повлияет.
Разъем USB. С ним удобнее чем без него.
Провода, винты, стойки, кое-какой инструмент.
Hidden text
После того как все компоненты появились на столе, их нужно скомпоновать в корпусе, смонтировать и соединить. Соединяем согласно схеме:
Компоновку предлагаю такую:
Далее нам понадобится загрузить программу в микроконтроллер. Для этого можно использовать Arduino IDE. Я использовал версию 1.8.19. Код загружен на github https://github.com/NSV47/satelliteHunter.git.
Как уже написано выше идея работы этой системы заключается в том, что оборот шагового двигателя разбивается на 360 градусов. A4988 позволяет работать в режиме микрошага с дроблением 1/16, например. Если при этом коэффициент редукции 1:10, для полного оборота необходимо дать на вход драйвера 32000 импульсов. Это настраивается в файле satelliteHunter.ino в функции processMotors(). Там с помощью функции map() значение градуса, которые мы получили из GPREDICT через HAMLIB (об этом позже) приводится к значению выбранного микрошага с учетом редукции.
void processMotors() {
//Drive the motors to reduce the azimuth and elevation error to zero
int azPos = azSet;
int elPos = elSet;
azPos = map(azPos, 0, 360, 0, 32000); //вбиваем сюда количество импульсов на оборот для драйвера азимута
elPos = map(elPos, 0, 360, 0, 32000); //вбиваем сюда количество импульсов на оборот для драйвера элевации
digitalWrite(azDirPin, ((azPos-azPosition)>0?HIGH:LOW));
digitalWrite(elDirPin, ((elPos-elPosition)>0?HIGH:LOW));
azMot.drive(abs(azPos-azPosition));
elMot.drive(abs(elPos-elPosition));
azPosition=azPos;
elPosition=elPos;
az=azSet;
el=elSet;
}
Приведу еще один пример для закрепления. Куплен драйвер с микрошагом 1/8 и редуктор 1:5. Тогда на оборот надо дать 8000 импульсов (200 импульсов на оборот движка * 8 * 5). Таким образом вписываем в map() 8000 вместо 32000.
Промежуточный итого. Устройство собрано, микроконтроллер прошит и система ждет команд, поэтому переходим к следующей части статьи про десктопное ПО.
Программная часть на компьютер
Все достаточно хорошо описано в русскоязычной статье, которая приведена выше. Опишу подробнее с чем столкнулся я, когда устанавливал необходимое ПО. Мой пример под ОС Windows, но и под Linux все есть, например с каким-нибудь малиновым одноплатником в поле будет удобнее чем с ноутбуком, который еще непонятно как заряжать.
Скачайте GPREDICT. Необходима версия 1.4, с другими я не пробовал и на официальном сайте написано, что другие могут не подойти.
Запустите установку HAMLIB от имени администратора.
Подключите поворотное устройство к USB порту. При этом драйвер для Arduino Nano должен быть установлен, если нет - устанавливаем.
Чтобы запустить HAMLIB, для управления поворотным устройством из Gpredict, создайте *.bat файл Windows с именем rotctld.bat, содержащий следующие строки (код bat файла приведен ниже). Обратите внимание куда установилась программа HAMLIB, она может быть в Program Files или Program Files (х86). А также необходимо выбрать правильный номер com порта
Запустите GPREDICT. Скачанный архив необходимо распаковать, само приложение находится в каталоге bin.
Переходим в настройки edit->Preferences
Необходимо установить свое положение во вкладке Ground Stations. Add New->указываем имя и координаты->нажимаем "Ok". Ставим галочку Default
Во вкладке TLE Update в строке Remote server указываем http://r4uab.ru/, а в строке Files to fetch пишем satonline.txt; (точка с запятой обязательно!) - рис. 1
Переходим во вкладку Interfaces->Rotors->Add New->указываем имя и нажимает "Ок"
Теперь открываем меню поворотного устройства - рис. 2
Выбираем Antenna Control, открывается окно, в котором необходимо установить все градусы в нули. (В нули потому что мы вручную выставили поворотное устройство с антенной в направлении "на север" и "по горизонту", а если не выставили, то самое время). Во вкладке Device должно быть поворотное устройство, которые Вы создали, если нажать Engage, то система станет активной. При изменении значений градусов поворотное устройство будет устанавливать антенну в необходимое положение.
Ну а дальше выбираем спутник, нажимаем Track и готово.
cd \Program Files\hamlib-w64-4.5.4\bin\
cmd /k "rotctld -m 202 -r COM6 -s 9600 -T 127.0.0.1 -t 4533 -C timeout=500 -C retry=0 -vvvvvvvv"