В статье рассказывается об устройстве, которое должно помочь обучению. Разумеется проект реализован на ардуино.
Сразу скажу, начинать учится летать нужно в симуляторе. Тем более, есть открытые проекты.
Вот только опыт управления реальным самолетом симулятор не заменит. Описываемый проект служит облегчению процесса обучения.
Устройство состоит из Arduino Pro Mini ATmega328P (5V, 16MHz)
На самом деле подойдет любая ардуино с контроллером ATmega328 или ATmega168. Просто Arduino Pro Mini самая маленькая и легкая. Конечно лучше сделать специальную платку, но для начала и Pro Mini сгодится.
К ардуино подключаются приемник от аппаратуры учителя, приемник от аппаратуры ученика, регулятор и сервоприводы самолета. Кто именно управляет самолетом зависит от положения тумблера на аппаратуре учителя. Думаю уже ясно, что аппаратура учителя и соответствующий ей приемник должны иметь минимум 5 каналов. Аппаратура ученика и его приемник могут быть и 4 канальными.
Скетч
Соединение компонентов описано в начале программы. Сама программа очень простая. Обработчик прерывания по внешнему сигналу INT0 измеряет длительность управляющего импульса на 5 канале приемника учителя. Если сигнал меньше 1500 микросекунд, то на выход передаются сигналы с аппаратуры учителя. Если сигнал больше 1500 микросекунд, то на выход передаются сигналы с аппаратуры ученика и управление самолетом переходит в его руки.
В заключении несколько важных замечаний. Это устройство предназначено для работы с приемниками выдающими управляющие сигналы длительностью от 1000 до 2000 микросекунд с частотой в 50 герц.
Возможно потребуется внешний BEC, так как тока выдаваемого стабилизатором ESC может не хватить на два приемника, ардуино и сервоприводы.
В реальных условиях устройство не проверялось. Был собран небольшой тестовый стендик. К выходам ардуино подключались сервоприводы HEXTRONIK HXT900. А вместо приемников использовались генераторы сигналов сделанные из ардуино нано.
Использование устройства предполагает соблюдение техники безопасности и разумных мер предосторожности. Автор проекта никакой ответственности ни за что не несет.
Есть еще один момент. При переключении управления с одного приемника на другой возможно изменение длительности отдельного управляющего импульса. Его длительность может оказаться меньше 1000 микросекунд или больше 2000 микросекунд. Сервоприводы достаточно медлительные устройства. Проблем быть не должно. Тем не менее эта особенность устройства может быть устранена. Только код придется писать уже на ассемблере.
Сразу скажу, начинать учится летать нужно в симуляторе. Тем более, есть открытые проекты.
Вот только опыт управления реальным самолетом симулятор не заменит. Описываемый проект служит облегчению процесса обучения.
Устройство состоит из Arduino Pro Mini ATmega328P (5V, 16MHz)
На самом деле подойдет любая ардуино с контроллером ATmega328 или ATmega168. Просто Arduino Pro Mini самая маленькая и легкая. Конечно лучше сделать специальную платку, но для начала и Pro Mini сгодится.
К ардуино подключаются приемник от аппаратуры учителя, приемник от аппаратуры ученика, регулятор и сервоприводы самолета. Кто именно управляет самолетом зависит от положения тумблера на аппаратуре учителя. Думаю уже ясно, что аппаратура учителя и соответствующий ей приемник должны иметь минимум 5 каналов. Аппаратура ученика и его приемник могут быть и 4 канальными.
Скетч
//////////////////////// // // Arduino // //////////////////////// // // Sketch: Trainer // // Arduino Receiver 1 // // D0 --- CH1 (AIL) // D1 --- CH2 (ELE) // D2 --- CH5 // D3 --- CH3 (THR) // D4 --- CH4 (RUD) // Arduino Receiver 2 // // A0 --- CH1 (AIL) // A1 --- CH2 (ELE) // A3 --- CH3 (THR) // A4 --- CH4 (RUD) // Arduino Airplane // // D8 --- AIL (CH1) // D9 --- ELE (CH2) // D11 --- THR (CH3) // D12 --- RUD (CH4) volatile unsigned char time = 0; void setup() { // Global disable interrupts cli(); // Port B initialization // - - PB5 PB4 PB3 PB2 PB1 PB0 DDRB = 0b00111111; PORTB = 0b00000000; // Port C initialization // - - PC5 PC4 PC3 PC2 PC1 PC0 DDRC = 0b00000000; PORTC = 0b00000000; // Port D initialization // PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 DDRD = 0b00000000; PORTD = 0b00000000; // External Interrupt initialization // – – – – ISC11 ISC10 ISC01 ISC00 EICRA = (1<<ISC00); // – – – – – – INT1 INT0 EIMSK = (1<<INT0); // – – – – – – INTF1 INTF0 EIFR = (1<<INTF0); // Timer/Counter 0 initialization TCNT0 = 0; // COM0A1 COM0A0 COM0B1 COM0B0 - - WGM01 WGM00 TCCR0A = 0; // FOC0A FOC0B - - WGM02 CS02 CS01 CS00 TCCR0B = 0; // - - - - - OCIE0B OCIE0A TOIE0 TIMSK0 = 0; // - - - - - OCF0B OCF0A TOV0 TIFR0 = 0; // Timer/Counter 2 initialization TCNT2 = 0; // COM2A1 COM2A0 COM2B1 COM2B0 - - WGM21 WGM20 TCCR2A = 0; // FOC2A FOC2B - - WGM22 CS22 CS21 CS20 TCCR2B = ((1<<CS22)|(1<<CS21)); // - - - - - OCIE2B OCIE2A TOIE2 TIMSK2 = 0; // - - - - - OCF2B OCF2A TOV2 TIFR2 = 0; // Global enable interrupts sei(); } void loop() { while (1) { if ( time < 94 ) { PORTB = PIND; } else { PORTB = PINC; } } } ISR(INT0_vect) { if ( (PIND & (1<<2)) == 0 ) { time = TCNT2; } else { TCNT2 = 0; } } // // End // ////////////////////////
Соединение компонентов описано в начале программы. Сама программа очень простая. Обработчик прерывания по внешнему сигналу INT0 измеряет длительность управляющего импульса на 5 канале приемника учителя. Если сигнал меньше 1500 микросекунд, то на выход передаются сигналы с аппаратуры учителя. Если сигнал больше 1500 микросекунд, то на выход передаются сигналы с аппаратуры ученика и управление самолетом переходит в его руки.
В заключении несколько важных замечаний. Это устройство предназначено для работы с приемниками выдающими управляющие сигналы длительностью от 1000 до 2000 микросекунд с частотой в 50 герц.
Возможно потребуется внешний BEC, так как тока выдаваемого стабилизатором ESC может не хватить на два приемника, ардуино и сервоприводы.
В реальных условиях устройство не проверялось. Был собран небольшой тестовый стендик. К выходам ардуино подключались сервоприводы HEXTRONIK HXT900. А вместо приемников использовались генераторы сигналов сделанные из ардуино нано.
Использование устройства предполагает соблюдение техники безопасности и разумных мер предосторожности. Автор проекта никакой ответственности ни за что не несет.
Есть еще один момент. При переключении управления с одного приемника на другой возможно изменение длительности отдельного управляющего импульса. Его длительность может оказаться меньше 1000 микросекунд или больше 2000 микросекунд. Сервоприводы достаточно медлительные устройства. Проблем быть не должно. Тем не менее эта особенность устройства может быть устранена. Только код придется писать уже на ассемблере.
Комментариев нет:
Отправить комментарий