реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> энкодеры и акселерометры, Передача и обработка данных
Zliva
сообщение Jul 14 2009, 12:07
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318



Всем привет!
Нужна помощь.
Есть виброплощадка с двумя дебалансными валами, с одной стороны которой через эластические муфты приделаны двигатели, а с другой – энкодеры. Площадка крепится через пружины к станине. Двигатели прикручены к станине жестко. Валы площадки не синхронизированы. К площадке крепится датчик ускорения.
Нужно измерять положения дебалансных валов и их скорость, ускорение, а также ускорение, скорость, положение площадки. Ловить сдвиг фаз между положениями валов.
Что уже есть: изготовлена площадка, на ней стоят энкодеры. Уже запускал, работает. Для чего это - не спрашивайте. Просто заставляют получить те параметры которые нужно и все. Для себя я сформировал такую задачу, которую изложил выше. Контролер и комп НЕ УПРАВЛЯЮ ДВИГАТЕЛЯМИ, а они запускаются отдельно через рубильник.
Двигатель вращается с частотой 1500 об/мин, следовательно это равно 25об/сек. Энкодер имеет разрешение 1024им/об, это равно 1024*25=25600Гц. Это небольшая частота для контроллера, но для компа критична. Поэтому предлагаю такую запудренную схему.Откуда взялось 50 и200 отсч/сек не могу понять. Объясните пожалуйста.
Здесь обсуждалось http://electronix.ru/forum/index.php?showtopic=64872
Какие будут идеи?


--------------------
If the person is successful, he is successful in any sphere.
Go to the top of the page
 
+Quote Post
Zliva
сообщение Jul 14 2009, 22:10
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318



Подумал на счет обычной AVR-ки. Может стоит использовать два микроконтроллера и FLASH память. Первый микроконтроллер непосредственно считывает данные с частотой 500кГц (по переполнению счетчика) и записывает их в энергозависимую память, а второй - передает их на комп (может даже и через RS232 или USB), но тогда нельзя потерять всех пакетов. Также нужно строить график на компе, зависимости положений, скорости и ускорения, Но поскольку я знаю частоту срабатывания (500кГц), то это можна легко сделать.


--------------------
If the person is successful, he is successful in any sphere.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Jul 15 2009, 02:20
Сообщение #3





Guests






Такое впечатление, что Вы пропустили все данные Вам советы мимо ушей...

1) Определитесь сначала с какой точностью Вам нужно измерять:
- угловое положение;
- угловую скорость;
- угловое ускорение;
- линейное ускорение;
Только не в "попугаях", и не процентах неизвестно от чего, а в абсолютных физических величинах.

2) Далее, как будет решаться с проблема с фиксацией начального положения валов? Есть ли датчик нулевого угла?

3) Какова требуемая частота дискретизации - периодичность измерения интересующих значений?

4) Что Вы понимаете под режимом реального времени. То есть какая максимальная задержка от момента измерения до момента получения данных в компьютере считается допустимой.

Когда сможете внятно ответить на эти вопросы, тогда можно предлагать и обсуждать решения. А пока - разговор ни о чем...
Go to the top of the page
 
+Quote Post
Zliva
сообщение Jul 15 2009, 10:34
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318



Цитата
1) Определитесь сначала с какой точностью Вам нужно измерять:
- угловое положение;
- угловую скорость;
- угловое ускорение;
- линейное ускорение;
Только не в "попугаях", и не процентах неизвестно от чего, а в абсолютных физических величинах.

Точность измерения:
- угловое положение +/-0,4градуса;
- угловую скорость(+/-1.0град/сек);
- угловое ускорение (после интерполяции графика скорости. Зависит от метода);
- линейное ускорение(+/-0,1g);
Цитата
2) Далее, как будет решаться с проблема с фиксацией начального положения валов? Есть ли датчик нулевого угла?

Начальное положение определяться перед пуском. Поскольку дебалансный вал имеет эксцентриситет, то соответственно он направлен в низ. Это и есть его начальное положение.
Цитата
3) Какова требуемая частота дискретизации - периодичность измерения интересующих значений?

Нужно постоянно опрашивать датчики, чтобы знать его положение, ускорение в каждый момент времени.
Цитата
4) Что Вы понимаете под режимом реального времени. То есть какая максимальная задержка от момента измерения до момента получения данных в компьютере считается допустимой.

Мне не нужен РРВ. Данные могут буферизироваться. Пусть они приходят с задержкой мах 1 сек. Главное не потерять всю последовательность.

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

Надеюсь ответил.
Прикрепленные файлы
Прикрепленный файл  board.PDF ( 64 килобайт ) Кол-во скачиваний: 253
 


--------------------
If the person is successful, he is successful in any sphere.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Jul 15 2009, 12:46
Сообщение #5





Guests






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

