Солнечные датчики на спутниках выполняют роль датчиков ориентации, определяя пространственное положение спутника относительно Солнца. Очень часто они используются для грубой ориентации панелей солнечных батарей спутника на Солнце. Следует заметить, что полностью определить ориентацию спутника только по показаниям солнечных датчиков невозможно – всегда останется неопределенность с углом поворота аппарата вокруг направления «спутник-Солнце».
Для получения сырых данных измерений можно воспользоваться функцией (на языке С):
int sunsensor_request_raw(uint16_t num, uint16_t *pRAW_data1, uint16_t *pRAW_data2);
Датчик возвращает показания с двух сенсоров осматривающих левую и правую полусферы соответственно. При засветке одного из сенсоров по уровню освещенности можно оценить угол наведения на Солнце. При засветке двух датчиков более правильным подходом будет использование отношения уровней освещенности на обоих сенсорах.
Вычисление конкретных зависимостей угла от уровней освещенности называется калибровкой датчика под различные условия. Тем не менее даже без калибровки датчики подобной конструкции могут быть использованы для наведения на солнце путем анализа взаимной освещенности правой и левой полусфер датчика.
Следует обратить внимание, что точность установки самих сенсоров внутри корпусов солнечных датчиков не идеальна – так оно и бывает в реальной жизни, делая каждый датчик по-своему уникальным. Это связано с неточностью изготовления корпусов относительно требуемых размеров, погрешностями установки плат электроники внутри корпусов, неидеальностью самих сенсоров (все они немного отличаются друг от друга).
Большинство подобных погрешностей остается неизменными в течение срока эксплуатации, хотя бывают и погрешности, сильно зависящие от внешних факторов (например, температуры). В нашем случае полагаем, что погрешности измерений каждого из датчиков неизменны во времени, несильно зависят от температуры, и это дает возможность выполнить их однократную калибровку перед началом использования.
Пример кода проверки солнечных датчиков на языке С
#include "libschsat.h" /* ** Lab 4: get a raw data from a sun sensor */ void control(void) { int i; const int num = 1; /* sun sensor #1 */ printf("Enable sensor #%d\n", num); sun_sensor_turn_on(num); Sleep(1); printf("Get RAW data from sun sensor #%d\n", num); for (i = 0; i < 10; i++) { uint16_t value1; uint16_t value2; if (LSS_OK == sun_sensor_request_raw(num, &value1, &value2)) { printf("%d: raw=%d ; %d\n", i, value1, value2); } else { puts("Fail!"); } Sleep(1); } printf("Disable sensor #%d\n", num); sun_sensor_turn_off(num); }
Пример кода проверки солнечного датчика №1 на языке Python
# Get raw data from sun sensor №1 def control(): # Основная функция программы, в которой нужно вызывать остальные функции sun_result = [0,0,0] # Инициализируем sun_result num = 1 print "Enable sun sensor №", num sun_sensor_turn_on(num) sleep(1) print "Get RAW data from sun sensor" for i in range(10): sun_result = sun_sensor_request_raw(num) if not sun_result[0]: # если датчик вернул сообщение об ошибке, print "state:", sun_result[0], "raw =", sun_result[1], sun_result[2] elif sun_result[0] == 1: print "Fail because of access error, check the connection" elif sun_result[0] == 2: print "Fail because of interface error, check your code" sleep(1) print "Disable sun sensor №", num sun_sensor_turn_off(num)
Пример кода проверки четырех солнечных датчиков на языке Python
def control(): # Основная функция программы, в которой нужно вызывать остальные функции sun_result = [0,0,0] # Инициализируем sun_result sun_sensor_num = 0 # Инициализируем переменную для номера солнечного датчика #Цикл для включения, опроса и выключения четырех солнечных датчиков по очереди: for sun_sensor_num in range (1,5): print "Enable sun sensor №", sun_sensor_num sun_sensor_turn_on(sun_sensor_num) # Включаем солнечный датчик sleep(1) # Ждем включения 1 секунду for i in range(10): #Считываем показания 10 раз for sun_sensor_num in range (1,5): print "Get RAW data from sun sensor №", sun_sensor_num sun_result = sun_sensor_request_raw(sun_sensor_num) if not sun_result[0]: # если датчик не вернул сообщение об ошибке, print "state:", sun_result[0], "raw =", sun_result[1], sun_result[2] elif sun_result[0] == 1: # если датчик вернул сообщение об ошибке 1 print "Fail because of access error, check the connection" elif sun_result[0] == 2: # если датчик вернул сообщение об ошибке 2 print "Fail because of interface error, check your code" sleep(1) # Показания считываются раз в секунду for sun_sensor_num in range (1,5): print "Disable sun sensor №", sun_sensor_num sun_sensor_turn_off(sun_sensor_num) # Выключаем солнечный датчик
Описание __старой__ версии датчика.
ПОС предназначен для измерения углов между оптической осью прибора и проекциями вектора направления на Солнце на плоскости системы координат прибора. В качестве примера рассмотрим ПОС разработки НПО “Полет”, состоящим из двух идентичных оптических блоков (ОБ) для формирования требуемого поля обзора. Конструктивно ОБ выполнен в виде икосаэдра, на гранях которого размещены фотопреобразователи, преобразующие лучистую энергию Солнца в однополярное напряжение постоянного тока. См. рисунок.
Прибор ориентации на Солнце (поле зрения – сферическое)
Каждый освещенный фотопреобразователь оптического блока преобразует лучистую энергию Солнца в однополярное напряжение постоянного тока, величина которого монотонно возрастает или уменьшается соответственно с увеличением или уменьшением угла падения солнечных лучей на поверхность чувствительного элемента. Под углом падения солнечных лучей понимается угол между вектором направления на Солнце и поверхностью чувствительного элемента.
Компенсация температурной погрешности фотопреобразователя осуществляется по показаниям температурного датчика, расположенного непосредственно в корпусе ОБ. Питание температурного датчика осуествляется из БУ СОиС.
Преобразованные сигналы с фотопреобразователй и с температурного датчика каждого оптического блока транслируются в БВС, где по специальному алгоритму рассчитываются углы между оптической осью прибора и проекциями вектора направления на Солнце на плоскости системы координат прибора.
Для ориентации КА по Солнцу ФГУП НПП “Геофизика-Космос” продолжает разработку ПОС как с механическим сканированием, так и статических. Разработаны или находятся в стадии завершения разработки три типа: 331К, 333К и 334К. Основные технические характеристики данных приборов и ранее разработанного ПОС 251К3 (выпускается в настоящее время) представлены в таблице.
Тип СД | Поле обзора, град | Предельная погрешность, угл. мин | Масса, кг | Резерв | Потребляемая мощность, Вт |
331К | 182*92 | 1,0 | 1,6 | Нет | 4,5 |
333К | 182*92 | 1,0 | 1,75 | Нет | 5,0 |
334К | 182*90 | 0,8 | Есть | 2,5 | |
251К3 | 181*92 | 3,15 | Нет | 10,5 |
ПОС 331К и 333К – высокоточные щелевые приборы с механическим сканированием. ПОС 334К – статический щелевой прибор со средней точностью и резервированием. Срок службы данных приборов определяется ресурсом их элементной базы и для различных вариантов комплектаций составляет от 7 до 15 лет. В данной организации ведутся разработки высокоточных ПОС с электронным сканированием как на линейных ПЗС, так и на матричных приемниках. Однако, по мнению специалистов данной организации, по совокупности характеристик “поле обзора – точность – масса”, приборы этого типа уступают ПОС с механическим сканированием.
Основные характеристики солнечных датчиков зарубежного производства представлены в таблице.
Параметр | SSTL(Англия) | Jena-Optronic GmbH(Германия) |
Количество | 4 прибора по каждой оси | 1 прибор по каждой оси |
Тип | Двухкоординатный, щелевой, фотоэлементы | Двухкоординатный |
Поле обзора, град. | ±50 | ±64 |
Точность ( ), град. | 0,2 | 0,18 |
Мощность, Вт | <0,1 | 0,2 |
Масса, кг | – | 0,62 |
Внешний вид ПОС зарубежного производства показан на рисунках.
ПОС Jena-Optronic GmbH(Германия) ПОС для КА TechSat-21(США)