На первый взгляд нормально, а компиляция что говорит и выполнение. Я б еще вывел сумму квадратов для проверки - она не превышает ли 32000? И на результат работы где?
Пока нет. Сейчас надо получить устойчивое значение. Сумма трех квадратов не может быть отрицательной. Она за разрядность инт выходит при расчете. Попробуй в 35 строке (long) перед каждым сомножителем поставить.
Приведи вывод всех значений от одного tmax до второго обязательно при дрожании датчика как при треморе. Это нужно для уточнения 50. И у тебя нет вывода amin tmin. Тоже хорошо бы посмотреть. Если правильно работает то время тмин должно быть точно по середине между первым и вторым тмах
ТОВАРИЩИ! получил в первый раз минимальные значения!) между макс и мин было очень много разных значений а (для удобства восприятия удалил из при копировании)
Ну тогда все ещё хуже. Акселерометр выдает безумные значения. Разрядности не хватает на лонг. Ужас. Будем резать без наркоза. Возвращаемся к интам. Добавляем 3 переменные типа инт и после получения данных пишем в них три ускорения сдвинув на лево на 9 или разделим на 512. И уже эти переменные возводим в квадрат и расчитываем а. Заодно и пофильтруем.
Почти. Сдвиг вправа на 9 равен делению на 512. Моя описка. Лево право попутал. Так что или право или деление, что быстрее будет работать. Но думаю в ассемблере будет одно и тоже.
nik182, значения пришли в более менее порядок) проскакивают значения тмин и тмакс большие. вот какая штука до появления первой частоты. мне получается усеньшить нужно значение nмакс и nмин? там было сравнение с 50. поставить где-то 15? да, еще сразу вопрос вдогонку: что мы делаем этим сравнением с 50? просто в Уфе сейчас уже ночь, голова не соображает.
Это число должно быть равно числу точек между максимумом и минимумом на средней скорости тремора. Это глубина поиска максимума в текущей реализации данных. Если сделать маленьким, то будет ловить верхние гармоники, большим, пропускать максимумы и давать ошибку. Частота получилась адекватной. Уменьши нмин нмах до 25 и попробуй. Теперь настройка под твои параметры. Похоже что работает. И закоментируй весь отладочный вывод кроме нмин нмах тмин тмах
P. S. Мысль вот с утра пришла. Можно повесить на аналоговый вход переменный резистор, в цикле оцифровывать, преводить его значения в диапазон 5 - 50 и использовать это значение как глубину поиска. Тогда изменяя его значения, не переписывая программу, можно подстраивать в прцессе работы на получение устойчивых данных на разных гармониках. Именно устойчивых! Если глубина поиска будет соответствовать периоду колебаний.
Что бы двигаться дальше, хотелось бы прояснить некоторые вопросы. Самый первый - зачем нужна эта работа. Что с ней дальше будет. Это одноразовая конструкция для зачета или она будет реально использоваться в жизни? Если первое, то всё сделано. Немножко причесать, подстроить параметры и всё. Если второе, то в каком виде будет использоваться? В виде коробочки с дисплеем на плече у испытуемого или в коробочки около ноутбука? Если без ноутбука, то процессор явно не тот. Не хватит памяти на обеспечение сервисного обслуживания. Если с ноутбуком то функционал программы излишнен. Достаточно гнать на максимальной скорости данные акселерометра на комп и уже там делать обработку. Для это тоже лучше подходит другая плата, например дигиспак с 85 тинькой, которая втыкается прямо в USB и с неё проводок к акселерометру. Этакий датчик получается. Напишите, пожалуйста, что дальше делать? В каком напрвлении двигаться? Если реально для исследований то правильный путь второй - только датчик и вся обработка на компьютере с применение FFT пребразования. Будет точно, красиво, с набром статистики. Здесь я тоже могу помочь.
Ну тогда все ещё хуже. Акселерометр выдает безумные значения.
Вы просто не умеете с ним работать )))
Слушай, шутник, достал конкретно. Засунь свои подъ...ки себе в ж... и обрати внимание на то всё заработало штатно. Твой пук оказался в лужу. (У кого то вчера про лужу я уже читал... Да)
Ну тогда все ещё хуже. Акселерометр выдает безумные значения.
...Слушай, шутник, достал конкретно
Все контроллеры на этой гире работают прекрасно и заметь, только у тебя она выдает безумные значения, я то тут при чём?...злишься - значит не прав, так и скажи - сморозил чушь
Ты хотя бы вник в то, что произошло? Безумными они были исключительно как входные данные для того метода обработки и ограничений 8 битного МК. После корректировки данных акселерометра под эти ограничения все заработало. То есть как раз работать то мы с ним умеем. Этот процесс отладка называется и подъ...ть к телодвижениям в середине отладки можно только от небольшого ума. А поделу, с полезными замечаниями, ни одного сообщения в этой теме от тебя не было. Даже частота тремора не совпадает с возможностями твоего тренированного пальца. Делаю вывод. Ты себя позиционируешь как штатный шут. Обид никаких, кроме раздражения что в серьёзный разговор сбоку влазит паяц.
Деда. Дорогой. В твоих шутках часто больше полезной информации, чем в больших серьёзных ответах. Шути на здоровье. Ты умеешь. Вот только другим похоже твоя слава покоя не дает, а таланта нету.
Деда. Дорогой. В твоих шутках часто больше полезной информации, чем в больших серьёзных ответах. Шути на здоровье. Ты умеешь. Вот только другим похоже твоя слава покоя не дает, а таланта нету.
Деда, к твоей славе точно не примазываюсь, ... просто товарищ кинулся помогать, не запросив даже параметров конфигурации, а она во всех библиотеках по умолчанию разная, даже из одного GIT в разных релизах, то-есть, товарищ с эти девайсом дел не имел никаких, даже на моём дилетанском уровне...
А я его полгода крутил )))
О! Попытка защитана. Но зачем, если уже работает? Что можно исправить в работающей программе поправив инициализацию? Вы мысль свою закончите пожалуйста? Причину сообщения озвучте. Что то послужило толчком к написанию поста о инициализации?
Поздравляю. Сектор приз. Я тоже его крутил. И даже на машинке радиоуправляемой у меня программа вертится, заносы вычисляет. И я знаю что можно добывать из него данные по разному. Но тема не про акселеорометр, а про обработку данных. А данные можно просто взять и обработать и из любых получить нужный результат. Если в них есть даже замаскированная информация. И с этой библиотекой со штатными настройками данные с акселерометра вполне валидны. Чтобы не лазить в настройки я скорректировал их снаружи. ТС новичок и разбираться ещё и акселерометром посылать его это перебор. Ещё раз для не догоняющих. Тема про обработку данных акселерометра, а не про его настройку.
естественно в руках и не один оборот, его же сначала калибруют по трём осям, строго по методикам в интеренете )))
а тут без просмотра файла конфигурациии и приведения его в надлежащий вид, без калибровки, опа и в дамках...всё изумительно работает...
Садман41, ты же грамотный, посмотри пост 80, там же получают с акселерометра полную хрень
Включи уже мозги, а? Нам не нужны абсолютные точные калиброванные данные акселерометра. Нам плевать как он расположен в пространстве. Нам нужно только относительное полное, не по осям, ускорение. Мы берём от него производную и по ней получаем необходимые нам данные. Нам нужна частота, а не координаты. Колебания выходных данных акселерометра не зависят от настроек.
эта конструкция в принципе имеет одноразовых характер - для исследования проблемы тремора рук у людей с Паркинсоном, НО если можно это дело улучшить, то было бы здорово! Ваш посыл в плане использования другого микроконтроллера мне предельно понятен, но это если только в июне, т.к. в мае я бы хотел попробовать уже на пациентах использовать уже получившейся приборчик.
На счет того, в каком это все будет виде: сейчас об автономности системы речи и не идет пока что, поэтому буду использовать ноутбук, кабель подлиннее и закреплять на руке ардуинку и акселерометр (заранее приведя все это в более божеский вид, например в вид браслета).
Что планирую: как только все наладится в плане измерения (даже с погрешностями и шумами), подцепить к ардуинке (и на браслет) вибромоторчики как в телефонах. Есть теория, что тремор рук у людей с Паркинсоном возникает из-за ошибок в работе мозга. Мозг отправляет друг за другом сигналы в мышцы "Старт" и "Стоп" из-за чего рука начниает дрожать. Т.к. по сути везде есть наличие обратной связи , а здесь она точно есть благодаря ЦНС, то с помощью раздражения от вибрации можно ,если сказать простым языком, сбить с тольку мозг. Тем самым неинвазивно и немедикаментозно подавлять тремор. Вот.
Подцепление моторчиков для меня более простая задача, чем измерить частоту. Я понимаю, что ардуина не панацея для моей идеи и нужен проц по серьезнее. Поэтому можно вибромоторы подцепить на другую ардуинку, выдавая параметры вибрации вручную в зависимости от значения частоты.
Очень ценю Вашу помощь! Большое спасибо, что не остались в стороне и помогаете мне) Если Вы сможете мне помочь привести в порядок полученную систему, то было бы просто супер! Прошу не думать, что я хочу за просто так получить помощь, поэтому готов отблагодарить!
mykaida, sadman41, Спасибо большое за то, что указали где ошибки и как исправить!!
изменил код в сообщении. надеюсь, что хоть часть ошибок исправил
На первый взгляд нормально, а компиляция что говорит и выполнение. Я б еще вывел сумму квадратов для проверки - она не превышает ли 32000? И на результат работы где?
nik182, проверка ругалась на booleanБ поменял немного имена переменных. код теперь такой. результаты в мониторе и в плоттере не выводятся
Навставляте принтов в строки 35,38,39,43 ну и в минус так же посмотрим что происходит с логикой работы.
Теперь 45, 57 ошибки - там вы назначаете, соответственно надо употреблять знак равенства. Т.е. не
vmin ==
true
;
, аvmin =
true
;
Кроме того писать
if
(vmax ==
true
&& vmin ==
true
)
необязательно - это и так проверяется именно на истину. Достаточноif
(vmax
&& vmin
){
И vmin vmax не обнуляются в конце
nik182, выводятся только значения а
Прошу прощения!! не переименоват в выводе имен переменных
после исправления такая картина
Плохо. Int меняем на long в строках 4,5,6 и пробуем
не нужно ли фильтровать значения, полученные от акселерометра? может через фильтр калмана пропустить, чтобы хотя бы часть шумов убрать?
Пока нет. Сейчас надо получить устойчивое значение. Сумма трех квадратов не может быть отрицательной. Она за разрядность инт выходит при расчете. Попробуй в 35 строке (long) перед каждым сомножителем поставить.
nik182, ошибка в этой строке
(long)
Приведи вывод всех значений от одного tmax до второго обязательно при дрожании датчика как при треморе. Это нужно для уточнения 50. И у тебя нет вывода amin tmin. Тоже хорошо бы посмотреть. Если правильно работает то время тмин должно быть точно по середине между первым и вторым тмах
nik182, все равно выдает те же данные.
код такой
Ну так конечно амин с такими значениями надо присваиваить первый раз число больше максимальной а.
amin = 32000000000; гдето так с девятью нулями. И в конце тоже.
Можно нули не считать, а взять в качестве начальных значений LONG_MIN и LONG_MAX , подключив limits.h
sadman41, вот тут поподробнее пожалуйста!!!
Скобку стр 47 надо перенести на 55. Это ошибка.
nik182, получается и скобку аналогично с максимум и минимум перенести? с 65ой на 73ю?
перенес еще скобку с 65 на 73 и пошла жара)))
Ну тогда все ещё хуже. Акселерометр выдает безумные значения. Разрядности не хватает на лонг. Ужас. Будем резать без наркоза. Возвращаемся к интам. Добавляем 3 переменные типа инт и после получения данных пишем в них три ускорения сдвинув на лево на 9 или разделим на 512. И уже эти переменные возводим в квадрат и расчитываем а. Заодно и пофильтруем.
sadman41, вот тут поподробнее пожалуйста!!!
Если не хватает long, возьмите unsigned long или uint64_t в конце-то концов ))
nik182, примерно так?
Почти. Сдвиг вправа на 9 равен делению на 512. Моя описка. Лево право попутал. Так что или право или деление, что быстрее будет работать. Но думаю в ассемблере будет одно и тоже.
Строки 3 4и5 то же инт, амин 32000
При умножении (long) не нужен.
nik182, значения пришли в более менее порядок) проскакивают значения тмин и тмакс большие. вот какая штука до появления первой частоты. мне получается усеньшить нужно значение nмакс и nмин? там было сравнение с 50. поставить где-то 15? да, еще сразу вопрос вдогонку: что мы делаем этим сравнением с 50? просто в Уфе сейчас уже ночь, голова не соображает.
Это число должно быть равно числу точек между максимумом и минимумом на средней скорости тремора. Это глубина поиска максимума в текущей реализации данных. Если сделать маленьким, то будет ловить верхние гармоники, большим, пропускать максимумы и давать ошибку. Частота получилась адекватной. Уменьши нмин нмах до 25 и попробуй. Теперь настройка под твои параметры. Похоже что работает. И закоментируй весь отладочный вывод кроме нмин нмах тмин тмах
P. S. Мысль вот с утра пришла. Можно повесить на аналоговый вход переменный резистор, в цикле оцифровывать, преводить его значения в диапазон 5 - 50 и использовать это значение как глубину поиска. Тогда изменяя его значения, не переписывая программу, можно подстраивать в прцессе работы на получение устойчивых данных на разных гармониках. Именно устойчивых! Если глубина поиска будет соответствовать периоду колебаний.
Ну тогда все ещё хуже. Акселерометр выдает безумные значения.
Вы просто не умеете с ним работать )))
Ну тогда все ещё хуже. Акселерометр выдает безумные значения.
Вы просто не умеете с ним работать )))
Слушай, шутник, достал конкретно. Засунь свои подъ...ки себе в ж... и обрати внимание на то всё заработало штатно. Твой пук оказался в лужу. (У кого то вчера про лужу я уже читал... Да)
Ну тогда все ещё хуже. Акселерометр выдает безумные значения.
...Слушай, шутник, достал конкретно
Все контроллеры на этой гире работают прекрасно и заметь, только у тебя она выдает безумные значения, я то тут при чём?...злишься - значит не прав, так и скажи - сморозил чушь
Ты хотя бы вник в то, что произошло? Безумными они были исключительно как входные данные для того метода обработки и ограничений 8 битного МК. После корректировки данных акселерометра под эти ограничения все заработало. То есть как раз работать то мы с ним умеем. Этот процесс отладка называется и подъ...ть к телодвижениям в середине отладки можно только от небольшого ума. А поделу, с полезными замечаниями, ни одного сообщения в этой теме от тебя не было. Даже частота тремора не совпадает с возможностями твоего тренированного пальца. Делаю вывод. Ты себя позиционируешь как штатный шут. Обид никаких, кроме раздражения что в серьёзный разговор сбоку влазит паяц.
штатный шут тут - я. попрошу не примазывать никаво больше к этому высокому званию.
Деда. Дорогой. В твоих шутках часто больше полезной информации, чем в больших серьёзных ответах. Шути на здоровье. Ты умеешь. Вот только другим похоже твоя слава покоя не дает, а таланта нету.
Наиль!
Ты бы привёл содержимое ТВОЕГО файла mpu6050.cpp а то ведь даже параметры инициализации неизвестны
Деда. Дорогой. В твоих шутках часто больше полезной информации, чем в больших серьёзных ответах. Шути на здоровье. Ты умеешь. Вот только другим похоже твоя слава покоя не дает, а таланта нету.
Деда, к твоей славе точно не примазываюсь, ... просто товарищ кинулся помогать, не запросив даже параметров конфигурации, а она во всех библиотеках по умолчанию разная, даже из одного GIT в разных релизах, то-есть, товарищ с эти девайсом дел не имел никаких, даже на моём дилетанском уровне...
А я его полгода крутил )))
О! Попытка защитана. Но зачем, если уже работает? Что можно исправить в работающей программе поправив инициализацию? Вы мысль свою закончите пожалуйста? Причину сообщения озвучте. Что то послужило толчком к написанию поста о инициализации?
Поздравляю. Сектор приз. Я тоже его крутил. И даже на машинке радиоуправляемой у меня программа вертится, заносы вычисляет. И я знаю что можно добывать из него данные по разному. Но тема не про акселеорометр, а про обработку данных. А данные можно просто взять и обработать и из любых получить нужный результат. Если в них есть даже замаскированная информация. И с этой библиотекой со штатными настройками данные с акселерометра вполне валидны. Чтобы не лазить в настройки я скорректировал их снаружи. ТС новичок и разбираться ещё и акселерометром посылать его это перебор. Ещё раз для не догоняющих. Тема про обработку данных акселерометра, а не про его настройку.
... товарищ с эти девайсом дел не имел никаких, даже на моём дилетанском уровне...
А я его полгода крутил )))
Перечитал тему. И вдруг неожиданно в #37 вижу: я датчик не сильно пытал, если действительно выдаёт ускорения, тогда да.
Вы уж определитесь пожалуйста. Пытали полгода, а то что он ускорение выдает не знаете. Неувязочка получается.
Может просто в руках крутил? ;)
Может просто в руках крутил? ;)
естественно в руках и не один оборот, его же сначала калибруют по трём осям, строго по методикам в интеренете )))
а тут без просмотра файла конфигурациии и приведения его в надлежащий вид, без калибровки, опа и в дамках...всё изумительно работает...
Садман41, ты же грамотный, посмотри пост 80, там же получают с акселерометра полную хрень
https://www.youtube.com/watch?v=rLpKnx0pUEE
Может просто в руках крутил? ;)
естественно в руках и не один оборот, его же сначала калибруют по трём осям, строго по методикам в интеренете )))
а тут без просмотра файла конфигурациии и приведения его в надлежащий вид, без калибровки, опа и в дамках...всё изумительно работает...
Садман41, ты же грамотный, посмотри пост 80, там же получают с акселерометра полную хрень
Включи уже мозги, а? Нам не нужны абсолютные точные калиброванные данные акселерометра. Нам плевать как он расположен в пространстве. Нам нужно только относительное полное, не по осям, ускорение. Мы берём от него производную и по ней получаем необходимые нам данные. Нам нужна частота, а не координаты. Колебания выходных данных акселерометра не зависят от настроек.
https://www.youtube.com/watch?v=rLpKnx0pUEE
да всё проще, есть масса приложений под Андроид для измерения вибраций...там и графики рисуются
Добрый день, nik182!
Добрался до дома и могу ответить на вопросы:
эта конструкция в принципе имеет одноразовых характер - для исследования проблемы тремора рук у людей с Паркинсоном, НО если можно это дело улучшить, то было бы здорово! Ваш посыл в плане использования другого микроконтроллера мне предельно понятен, но это если только в июне, т.к. в мае я бы хотел попробовать уже на пациентах использовать уже получившейся приборчик.
На счет того, в каком это все будет виде: сейчас об автономности системы речи и не идет пока что, поэтому буду использовать ноутбук, кабель подлиннее и закреплять на руке ардуинку и акселерометр (заранее приведя все это в более божеский вид, например в вид браслета).
Что планирую: как только все наладится в плане измерения (даже с погрешностями и шумами), подцепить к ардуинке (и на браслет) вибромоторчики как в телефонах. Есть теория, что тремор рук у людей с Паркинсоном возникает из-за ошибок в работе мозга. Мозг отправляет друг за другом сигналы в мышцы "Старт" и "Стоп" из-за чего рука начниает дрожать. Т.к. по сути везде есть наличие обратной связи , а здесь она точно есть благодаря ЦНС, то с помощью раздражения от вибрации можно ,если сказать простым языком, сбить с тольку мозг. Тем самым неинвазивно и немедикаментозно подавлять тремор. Вот.
Подцепление моторчиков для меня более простая задача, чем измерить частоту. Я понимаю, что ардуина не панацея для моей идеи и нужен проц по серьезнее. Поэтому можно вибромоторы подцепить на другую ардуинку, выдавая параметры вибрации вручную в зависимости от значения частоты.
Очень ценю Вашу помощь! Большое спасибо, что не остались в стороне и помогаете мне) Если Вы сможете мне помочь привести в порядок полученную систему, то было бы просто супер! Прошу не думать, что я хочу за просто так получить помощь, поэтому готов отблагодарить!
ua6em, sadman41, nik182
Товарищи! Давайте не будем ругаться из-за моей неграмотности в программировании и работе с ардуино!
Если калибровка акселерометра поможет улучшить показатели не изменяя рабочий код, то готов это сделать.