November 2nd, 2011

Arduino + MMA7260 = Автогоризонт для самолётика

Засел тут на одной очень нужной мелочи, дабы отвлечь мозги решил с недавно купленным акселерометром поиграться.

Те кто видел недавно снятые видеоролики с борта самолёта, стопудово испытывали приступы тошноты из-за дикого расколбаса картинки. При наблюдении с земли трудно самолёт удержать ровно, особенно при сильном ветре. Так что нужно что-нибудь, автоматически удерживающее самолёт ровно. Вроде бы такая штука называется "автогоризонт", но у меня её нету. Но зато есть аксель и валяется лишняя Ардуина (которая Nano). Единственная из подаренного SysCat, чему ещё не нашлось применения. А, не, вру. Ещё экранчик есть, его я тож пока нигде не задействовал.

Arduino Nano хороша тем что она очень нано. В смысле, маленькая по габаритам. Так что на самолёте место для неё всегда найдётся.

Floater-Jet решил пока не трогать, а поэкспериментировать на подаренном Дядей Васей летающем крыле конструкции "Вжик". "Вжик" сейчас слегка в полуубитом состоянии, так что как раз для экспериментов сойдёт.

Принцип простой - подключить акселерометр к ардуине и заставить её постоянно считывать значения осей X и Y, ответственных за крен и тангаж. После считывания значений (в случае ухода из нормы) - выдавать на рулевые сервы компенсирующее значение. Чтоб крыло вернулось в плоскость горизонта.

Проблем со считыванием осей не было, но у акселя довольно сильная погрешность, значения скачут как блохи в неприлично большом диапазоне. Соответственно, рули колбасятся нипадецки. Тут на помощь пришёл Low-pass фильтр. И в результате простейшей обработки простейшим вариантом этого фильтра стало всё отлично - показания акселя сглаживаются и рули ведут себя пристойно.

Результат см. на видео.
Collapse )

Заметка закросспостена с блога www.g0l.ru