Блин, с каждым новым постом на хабре про arduino, все больше и больше хочется его приобрести)) Правда все же остается чувство что arduino — это читинг, потому что что-то за тебя уже сделали)))
Честно говоря, у копался с атмегой в чистом виде на макетках, это для тех кто любит больше схемотехнику в чистом виде. Arduino просто дает возможность не углубляться в дебри даташита контроллера. Для макетирования и отработки базовых вещей быстро и удобно создана Arduino, за это она мне и нравится.
Разработка конечного устройства, это естественно надо делать с нуля и по честному для конкретного случая.
А вы на ибэй заказываете или где то напрямую? Очень заинетересован найти магазин подешевле, а на ебае не особо разгонишся — погоришь на доставке. Я вот b2cqshop.com/ заказывал
А мне вот уже не хочется, — уже жду вот такой вот как раз акселерометр с вагоном разных сенсоров и кучей другого интересного электронного хлама — заказал где то недельку назад
Аж дух захватывает, извините, не сдержался, чтобы не порадоватся публично и неприлично :)
Гиростабилизацию на следующей неделе хотим попробовать если придут ещё рычаги (зафиксировать степени свободы платформы), чтобы платформа держала сама горизонт в пределах отклонения до максимального угла.
На фотографии у вас платформа подключена на PWM 0, 1, 2. Так как у вас в скетче используется терминал, то я рекомендую вам переключить платформу на PWM 2,3,4. Во избежание помех и пробоя FT232RL
На самом деле тут можно сделать драйвер, который будет виртуальным джойстиком, но информацию будет брать из COM порта, а самый простой способ просто читать COM порт и управлять объектом в программе. Если интересно могу и такое для примера описать.
В тестовой программе никак, а в управлении платформой используется низкочастотный фильтр из википедии (http://en.wikipedia.org/wiki/Low-pass_filter), там есть пример программной реализации. Плюс у меня на сервы потом изменяется шкала, поэтому 140 приводится к 45 градусам поворота сервы, и часть шума за счет этого сглатывается.
Тоже скоро предстоит заняться связкой акселерометр + микропроцессор, правда безо всяких ардуин. И вот потихоньку назревает вопрос — как заставить процессор выходить из режима сна (подача «1» на одну из ног, в коде прописать какую) когда акселерометр меняет свое положение?
вообще зависит все от какого движеня должен просыпаться контроллер. А так надо чтобы на шум он был не чувствителен, а то будет просыпаться от шума постоянно…
Если акселерометр с аналоговым выходом (как здесь), то это сложно. Советую присмотреться к цифровым акселерометрам, вроде ADXL312 (как пример, взял первый попавшийся). У них есть выходы прерываний, и можно настроить порог ускорения, при превышении которого будет выдан сигнал прерывания, который и разбудит контроллер.
Да по I2C будет намного удобнее работать с ним, я на шесть степеней хочу поискать 6DOF акселерометр недорогой. Кстати цифровые акселерометры дороже, но сами фильтруют и компенсируют, хоть этот заявлен тоже с компенсацией и фильтрацией, но заметно это слабовато
Пример практического применения — у одного моего коллеги есть «дом на колёсах» и одна из проблем — выставить автомобиль абсолютно горизонтально, чтобы было комфортно спать. Он как раз использует ардуино в связке с примерно таким же датчиком. А показания выведены на экран компьютера («Car PC»), встроенного в переднюю панель.
А кто-нибудь знает, в чем разница между акселерометрами MMA7260 и MMA7361. Про последний пишут, что он пришел на замену первому, но почему-то цена на первый выше.
У него как минимум два режима чувствительности 1,5g и 6g, что не очень хорошо, потому что у меня например отличные результаты получились на 4g. Новым у него было стало определение свободного падения 0g. И ещё мне каежтся в нет нет температурной компенсации… Поэтому он и дешевле своего старшего собрата
Вроде разобрался. Оказывается, на MMA7260 аж четыре режима чуствительности 1.5g, 2g, 4g, 6g.
Температурная компенсация есть в обоих. В MMA7361 есть еще и self test. Разница есть в схеме подключения. В MMA7260 нужен RC фильтр на выходы xyz, а в MMA7361 нужны только конденсаторы.
Получается что горизонт «запоминается», и далее идёт коррекция положения платформы в зависимости от показаний датчика.
Имеет ли место «дрейф» горизонта при этом? Температурный или из-за погрешности вычислений?
в моем случае запоминается горизонт и дальше снимается отколнение от горизонта. В датчике предусмотрена температурная коррекция, так же есть и фильтры простые.
Вообще горизон сам по себе шумит сильно, надо обязательно его ещё раз фильтровать
+-5 будет погрешность измерений в максимальной чувствительности, у меня программный фильтр стоит при альфе = 0.14, в принципе такая погрешность меня устраивает на максимуме, на минимум чувствительности будет вообще отлично, нотогда надо чтобы тебя хорошо трясло )
А что с нулем за такие пляски, с поправками, а на бок повернуть что будет? (Вопрос в плане — это у вас прям данные уже с вычетом того что он в состоянии покоя показывает -1g по оси z ?)
Погеморней с ацп… сам взял для экспериментов вначале аналоговый аксель в паре с гиро, потом поменял на цифровой, для новых экспериментов хочу подобное goo.gl/WQgSz
ну что идеальны- да, я просто о том что вектор ускорения для z (в отличии от x, у) это не 0 а -1g уже в состоянии покоя. его ноль (когда падать будет) будет где-то в районе 0.87 * 2 = 1.74 ~ 355ед
ну и потом всякая байда получается считаться будет в относительно правильных единицах
x = analogRead(A0) — 355;
y = analogRead(A1) — 380;
z = analogRead(A2) — 355;
так, тогда надо будет парочку BSS138 заказать на платане, а то хочется как придет 6DOF поиграться, а на 9DOF я пожмотился, так и не понял, что бы мне дал полезного магнетометр
Значит если понадоибтся прикручу отдельно, все равно у меня сейчас задача прямая, я сам задаю все движения по осям, и могу посмотреть как будет себя вести датчик или наоборот.
Ловим горизонт с Arduino