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

Измеритель вибраций

Оценка уровня вибраций по колебаниям показаний акселерометра.

DMC.33 · Датчики · ATmega328P

Задача

Оценить уровень вибраций как размах/дисперсию показаний акселерометра за окно.

Алгоритм

Собрать N выборок, найти max-min (размах) по оси; большой размах = сильные вибрации, индикация светодиодом.

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

⇩ Скачать 33-vibration-level.c

#ifndef F_CPU
#define F_CPU 16000000UL
#endif

#include <avr/io.h>
#include <util/delay.h>
int main(void){
  DDRB|=(1<<PB5);
  volatile int16_t sample=0;              // подставить реальное чтение акс.
  for(;;){
    int16_t mn=32767, mx=-32768;
    for(uint8_t i=0;i<32;i++){ int16_t s=sample; if(s<mn)mn=s; if(s>mx)mx=s; _delay_ms(2); }
    int16_t span=mx-mn;
    if(span>2000) PORTB|=(1<<PB5); else PORTB&=~(1<<PB5); // порог вибраций
    _delay_ms(50);
  }
}

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

Пояснения

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

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

Диагностика вибраций (Blackbox)