мне тоже нравится! моей радости нет предела! сам бы я уже состариться бы успел пока разобрался как это работает. тем более я даже основ не знаю! как бы я придумал флаги выставлять?
а теперь надо поменять мигание лампочки на передачу показаний акселерометра и дальнейший вывод всего через один порт? или можно через процессинг получать последовательно результаты?
Спасибо тебе огромное за такой большущий скачок вперед к победе!
да дальше как хочешь. на что фантазии и умения хватит
вот через один порт нет
может как вариант подцепить к компу 3 ардуины, открыть 3 терминала, не обязательно ардуиновского, и потом просто собрать вместе данные
а у меня проблема. график в экселе 2013 не могу по данным построить. что то они там намудрили. хоть дополнительно вручную указывая данные все равно не рисует, только надписи. жаль. зря поставил
я сделал так для процессинга по идее он должен создавать два текстовых докуента и писать туда с разных портов и работает, только данные, бывает путаются, смещаются не по столбикам:
ты гораздо быстрее справляешься! я только разобрался что б работало при просмотре с ардуиновского терминала и в процессинге хоть что то делал. просто иначе то как запустить их одновременно?
Ударил маятником по лежащему на столе коробочке. что то на подобии затухающей синусоиды мы наблюдаем, но и плохая новость: акселерометр мереет не в том диапазоне! нужно больше искать ( или может быть это умеет и больше чеми 1,5г(
как видно -0,1; -0,05; -0,1 получаются случайным скачком напряжения в микроконтроллере или еще чем, шум, не несущий инфы, а ты знаешь как его убрать при построении графика в экселе например? мои варианты:
1) если вот эта дельта мала, то записывать в ячейку не измененное значение. (макросом к примеру)
2) наложить фильтр, который сам бы тосек (но я не знаю как это делать) и это более правильное мне кажется решение. линии тренда я не знаю.
они есть всегда и при любых измерениях. при любом положении акселерометров. не уверен что это именно.
а вот что получилсось если акселерометры жестко закрепить на одном бруске и ударить по нему сбоку маятником: тут я у второго графика отнял значение 0.05, т.е. опустил ниже, а то он как то был высоковат и поскольку они они начинают не одновременно то приходится накладывать влево-вправо двигая. но все по логике они должны совпадать, а не совсем (
я почитал! там фильтры калмана, композитные,но самая большая проблема в том что у меня уже есть измерения и переписывать код работы акселерометра что б пересчитать значенияне не представляется возможным потому что установка на каникулах заперта.
а можно как то уже готовые значения филтровать? или это чепуха будет? хотя мне и легкий подгон подойдет на сейчас
все пришлось с нуля начинать. акселерометр оказался неподходящим. взял MPU5060. добавил фото старт(когда маятник пролетает между ресивером и лампочкой - начинается работа программы). но пока что не работют эти акселерометры (может сгорели - жду два других).
единственный нерешенный вопрос остался с таймером. я купил кварцевый резонатор на 8 и 16 МГц и думал его использовать и еще есть таймеры NE555P. но я полагаю можно обойтись родным в ардуине который?
Нашел вот такой скетч:
volatile unsigned long start = 0; //переменная для хранения начального значения millis
volatile unsigned long stop = 0; //переменная для хранения полученного промежутка времени
volatile int once = 0; //переменная для игнорирования повторного нажатия кнопки
unsigned long prev_ms = 0; //переменная для создания отрезков, чтобы не использовать delay
volatile int state = LOW;
void setup() {
//нужно настроить порты на чтение, читаем как использовать кнопки, как настраивать порты.
pinMode(2, INPUT);
digitalWrite(2, HIGH);
pinMode(3, INPUT);
digitalWrite(3, HIGH);
attachInterrupt(0, begin, FALLING);
attachInterrupt(1, end, FALLING);
Serial.begin(9600);
}
void loop() {
if ((millis() - prev_ms) > 500) { //вывод данных каждые 500мс
prev_ms = millis();
Serial.println(stop);
}
}
void begin() {
if (once == 0) { //проверяем, нажималась ли уже кнопка старт
start = millis(); //получаем текущее значение millis
once = 1; //ставим метку "старт был нажат"
stop = 0; //обнуляем предыдущий замер, а можно и не обнулять :)
}
}
void end() {
if (once == 1) { //проверяем, нажималась ли кнопка старт
stop = millis() - start; //вычисляем промежуток
once = 0; //убираем метку
}
}
а пока для старых акселерометров вот поставил счетчик вермени и и фотостарт
/* данный код предназначен для ведущей ардуинки.
начальное положение: маятник закрывает свет при
начале его движения свет попадает на ЧЭ и программа начинает счет */
#include <Wire.h>
#include "MMA7660.h"
MMA7660 accelemeter;
int prer = 11;
int rec=0;
int led=12;
int disp=13;
int i=0;
float ax,ay,az;
unsigned long time;
void setup()
{
Serial.begin(115200);
accelemeter.init();
pinMode(prer, OUTPUT);
pinMode(led, OUTPUT);
pinMode(disp, OUTPUT);
}
void loop()
{
time = micros();
digitalWrite(led,HIGH);
if (analogRead(rec)>800)
{
digitalWrite(disp,HIGH);
while(i<400)
{
//digitalWrite(prer, HIGH);
delay(5);
//digitalWrite(prer, LOW);
accelemeter.getAcceleration(&ax,&ay,&az);
Serial.println(ax);
Serial.println(micros()-time);
delay(5);
i++;
}
}
else
{
digitalWrite(disp,LOW);
}
}
это поулчается для главной ардуины которая начинает ход измерений и задет прерывания для второй.
как думаешь, это четкий вариант? если сделано так, что вторая ждет через прерывания пока первая ей скажет - начинай! значит такой таймер можно оставить только на одной ардуине? и использовать его для горизонтальной оси как шкалы для обоих акселерометров.
Вопрос а почему не стал использовать подтягивающие резсторы? С помощью них стабильнее и точнее работает.
Тем более в большинстве схем управления 1 или 0 на логике всегда ставятся подтягивающие резисторы. А на полевых транзисторах получается четкость и стабильность как включения так и выключения.
День добрый. Ребята (я нуб в ардуине) я так понимаю что подключить гироскоп к ардуине нужно так - от датчика к ардуино SCL k SCL a SDA k SDA и общий GND а питание отдельно. Так? Боюсь спалить.
попробуй так
и так
а ты земли объеденил? или только с 13 пина на 2 подал?
сейчас попробую! я пробовал объеденив заземление и питание с главной на вторую и потом уже оба воткнул в юсб
достаточно земли только объеденять
я загрузил последний и вот что выдает:
получается все супер круто?!
а предпоследний?
уменьши задержку в блинке до 100 и дергай датчик
предпоследний ничего не делал,
уменьшил: 100 мс не горит диод и 100 горит, вот результат:
уменьши до 5 и снова попробуй. и снова дергай
значения должны более плавно менятся
и побольше значений
выполнил, старался теребить с разной скоростью и в разные стороны:
вроде неплохо выглядит
мне тоже нравится! моей радости нет предела! сам бы я уже состариться бы успел пока разобрался как это работает. тем более я даже основ не знаю! как бы я придумал флаги выставлять?
а теперь надо поменять мигание лампочки на передачу показаний акселерометра и дальнейший вывод всего через один порт? или можно через процессинг получать последовательно результаты?
Спасибо тебе огромное за такой большущий скачок вперед к победе!
да дальше как хочешь. на что фантазии и умения хватит
вот через один порт нет
может как вариант подцепить к компу 3 ардуины, открыть 3 терминала, не обязательно ардуиновского, и потом просто собрать вместе данные
а у меня проблема. график в экселе 2013 не могу по данным построить. что то они там намудрили. хоть дополнительно вручную указывая данные все равно не рисует, только надписи. жаль. зря поставил
я на 2010 остановился. в 2013 и меню другое и вообще - лес. а обычным графикостроителем почему не воспользоваться? типа Advanced Grapher?
блин оказывается вся проблема в формате конвертации с txt. только формат общий, дата, текстовый и пропустить. почему нет числового. дебилы
да и в общий формат конвертирует странно. в 2003 или 2007 такого не было насколько помню
да ладно. хочешь построй и глянем что получилось. мне лечнь еще что то ставить
вручную перебил часть и наконец построил
кстати нужно ли ускорение во всех осях? анализировать будет тяжело
может оси х будет достаточно
я сделал так для процессинга по идее он должен создавать два текстовых докуента и писать туда с разных портов и работает, только данные, бывает путаются, смещаются не по столбикам:
а до этого сделал так для платы с миганием:
по оси икс откладывать промежутки времени, равные двум delay (5)? т.е. 10 мс, т.е. шаг 0,01 сек?
ты гораздо быстрее справляешься! я только разобрался что б работало при просмотре с ардуиновского терминала и в процессинге хоть что то делал. просто иначе то как запустить их одновременно?
про промежутки ага правильно
так говорю же если не будет 3 оси данных, не придется через табулятор в строке отправлять 3 значения
после нажатия на ресет второй с задержкой начинает измерять! ну или писать в монитор!
не должно быть такого. специально в начале написал флаг=0.
тут только 1 вариант - наводки. это легко увидеть если ничего не подключая к ардуине с датчиком поднести к ардуине руку и будет измерять
хорошо ты тормошил))) что они тебе плохого сделали
а вообще неплохо получилось. тебя устраивает?
прицепи к какому нибудь грузику на веревочке и пусть поболтается. посмотрим похоже будет или нет на синусойду
1280 значений, может быть не выводить те, там где дельта меньше или равна 0.05?
был ресет соединен, убрал его и нажимая ресет на той, что лампочкой мигает, вроде одновременно запускает!
сейчас попробую! там мереет 1,5g, может быть придется другие акселерометры ставить!
не я выбирал датчики)))
удар по коробочке не совсем то. нет таких синусоидальных затущаюих колебаний. но все равно
меняй датчик. кто тебе мешает
кстати да. больше не может
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA7660FC
Мне посоветовали решить задачу 2 для удобства! получать сразу из ком порта данные в эксель, а он макросом строил графики!
C Новым годом!
может быть ты знаешь как избавиться от этого? : вот показания с одного из акселерометров:
как видно -0,1; -0,05; -0,1 получаются случайным скачком напряжения в микроконтроллере или еще чем, шум, не несущий инфы, а ты знаешь как его убрать при построении графика в экселе например? мои варианты:
1) если вот эта дельта мала, то записывать в ячейку не измененное значение. (макросом к примеру)
2) наложить фильтр, который сам бы тосек (но я не знаю как это делать) и это более правильное мне кажется решение. линии тренда я не знаю.
это шум?
они есть всегда и при любых измерениях. при любом положении акселерометров. не уверен что это именно.
а вот что получилсось если акселерометры жестко закрепить на одном бруске и ударить по нему сбоку маятником: тут я у второго графика отнял значение 0.05, т.е. опустил ниже, а то он как то был высоковат и поскольку они они начинают не одновременно то приходится накладывать влево-вправо двигая. но все по логике они должны совпадать, а не совсем (
кто они? ты про шум?
акселерометр шумит. почитай. просто первое что нашел. все не нужно читать. просто поиском на странице найди слово шум
http://arduino.ru/forum/programmirovanie/kvadrokopter-akselerometr-i-gir...
http://geektimes.ru/post/118192/
http://habrahabr.ru/post/220989/
http://roboforum.ru/forum11/topic1175-15.html?style=9
http://robocraft.ru/forum/viewtopic.php?f=8&t=688
я почитал! там фильтры калмана, композитные,но самая большая проблема в том что у меня уже есть измерения и переписывать код работы акселерометра что б пересчитать значенияне не представляется возможным потому что установка на каникулах заперта.
а можно как то уже готовые значения филтровать? или это чепуха будет? хотя мне и легкий подгон подойдет на сейчас
значения есть. забей в ардуину их и фильтруй. кто мешает
Добрый день Господа. Скиньте полный код на это чудо. Буду благодарен!
Привет!
все пришлось с нуля начинать. акселерометр оказался неподходящим. взял MPU5060. добавил фото старт(когда маятник пролетает между ресивером и лампочкой - начинается работа программы). но пока что не работют эти акселерометры (может сгорели - жду два других).
единственный нерешенный вопрос остался с таймером. я купил кварцевый резонатор на 8 и 16 МГц и думал его использовать и еще есть таймеры NE555P. но я полагаю можно обойтись родным в ардуине который?
Нашел вот такой скетч:
Добрый день Господа. Скиньте полный код на это чудо. Буду благодарен!
готового нет, только из кусков выше составлять.
а пока для старых акселерометров вот поставил счетчик вермени и и фотостарт
и вот результаты:
это поулчается для главной ардуины которая начинает ход измерений и задет прерывания для второй.
как думаешь, это четкий вариант? если сделано так, что вторая ждет через прерывания пока первая ей скажет - начинай! значит такой таймер можно оставить только на одной ардуине? и использовать его для горизонтальной оси как шкалы для обоих акселерометров.
я подключил MPU5060 и он показал результаты в виде:
используя стандартный код с http://playground.arduino.cc/Main/MPU-6050
посмотри для интереса
http://www.youtube.com/watch?v=L_soFcZ5pWo
а по вопросу хз. как то надо пересчитывать. гугли. рано или поздно найдешь готовый код
http://flprog.ru/
Вот нашел интересную программу. У кого какое мнение?
Вопрос а почему не стал использовать подтягивающие резсторы? С помощью них стабильнее и точнее работает.
Тем более в большинстве схем управления 1 или 0 на логике всегда ставятся подтягивающие резисторы. А на полевых транзисторах получается четкость и стабильность как включения так и выключения.
я не знаю почему но когда в схему втыкаю резисторы показания не идут вынимаю - идут. ставлю на 2.2кОм ((
День добрый. Ребята (я нуб в ардуине) я так понимаю что подключить гироскоп к ардуине нужно так - от датчика к ардуино SCL k SCL a SDA k SDA и общий GND а питание отдельно. Так? Боюсь спалить.
Или SCL k SDA a SDA k SCL на ардуине.
SDA - SDA
SCL - SCL
GND - GND
VCC-VCC (+5В)
для MPU6050 3.3 V !!!!
для MPU6050 3.3 V !!!!
да если он сам плату делает и чип распаивает. а готовых платах уже стоит стабилизатор на 3.3В
https://www.google.ru/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&ved=0CAcQjRw&url=http%3A%2F%2Fcxem.net%2Fmc%2Fmc324.php&ei=HxgZVYnBEIbfPdiGgKgN&bvm=bv.89381419,d.ZWU&psig=AFQjCNHJHH7lAY0EBC-DgNdSGJlfor54PA&ust=1427794323390524
http://playground.arduino.cc/uploads/Main/mpu-6050.jpg
Все установил код все работает, теперь как вывести на выходной пин ? На драйвер мотора шагового.
а ты сам понял что написал? мне лично нифига непонятно
значит можно смело переткнуть к 5 в?
я по твоему совету нашел рабочуюю версию с фильтром калмана по https://github.com/TKJElectronics/KalmanFilter
но мне не понятно там фильтр только для гироскопа или и для акселеромтера тоже? потому что значения аксс. просто 540, -1180, 830 и т.д.
а мне нужно всего лишь значение ускорения
и, получается, что значения с гироскопа это скорость в данный момент времени?