Перейти к основному содержимому

Солнечные датчики

Адрес модулей солнечный датчиков 0х10, 0х11, 0х12 и 0х13, что соответствует 16, 17, 18 и 19 в десятичном формате (рисунок 1):

Адрес модулей солнечных датчиков

Рисунок 1. Адрес модулей солнечных датчиков

Все модули солнечного датчика имеют одинаковый набор команд и ответов (рисунок 2):

Набор команд для солнечных датчиков

Рисунок 2. Набор команд для солнечных датчиков

Некоторые команды аналогичны командам других модулей, например:

  • cgf_get_dest_id - установка адреса получателя пакетов;
  • cgf_regular_telemerty_on - установка периода отправки пакетов;
  • request_version - запрос версии прошивки модуля.

Однако состав возвращаемых данных будет другим: будут возвращены данные об угле направления на источник света ~10-B21 sun_dir_x, ~10-B21 sun_dir_y, ~10-B21 sun_dir_z.

Задайте период 10-A63 cgf_regular_telemerty_on, адрес 10-A61 cgf_set_dest_id, установите галочки ~10-B21 sun_dir_x, ~10-B21 sun_dir_z (рисунок 3):

Выбор возвращаемых пакетов с данными

Рисунок 3. Выбор возвращаемых пакетов с данными

В поле History будут отображаться принятые пакеты (рисунок 4):

Просмотр принятых пакетов

Рисунок 4. Просмотр принятых пакетов

Перейдите в поле графиков во вкладку Sun Sensor (рисунок 5):

Вкладка Sun Sensor

Рисунок 5. Вкладка Sun Sensor

Вы увидите полученные raw-данные. На графике видны моменты увеличения яркости источника света (рисунок 6):

Полученные raw-данные

Рисунок 6. Полученные raw-данные

Посветите на солнечный датчик с одной стороны (около 45° к нормали), а затем с другой стороны (около -45° к нормали). Полученный график будет выглядеть вот так (рисунок 7):

Изменение графика солнечного датчика

Рисунок 7. Изменение графика солнечного датчика

Надо отметить, что ПО Хьюстон не предназначено для визуализации конечных данных, и показывает графики в максимально «сыром» (raw) виде. В данном случае показаны относительные величины проекций вектора на x и z (рисунок 8):

Проекции вектора на x и z

Рисунок 8. Проекции вектора на x и z

Для вычисления значений угла в градусах следует обрабатывать логи, которые сохраняются автоматически.

Рассмотрим пример полученного пакета от одного из солнечных датчиков. Для этого в окне History выберем нужный нам пакет телеметрии по одной из осей x, y или z (рисунок 9):

Пример выбора одного из пакетов солнечных датчиков

Рисунок 9. Пример выбора одного из пакетов солнечных датчиков

По каждой оси мы можем в первой строке состояния увидеть проекцию вектора на эту ось (рисунок 10):

Проекция вектора на ось x

Проекция вектора на ось y

Проекция вектора на ось z

Рисунок 10. Пример проекции векторов на каждую из осей

Для удобства все значения умножаются на 1 000 000 000 во избежание работы с дробными числами.

В отдельных случаях проекция вектора на ось может быть равна 2 000 000 000. Эти данные означают, что яркость источника света ниже преднастроенного значения (как правило, 800) яркости солнечных датчиков (рисунок 11):

Проекция вектора на ось x с освещенностью ниже порогового уровня

Проекция вектора на ось y с освещенностью ниже порогового уровня

Проекция вектора на ось z с освещенностью ниже порогового уровня

Рисунок 11. Значение проекции векторов при недостатке освещенности

В таком случае необходимо либо передвинуть источник освещения (иммитатор Солнца) ближе к конструктору, чтобы превысить порог яркости, либо командно понизить этот порог.

Настройка порогового напряжения яркости

1) Необходимо настроить режим телеметрии, передаваемой по каналу CAN, с помощью команды 00-25 set_telemetry_mode (00 - идентификатор солнечного датчика, в примере используется первый солнечный датчик с идентификатором 10). При отправке команды следует установить флаг на adc_comepnsated (рисунок 13):

Отправка команды 00-25 set_telemetry_mode

Рисунок 12. Отправка команды 00-25 set_telemetry_mode

2) После настройки режима телеметрии мы будем получать ADC-данные по каналам детектора X1, X2, Y1 и Y2 (рисунок 13):

Пакеты ADC-данных по каналам детектора X1, X2, Y1 и Y2

Рисунок 13. Пакеты ADC-данных по каналам детектора X1, X2, Y1 и Y2

Представьте ось, проходящую через центр солнечного датчика. Вам нужно отклонять источник света от этой оси на ~60° в разные стороны (вправо-влево, вверх-вниз) и измерять значения ADC (рисунок 14). Все полученные значения необходимо суммировать. Так вы получите пороговое значение яркости.

Пример полученных ADC-данных по каналу детектора X1

Рисунок 14. Пример полученных ADC-данных по каналу детектора X1

3) Для настройки порогового напряжения яркости воспользуйтесь командой 00-A67 set_brightness_threshold и внесите рассчитанное значение (рисунок 15):

Настройка порогового напряжения яркости

Рисунок 15. Настройка порогового напряжения яркости

подсказка

В случае если вам после сброса флага adc_comepnsated вам перестали поступать данные солнечных датчиков, воспользуйтесь командой 00-AAF0 reset_software - перезагрузка устройства.