Это не ответ... Можно лишь сказать, что поскольку рабочая частота датчиков будет порядка 25кГц, то опрашивать их с большей частотой - просто нет смысла. Да и с такой тоже. При на частоте дискретизации 25кГц, будете при номинальной скорости вращения получать значения углов через 0,4 градуса. А ведь Вам еще нужно обрабатывать два канала акселерометра и передавать данные, успеете все сделать за 40мкc? Посчитайте.
Цитата
Мне не нужен РРВ. Данные могут буферизироваться. Пусть они приходят с задержкой мах 1 сек. Главное не потерять всю последовательность.
Набросал блок-схему...

Непонятно, зачем нужно заниматься буферизацией внутри устройства? Если считываете данные с постоянной частотой, то в том же темпе отправляйте их в передающий канал. В этом случае, буферизация и общение с компьютером по принципу "запрос-ответ", будет только тормозить передачу и приведет к повышению необходимой скорости обмена. IMHO, Ваше устройство должно передавать данные самостоятельно без всяких запросов, практически непрерывным потоком, а буферизация данных будет производиться со стороны компьютера...
---
P.S. Оцените, какая пропускная способность канала потребуется, чтобы передавать такой поток информации. По самым скромным подсчетом получается порядка Мегабит/сек. Может стоит снизить частоту дискретизации хотя бы до 1кГц? Получать значения углов с шагом (не менее) 10 градусов, а остальные значения углов и ускорений - экстаполировать, если это потребуется...
Go to the top of the page
 
+Quote Post
Zliva
сообщение Jul 15 2009, 13:02
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318



Я только услышал критику. С ней частично согласен. Я в этом вопросе (метрология) не силен. Просто предложил свой вариант.

А как бы Вы решили эту задачу?


--------------------
If the person is successful, he is successful in any sphere.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Jul 15 2009, 13:25
Сообщение #7





Guests






Так я (и не только) Вам уже говорили. Не гонитесь за большой частотой дискретизации. Это, IMHO, ничего не даст, кроме огромного объема малосодержательной информации и многочисленным трудностям. Я бы для начала остановился на частоте опроса 1кГц. За 1 мс ничего особо в этой системе не изменится - ни угловое положение (не больше 10гр), ни угловая скорость, ни оба вида ускорений. За это время можете свободно собрать все данные с датчиков и передать в ПК. Достаточно передавать только угловые положения и данные акселерометров, а остальное - посчитать в компьютере. Буферизацией заниматься не нужно, передаете через встроенный UART раз в 1мс пакет данных, получится не больше 10 байт. Я думаю, что скорости 115200 будет вполне достаточно. На одном МК без лишних наворотов все можно решить...
Go to the top of the page
 
+Quote Post
Zliva
сообщение Jul 15 2009, 14:00
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318



Но тогда я пропущу много данных, которые несут в себе информацию о положении. Получаемся большая ошибка. Эта методика мне непонятна. Я даже не буду знать в каком положении вал. Как измерять данные, которые приходят с частотой больше, чем частота дискретизации? Тяжело.
Может есть смысл поставить какой-то шустрый микроконтроллер, который передавал бы данные в формате (время, положение энкодера 1, положение энкодера 2, ускорение Х-координаты, Y-координаты). Тогда можна и опрашивать с частотой 1кГц.

Сообщение отредактировал Zliva - Jul 15 2009, 14:05


--------------------
If the person is successful, he is successful in any sphere.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Jul 15 2009, 14:18
Сообщение #9





Guests






Цитата
Но тогда я пропущу много данных, которые несут в себе информацию о положении. Получаемся большая ошибка. Эта методика мне непонятна. Я даже не буду знать в каком положении вал. Как измерять данные, которые приходят с частотой больше, чем частота дискретизации?

Вы же имеете дело с механической системой. Она обладает определенной инерцией. Ничто не может там поменяться "мгновенно" или очень быстро на таких коротких временных интервалах. Если очень нужно, то можете экстраполировать значения угла в недостающих точках по известной в начальный момент угловой скорости и углового ускорения, а угловую скорость - по известному значению углового ускорения. Сильно не ошибетесь.
Go to the top of the page
 
+Quote Post
=DS=
сообщение Jul 15 2009, 14:44
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 25-09-07
Пользователь №: 30 836



Цитата(@Ark @ Jul 15 2009, 18:18) *
Вы же имеете дело с механической системой. Она обладает определенной инерцией. Ничто не может там поменяться "мгновенно" или очень быстро на таких коротких временных интервалах. Если очень нужно, то можете экстраполировать значения угла в недостающих точках по известной в начальный момент угловой скорости и углового ускорения, а угловую скорость - по известному значению углового ускорения. Сильно не ошибетесь.

