====== Альтернативная прошивка для контроллера поворотного устройства R851 ====== **Проект активно разрабатывается. На данном этапе реализовано примерно 65% запланированного. Как только прошивка будет готова - все исходные коды будут опубликованы.** Контроллер этого поворотного устройства встречается и под другими именами, но, к сожалению, всех их я не знаю. ===== Об оригинальной прошивке ===== В процессе эксплуатации был обнаружен ряд недостатков. Основными являются следующие: - Односторонняя связь с компьютером при полной аппаратной поддержке двухсторонней связи. - Невозможно выбрать запрещенную зону и указать её размер (overlap). Менее важные: - Нет индикации, в какую сторону можно вращать антенну (с какой стороны вошли в overlap зону). - При отсутствии импульсов с датчика обратной связи продолжает подавать питание на двигатель (возможно возгорание). ===== Особенности альтернативной прошивки ===== Кроме исправления недочетов оригинальной прошивки были реализованы дополнительные возможности. - Добавлен конфигуратор. - Прошивка поддерживает элевацию. Может быть включена в конфигураторе. - Классический пользовательский интерфейс сохранен. Может быть включен в конфигураторе. - Альтернативные пользовательские интерфейсы. Для включенной элевации компактный, при управлении только азимутом используется большой шрифт для отображения текущего положения антенны. - Обработка дополнительных команд протокола Yeasu GS-232 (за исключением калибровки и команд автоматического движения по заданным точкам). - Интеллектуальный энкодер (увеличивает шаг при быстром вращении). - Парковка. Положение по обеим осям можно указать в конфигураторе. - Равномерное расходование ресурса EEPROM. Данный список может быть расширен. Пишите Ваши предложения на почту [[walhi@walhi.ru]]. ===== Настройка устройства ===== В контроллер добавлен ряд пользовательских настроек. Для входа в режим настройки нужно отключить устройство, зажать кнопки экнкодеров азимута и элевации (или кнопку mode для варианта без энкодера элевации). Далее на экране будут последовательно отображаться параметры, значение которых можно изменять энкодером азимута. Для подтверждения используется кнопка энкодера элевации (или кнопка mode для варианта без энкодера элевации). Список настроек: * ''AZ 360 imp count'' - количество импульсов на оборот антенны. * ''AZ overlap pos'' - начало overlap зоны. Заход в эту зону учитывает положение провода. * ''AZ overlap size'' - размер overlap зоны. Ограничивает движение для сохранности провода. * ''AZ Parking'' - азимут парковки. * ''COM port echo'' - эхо RS232 (возвращает полученные символы, для работы с терминальной программой). * ''AZ encoder int'' - интеллектуальный режим энкодера азимута. При быстром вращении энкодера увеличивается скорость изменения значения) * ''Elevation'' - поддержка элевации. **При выключенном значении следующие настройки не будут отображаться.** * ''EL encoder int'' - интеллектуальный режим энкодера элевации. При быстром вращении энкодера увеличивается скорость изменения значения) * ''EL 180 imp count'' - количество импульсов при повороте на 180 градусов. * ''EL start'' - минимальное значение элевации. * ''EL end'' - максимальное значение элевации. * ''EL Parking'' - значение элевации для парковки. ===== Интерфейс пользователя ===== ==== Классический интерфейс ==== Классический интерфейс с оригинальной прошивки сохранен. Так как у меня есть только фотографии контроллера поворотного устройства с поддержкой управления элевацией, то возможны некоторые отклонения от оригинала. ==== Обновленный интерфейс ==== Обновленный интерфейс отображает информацию в более удобном виде и поддерживает сообщения об ошибках. Список ошибок следующий: * Несанционированное движение (наличие импульсов при отключенном двигателе). * Авария двигателя (отсутствие импульсов при включенном двигателе). * Повреждение EEPROM. ===== Замена родной прошивки ===== Экземпляр контроллера поворотного устройства, используемого на коллективной радиостанции RK3MXT, реализован на микроконтроллере AT89S52. Однако, судя по размеру считанной прошивки и схеме устройства, взятой с сайта [[https://rt3f.jimdofree.com/%D1%82%D0%B5%D1%85%D0%BD%D0%B8%D0%BA%D0%B0/%D0%B0%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D1%83%D1%80%D0%B0-%D0%BD%D0%B0-%D1%80%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D1%85-%D0%BC%D0%B5%D1%81%D1%82%D0%B0%D1%85/%D0%BF%D0%BE%D0%B2%D0%BE%D1%80%D0%BE%D1%82%D0%BD%D0%BE%D0%B5-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE-r85-1/|RT3F]], встречаются варианты, построенные на AT89C51. Эти микроконтроллеры полностью совместимы друг с другом, хоть и имеют отличия. * AT89C51 является классическим вариантом. 128 Байт ОЗУ, 4 КБ FLASH. * AT89C52 имеет увеличенный в два раза объем FLASH и RAM. * AT89S52 в отличии от предыдущих может прошиваться через последовательный режим. Они в большом количестве продаются на AliExpress по цене в 1 доллар. В данный момент прошивка не помещается в AT89C51, однако это планируется исправить. ===== Бонус ===== Так как во время разработки требуется часто прошивать микроконтроллер и при этом частично блокировать работу коллективной радиостанции, разработка начиналась на совершенно другом аппаратном обеспечении. Использовалась отладочная плата Pinboard II с микроконтроллером ATMega16. Несмотря на то, что у чипов AT89S52 и ATMega16 один производитель, архитектура у них разная и используются разные компиляторы. Но это не проблема и код написан так, чтобы собирался под оба этих чипа одновременно. Все части кода, взаимодействующие с железом, вынесены в отдельные файлы. Теоретически можно портировать прошивку и под что-нибудь другое, вроде PIC или же MSP430.