Профессиональный контроллер антенного ротатора: Интеграция с ПО слежения
Компоненты и материалы
| Arduino UNO | 1 |
| Потенциометр поворотный (макс. 1 кОм, лучше 500 Ом) | 2 |
| Ротари энкодер с кнопкой | 2 |
| Беспаечная плата | 1 |
| Релейный модуль (2 модуля × 2 реле NO-COM-NC) | 2 |
| Модуль силового MOSFET (N-канал, мин. 12В/3А) | 2 |
Приложения
- Arduino IDE
О проекте
Последнее обновление: ноябрь 2021
Началось как хобби, выросло в серьёзное оборудование.
Контроллер позволяет ручное позиционирование антенны двумя энкодерами (Азимут и Угол места). При подключении по USB к ПК с ПО слежения за спутниками — автотрекинг.
Совместимость: Все ПО с протоколом EasyComm2 / 9600 бод: PstRotator, WXtrack, HRD, MacDoppler, WXtoIMG. С Orbitron — через DDE-плагин (ссылка).
Контроллер возвращает реальную позицию антенны по сериалу — ПО показывает её на экране (пока только PstRotator это использует).
Код без библиотек (кроме LCD), пины по схеме. Нажатие кнопки азимутального энкодера — экстренная остановка, азимут переключается в шаг 10°.
Две версии: для DC-двигателей и для AC (только реле). AC-версия подходит для интеграции с готовыми коммерческими ротаторами.
DC-версия — преимущество: PWM для мягкого пуска/остановки (Soft-Start/Soft-Stop). Мощность пропорциональна угловой ошибке (Цель ↔ Антенна). При старте — плавный разгон, при приближении — плавное замедление до остановки. Настраиваемая мёртвая зона (Dead Zone) — при малом смещении антенна не двигается.
Есть бета версия Soft-Start/Stop для AC на AC-Dimmer модуле — пока только для азимута. Пишите на email, если хотите попробовать.
Для 180° элевации — пишите, есть версия. Версия с точностью 0.1° не рекомендую без идеального потенциометра и механики. Больше версий на сайте.
После сборки — обязательна калибровка:
- Потенциометры — обязательно, для корректного 0-359° / 0-90° любого потенциометра.
- Двигатели — только для настройки Soft-Start/Stop, если не устраивают дефолты.
Подробности в видео. Код улучшался, видео не обновляются — свежая инфа на сайте: racov.ro
Пишите на YO3RAK@gmail.com — платформа не уведомляет о комментариях. Буду рад помочь.
Спасибо всем за фидбек — проект стал надежнее. Любые отзывы ценны!
Код
ant-rot-DC-nov2021 (Arduino) — для DC-двигателей с Soft-Start/Stop PWM
Полный код (~500 строк) в исходнике. Основные блоки: I2C LCD, усреднение показаний потенциометров (25 сэмплов), прерывания от азимутального энкодера, опрос элевационного энкодера в loop, парсинг EasyComm2 команд <AZxxx> <ELxx>, пропорциональный PWM с формулами Soft-Start/Stop, холодное переключение направления (защита механики), сериальный ответ <+AZZ.Z ELZ.Z>.
ant-rot-AC-aug2021 (Arduino) — для AC-двигателей/реле
Аналогичная логика, но управление сухими контактами реле (Left/Right, Up/Down). Без PWM. Холодное переключение с задержкой 500 мс.
Процедура калибровки потенциометров (текст)
- В коде раскомментируйте `Serial.print` в `DisplAzim` и `DisplElev` — выводят сырые АЦП значения.
- Залейте, откройте Serial Monitor.
- Энкодерами поставьте антенну в минимумы: 0° азимут, 0° элевация. Запишите значения (например, AzMin=90, ElMin=10).
- Поставьте в максимумы: 359° азимут, 90° элевация. Запишите (AzMax=1000, ElMax=992).
- В начале кода в секции
// ANTENNA potentiometers CALIBRATIONвпишите полученные значения. - Закомментируйте обратно Serial.print, перезалейте. Готово — углы показываются верно.
Процедура калибровки двигателей (текст)
Настраивает зоны разгона/торможения и мёртвую зону. Не обязательна, если устраивают дефолты. Сначала сделайте калибровку потенциометров!
Параметры в начале кода:
AzErr,ElErr— мёртвая зона (дефолт 8°/4°). Меньше — точнее, но чаще дёргает моторы.Amax,Emax— угол, где достигается макс. мощность (25°/15°). Больше — для тяжёлых антенн.PwAzMin,PwElMin— мин. мощность % (30%), при которой мотор не заклинивает под нагрузкой.PwAzMax,PwElMax— макс. мощность % (100%). Можно снизить, если слишком быстро.
Мощность рассчитывается пропорционально угловой ошибке для Soft-Stop и от стартового угла для Soft-Start. Берётся минимум из двух.
Схемы
Для DC-двигателей: полная схема модулей, энкодеров, LCD, реле, MOSFET.
Для AC-двигателей: сухие контакты реле, легко интерфейсится с коммерческими ротаторами.
Производственный процесс
- Управление яркостью LED с ШИМ через кнопку на Arduino Mega
- Создание игры в реальном времени на Arduino Nano с гироскопом MPU-6050 и OLED-дисплеем
- Проект с датчиком DHT11: индикация температуры светодиодами и пьезо-динамиком на Arduino
- Unopad: Бесшовный Arduino MIDI-контроллер для Ableton Live
- Строим Iron Man на Arduino: компоненты, сенсоры и пошаговый гайд
- Простой ИК-датчик препятствий на Arduino: ИК-светодиод и фотодиод
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- DIY-контроллер увлажнителя на Arduino с реле: безопасная работа с высоким напряжением
- Создание интерактивного 4x4x4 светодиодного куба на Arduino Uno и 1Sheeld
- Своё рулевое управление (джойстик) для игр на Arduino