AFON // радиотехник affonya@mail.ru
← Все проекты для дронов

Логика арминга

Безопасное взведение: газ в нуле плюс переключатель.

DMC.17 · Моторы и ESC · ATmega328P

Задача

Разрешать раскрутку моторов только при низком газе и включённом переключателе арминга.

Алгоритм

Читаются каналы газа и переключателя; armed=1 только если throttle<порога И switch>порога. Иначе моторы в стоп.

Исходный код (C, avr-gcc)

⇩ Скачать 17-arming-logic.c

#ifndef F_CPU
#define F_CPU 16000000UL
#endif

#include <avr/io.h>

uint8_t armed=0;
void update_arm(uint16_t throttle, uint16_t sw){
  if(sw>1700 && throttle<1050) armed=1;
  if(sw<1300) armed=0;              // выключатель снял арминг
}
uint16_t motor_out(uint16_t throttle){ return armed ? throttle : 1000; }

int main(void){
  DDRB|=(1<<PB5);
  volatile uint16_t th=1000, sw=1000;
  for(;;){
    update_arm(th, sw);
    if(armed) PORTB|=(1<<PB5); else PORTB&=~(1<<PB5);
    (void)motor_out(th);
  }
}

Сборка: avr-gcc -mmcu=atmega328p -DF_CPU=16000000UL -Os файл.c -o файл.elf

Пояснения

Разарминг при высоком газе запрещает случайный старт. Здесь каналы условны (входы), выход — разрешение.

Смотрите также

Режимы полёта и failsafe