Абсолютно верно. Если это обычный двигатель, то 4-8 импульсов на оборот вполне достаточно, чтобы с хорошей точностью вычислть положение вала в любой момент времени. Более того, и с акселерометра не нужно гнать сплошной поток данных. Вполне достаточно значений экстремумов и маркеры времени. Этого вполне достаточно, чтобы восстановить кривую.
Go to the top of the page
 
+Quote Post
Zliva
сообщение Jul 15 2009, 17:59
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318



Как узнать, сколько пропущено угловых значений от инкрементного энкодера? Мне же нужно знать текущее значение угла поворота. Датчик не квадратурного типа, а- инкрементного.
Сигнал энкодера А:010101010101010101
Сигнал энкодера В:101010101010101010
Выборка_________:100001000100010001
С рисунка видно, что если я буду считывать с частотой 1 кГц, то мне не будет достаточно информации для определения текущего положения в момент выборки. Верно ли я понял?


--------------------
If the person is successful, he is successful in any sphere.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Jul 15 2009, 18:26
Сообщение #12





Guests






Похоже, Вы совсем ничего не поняли... sad.gif
Go to the top of the page
 
+Quote Post
=DS=
сообщение Jul 15 2009, 18:39
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 25-09-07
Пользователь №: 30 836



Цитата(Zliva @ Jul 15 2009, 21:59) *
Как узнать, сколько пропущено угловых значений от инкрементного энкодера? Мне же нужно знать текущее значение угла поворота. Датчик не квадратурного типа, а- инкрементного.
Сигнал энкодера А:010101010101010101
Сигнал энкодера В:101010101010101010
Выборка_________:100001000100010001
С рисунка видно, что если я буду считывать с частотой 1 кГц, то мне не будет достаточно информации для определения текущего положения в момент выборки. Верно ли я понял?

Не бывает таких. Должно быть так:
Сигнал энкодера А:0110011001100110
Сигнал энкодера В:1100110011001100
Сигналы идут со сдвигом фаз 90град. Иначе канал В как инверсия А, бессмысленен.
Как правило, есть еще и третий канал (индексный) - 1 имп/оборот
Работать с энкодером лучше по прерываниям. Оба канала заводятся на ножки контроллера, и любое изменение состояния ножек вызывает прерывание. Внутри прерывания контроллер считает текущее положение и запоминает его.

Сообщение отредактировал =DS= - Jul 15 2009, 18:41
Go to the top of the page
 
+Quote Post
Zliva
сообщение Jul 15 2009, 19:17
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 137
Регистрация: 14-11-06
Из: Луцка
Пользователь №: 22 318



На счет сигналов энкодера согласен. Не обратил внимания laughing.gif .
Когда-то я реализовал такую систему на АТМега8. Но она себя не зарекомендовала (а может я не разобрался до конца). У меня был тот же энкодер (только он был один) и не было акселерометра. Сигнал А подключался входу INT, а второй просто к какому-то пину PinD.3(хотя он не использовался). Я передавал количество импульсов, когда Timer_1_Overflow = 65535(когда счетчик был полным), а потом его сбрасывал обратно. Данные передавал через СОМ-порт. Они приходили с задержкой. Прикрепляю файл программе написанной в Algorithm Builder. Я не опредилял здесь ни положения, ни ускорения, только сорость.
Прикрепленные файлы
Прикрепленный файл  SPEED_ATMega8.rar ( 1.04 килобайт ) Кол-во скачиваний: 29
 


--------------------
If the person is successful, he is successful in any sphere.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Jul 16 2009, 10:28
Сообщение #15





Guests






Заводите два 16-ти битных счетчика - каждый для своего энкодера. Сбрасываете их значения в нули при начальной установке валов. Значение счетчиков корректируете по прерываниям от импульсов энкодера (увеличиваете или уменьшаете, в зависимости от направления вращения). Пропускать нельзя ни одного импульса от энкодера, ни при каком раскладе. Переполнение счетчиков специально обрабатывать не нужно. Текущие значения счетчиков - есть угловое положение ваших валов в данный момент времени. Аналоговые выходы акселерометра подключаете к двум отдельным входам АЦП вашего МК. Рекомендую, также, поставить RC-цепочки с постоянной времени порядка 1мс.
По таймеру, один раз каждые 1мс, запускаете процесс съема данных - копируете текущие значения счетчиков углового положения и снимаете показания с обоих каналов АЦП. Формируете пакет для передачи компьютеру.
Передаете данные компьютеру через UART. Ждете следующего сигнала от таймера. И так далее.
Вот и все решение вашей задачи. Не считая, конечно, разработки схемы устройства и программы для ПК.
Кстати, это решение Вам уже сформулировали в предыдущей теме, причем, в первых же ответах. Почему Вы его сразу не восприняли - мне не понятно. Видимо, Вам просто пока не хватает подготовки для решения этой задачи. Трудитесь и все получится.
Удачи.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 18:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.0148 секунд с 7
ELECTRONIX ©2004-2016