Для чего нужен ОрбиКрафт
Подсистемы конструктора
Инструкции по работе с ОрбиКрафт
Уроки
Лабораторная оснастка
Знакомство с Arduino
Полезная нагрузка на базе Arduino
Обратная связь
Новости
Для чего нужен ОрбиКрафт
Подсистемы конструктора
Инструкции по работе с ОрбиКрафт
Уроки
Лабораторная оснастка
Знакомство с Arduino
Полезная нагрузка на базе Arduino
Обратная связь
Новости
Это старая версия документа!
Датчик угловой скорости
Виртуальное потребление - 40мА
Датчик угловой скорости (ДУС) позволяет измерять текущие угловые скорости аппарата по трем осям. В зависимости от места установки датчика одно из этих показаний, а именно - скорость вращения вокруг нити - будет критически важным для управления аппаратом, а два других помогут оценить колебания его центра масс относительно местной вертикали, что также может быть использовано в управлении.
Пример кода проверки датчика угловой скорости на языке C
#include "libschsat.h" /* ** Lab 3: get a raw data from a hyro */ void control(void) { int i; const int num = 1; /* hyro #1 */ printf("Enable hyro #%d\n", num); hyro_turn_on(num); printf("Get RAW data from hyro #%d\n", num); for (i = 0; i < 10; i++) { int16_t x, y, z; if (LSS_OK == hyro_request_raw(num, &x, &y, &z)) { printf("%d: x=%d y=%d z=%d\n", i, x, y, z); } else { puts("Fail!"); } Sleep(1); } printf("Disable hyro #%d\n", num); hyro_turn_off(num); }
Пример кода проверки датчика угловой скорости на языке Python
def control(): # Основная функция программы, в которой нужно вызывать остальные функции hyro_result = [0,0,0,0] # Инициализируем hyro_result num = 1 # Номер ДУС print "Enable angular velocity sensor №", num hyro_turn_on(num) # Включаем ДУС sleep(1) # Ждем включения 1 секунду print "Get RAW data from angular velocity sensor" for i in range(10): #Считываем показания 10 раз hyro_result = hyro_request_raw(num) #записываем ответ функции hyro_request_raw в переменную hyro_result if not hyro_result[0]: # если датчик не вернул сообщение об ошибке, print "state:", hyro_result[0], "x_raw =", hyro_result[1], "y_raw =", hyro_result[2], "z_raw =", hyro_result[3] # Выводим данные elif hyro_result[0] == 1: # если датчик вернул сообщение об ошибке 1 print "Fail because of access error, check the connection" elif hyro_result[0] == 2: # если датчик вернул сообщение об ошибке 2 print "Fail because of interface error, check your code" sleep(1) # Показания считываются раз в секунду print "Disable angular velocity sensor №", num hyro_turn_off(num) # Выключаем ДУС