Не считывать сигнал (не обрабатывать) на время работы сервоприводов? Или хотя бы только на это время вводить интеграцию по времени. Иначе наверное только по внешним реперам (по звёздам :)).
Вид для печати
Поддерживаю edw123 и можно еще
установить чувствительность на минимум.
Не получится. Сервы мощные, но небыстрые - обстановка может измениться до того как они отработают "задание" до конца.
Должна сохраниться возможность отменить текущее действие и заняться обработкой новой вводной.
В этом видео, как я понял, акселерометр стоит на основании - ему работа сервоприводов не мешает.
Попробую загрубить показания датчика. Если не получится, придется перейти на пару энкодеров - по одному на каждый угол :(
Chip, для управления точностью, входы GS1, GS2 можно подключать к цифровым выходам напрямую или нужен делитель?
По моему можно без резистора подключить.
Chip, поменяй описание в магазине - ты реально торгуешь MMA7361, он несколько отличается от 7260.
Вот datasheet на MMA7361: http://www.freescale.com/files/senso...t/MMA7361L.pdf
В частности, у этой модели нет входов GS1 и GS2, есть только вход GS, который допускает два уровня регулировки:
0 - 1,5g
1 - 6g.
Никаких промежуточных значений.
Зато есть выход G0, который позволяет детектировать момент, когда по всем осям - 0. Детектор свободного падения, короче.
Режим Sleep используется для экономии электроэнергии - при пропадании напряжения на контакте SL - акселерометр перестает выдавать выходные значения. Если производитель не врет, в этом режиме девайс потребляет 3 мкА вместо 400 в рабочем режиме.
Вот тут я что-то забеспокоился - напряжение, которым оперирует чип - 2,2 - 3,6 вольта. На плате есть нога для питания от 5-ти вольт, но она заведена на стабилизатор. Не стал испытывать судьбу - соединил GS и выход стабилизатора (3,3В) - ровно также как и ногу SL из схемы первого поста.
В итоге лучше не стало, на работу сервоприводов платформа стала реалировать чуть спокойнее, но "горизонт" практически потеряла.
Попробую проусреднять значения, может это поможет устранить дребезг вокруг нуля.
Можно еще попробовать отфильтровать выходы X,Y,Z повесив на них и к GND дополнительные конденсаторы.
Еще как вариант цифровая фильтрация может тебе помочь. Принцип ее такой? нужно принимать значения с входов с небольшой паузой. Например по три выборки для каждого входа, потом берешь выборку из трех значений и сравниваешь между собой и если эти значения примерно равны то их можно усреднить.
Я попробовал усреднять по 50-ти отсчетам. Стало гораздо лучше. Однако появились интересные эффекты резонанса, когда платформа по крену начинает качаться как маятник. Ну и осталась зависимость от движения предметов на самой платформы.
В итоге я решил отказаться от акселерометра, т.к. в реальности мне нужны только углы крена и тангажа и полная нечувствительность к паразитным ускорениям.
Chip, можно ли использовать однооборотный переменный резистор в качестве датчика угла? Например такой: http://www.chipdip.ru/product/r-24n1-a1k.aspx
Какой лучше взять номинал? Побольше ~10 кОм или наоборот, ~100 Ом?
И как лучше включать - подать на переменник 5 вольт, а контакт переменной части завести на аналоговый вход?
Это не резонанс а помеха , скорее всего 50Гц
Можешь скачать скетч осциллографа и посмотреть что за помеха у тебя идет с датчика
Резистор лучше использовать автомобильный от акселератора например ВАЗ-овский
Я тут набрел на http://www.pololu.com/catalog/product/1265/resources
Приколола сборка, все в одном. Есть примеры для ардуино.
L3G4200D 3-осевой гироскоп и LSM303DLM 3-осевой акселерометр и 3-осевой магнитометр на маленькой платке. Выход I²C.
Думаю да, ведь работает же простой механический в машине.
________
Получил сегодня платки с ММА7361 и ММА7455, пока попробовал ММА7361 и заметил, что при питании по ЮСБ дергается сильнее, чем при отдельных +5 вольт. Повесил параллельно Uref 10 мкф и стало еще лучше, но все равно значения гуляют на 3-4 единицы. Возможно это и наводка, но она ведь повсюду.
Вот подключу ММА7455 и тогда про наводки на аналоговые каналы можно забыть.
Надо уже завязывать :), семья ругается. Всех с наступающим праздником.
Попробовал ММА7455, аналогично значения пляшут 2-3 единицы. Можно успокоиться и принимать меры по цифровой фильтрации.
подскажите а для определения угла наклона можно взять аксельлерометр на чипе ADXL335 http://www.ebay.com/itm/ADXL335-3-Ax...item41653f692d
он не лучше будет?
Можно, но лучше скорее всего не будет
Вообщем у меня такая история:Прикупил MMA7361 подключил его к nano v7 залил скетч из первого поста, всё отлично работает!Решил поиграться,отобразить значения на lcd 20x4,показания x,y вроде в норме(возвращаются в первоначальное),а вот z скачет 0228,-128,3128,1208,-108,-308.
вот код который использую:
int xpin=0;Код:int ypin=1;
int zpin=2;
int x, y, z;
int x_cal=342;
int y_cal=350; //калибровка датчика
int z_cal=445;
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
lcd.begin(20, 4);
}
void loop()
{
x=analogRead(xpin);
y=analogRead(ypin); // прочитать значение осей
z=analogRead(zpin);
lcd.setCursor(0, 0);
lcd.print("X=");
lcd.print(x-x_cal);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("y=");
lcd.print(y-y_cal);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print("z=");
lcd.print(z-z_cal);
delay(500);
}
А если чувствительность уменьшить?
Рад бы уменьшить,да вот не знаю как!)У MMA7361 есть ноги с которыми я пока разобраться не могу((( g-select,Self Test,0g-Detect
из даташита я понял,что для чувствительности мне как раз "g-select" и нужен,но он работает всего в двух режимах 1,5g(0) и 6g(1),но как эти цифры залить в него(ММА7361)????
Помогите разобраться!Заранее благодарен.
Выбор чувствительность производится путем подачи на пин g-selec логического уровня
0-1.5g или 1-6g
1 или 0 я должен подать механически или програмно?
У меня есть подозрение,что неисправен датчик:когда изменяю положение по"x" значения меняются и по"z"
Можно управлять как механически так и с выхода Ардуино
Неисправность конечно же не исключаю
Огромное спасибо!Буду колдовать,а не могли бы Вы показать пример скетча для выхода с Адуинки?
Код:void setup()
{
pinMode(10, OUTPUT); // устанавливает режим работы - выход
digitalWrite(10, HIGH); // включает лог. единицу на выходе
}
void loop(){}
Подскажите пожалуйста. С какой скоростью можно считывать результаты с акселерометра mm7260 с помощью arduino mini pro (16 МГцб 5 В) и записывать на micro Sd карту. У меня получается 10 на 1 секунду. Но мне нужно чаще, раз 30 в секунду. Можно это реализовать?
можно и 8000 раз в секунду считывать, ЦАП вполне справится