Здравствуй читатель! Сегодня я расскажу о том, чем помог не так давно своим друзьям геодезистам, аэрофотосъемщикам. Мои друзья занимаются, проще говоря, съемкой Земли с борта самолета, для этого у них имеется некоторое оборудование и программное обеспечение, и часть из него хотелось бы им усовершенствовать. В этом году возникла идея создать программный модуль автоматической компенсации угла сноса платформы на которой установлена аэрофотосъемочная камера. Ранее это производилось в некотором ручном режиме (платформа очень старая) вычисляя угол сноса можно было произвести поправку платформы через некоторое устройство. Проблема была в вычислении и дальнейшей компенсации этого угла… собственно если интерес к данной статье не пропал, то прошу под кат (осторожно 7 Мб gif'ок)…
Введение
Угол сноса это угол между осью самолета и координатным маршрутом, по которому летит самолет, возникает он по причине метеоусловий, а именно ветра.
К примеру когда имеются идеальные условия аэрофотосъемка проходит подобным образом:
Но подобные условия конечно же крайне редки, обычно скорость ветра на высоте от 10 до 20 км/ч и схематически аэрофотосъемка уже будет выглядеть следующим образом:
То есть самолет как бы сопротивляется силе ветра, дабы лететь четко по заданному маршруту.
Для решения данной задачи мне было предоставлено следующее оборудование:
• Датчик магнитного азимута, проще говоря – компас.
• И блок управления шаговым двигателем в паре с самим шаговым движком.
Программную реализацию было решено делать на платформе .Net Framework.
Схема подключения оборудования к управляющему компьютеру:
Датчик магнитного азимута
Для решения задачи в первом приближении был выбран цифровой компас KVH Azimuth 1000 со встроенным датчиком, основной его полезной функцией является передача данных в формате NMEA 0183 по протоколу параллельного порта.
Данный формат передачи я раннее освещал в своих статьях о эмуляции данных с навигационного приемника. В случае данных об азимуте с датчика приходит строка, в которой можно найти значение угла (частота обновления данных 10 Гц, что для реализации задачи компенсации вполне достаточно). Подробные характеристики:
- точность ±0.5° с автокомпенсацией;
- диаметр 16 см;
- высота 7 см;
- чувствительность к полю 6.5–65 мкТл;
- вес 340 г;
- длина провода подключения 2 м;
- диапазон рабочих температур от -20 до 70° C;
- частота данных в формате NMEA 0183 10 Гц;
- напряжение питания 12 В.
Благодаря тому что данные передавались в формате NMEA, а с ним я ранее уже работал, был написан модуль на .Net для получения этих данных.
Блок управления шаговым двигателем
Реализовывать систему управления шаговым двигателем с нуля слишком затратно, тем более есть отечественные производители предоставляющие блоки управления представляющие собой запрограммированные контроллеры которые могут преобразовать более понятные команды уже в сигнал управляющий шаговым двигателем. Команды передаются по протоколу параллельного порта.
Был выбран SMSD-4.2, он может работать автономно, от компьютера (LPT-порт или USB-порт) или от внешнего задающего контроллера.
Функции и возможности устройства:
- управление шаговыми двигателями по программе, хранящейся в устройстве;
- запись, изменение или считывание управляющей программы в/из внутреннего энергонезависимого ПЗУ;
- автономная работа без участия ПК или внешнего контроллера;
- управление от компьютера через LPT или USB-порт ( виртуальный COM-порт);
- получение сигналов TTL и управление шаговыми двигателями посредством логических сигналов «Шаг», «Направление» и «Разрешение»;
- получение ASCII команд от ПК и управление шаговым двигателем по сложному алгоритму;
- возможность работы в ручном режиме;
- автоматический останов шагового двигателя при поступлении сигнала от аварийного датчика;
- автоматическое переключение направления вращения двигателя при поступлении сигнала от датчика реверса;
- два дополнительных входа для приема сигналов от внешних устройств (датчиков);
- один дополнительный вход – для поиска начального положения;
- возможность синхронизации работы нескольких блоков SMSD.
Технические характеристики:
- количество каналов управления шаговыми двигателями – 1;
- диапазон частот импульсов перемещения шагового двигателя – от 1 до 10000 Гц;
- точность установки частоты – не хуже 0.2 %;
- напряжение питания – 12–48 В;
- максимальный выходной ток – 4.2 А;
- количество дополнительных входов для получения сигналов от внешних устройств и датчиков – 3 (два для синхронизации с внешними устройствами и один — для поиска начального положения);
- режимы дробления шага – 1, 1/2, 1/4, 1/16.
Для реализации модуля взаимодействия с блоком управления шаговым двигателем были изучены команды и их порядок выполнения. Команды представляют собой мини программы:
- заголовок;
- список конкретных параметров, таких как направление, скорость, ускорение, количество шагов;
- запуск исполнения.
Был реализован модуль работы с блоком управления, с помощью него можно задать только угол, если требуется скорость (если не задается, то выбирается наиболее оптимальная скорость) и направление.
Заключение
И как итог объединив выше описанные решения был создан модуль автоматической компенсации угла сноса. Ниже демо видео, в нем видно как при изменении магнитного азимута платформа компенсируется на заданный угол.
И вот так будет выглядеть процесс аэрофотосъемки с автоматической компенсацией угла сноса.
Надеюсь что не зря потратили минуты на прочтения мой статьи, жду отзывов…
Автор: 2m0nd