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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> AVR-MT-128 и энкодер, сигналы без тормозов
PaulB
сообщение May 7 2010, 12:46
Сообщение #1


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

Группа: Участник
Сообщений: 147
Регистрация: 20-08-06
Пользователь №: 19 681



Есть отладочная плата AVR-MT-128 и подключоный к ней энкодер вращения ЛИР-158 2500имп/мин. Написал прошивку но она неуспевает считать все импульсы и зависает, при установке более простого энкодера прошивка работает исправно. Вопрос: как увеличить быстродействие контроллера?


--------------------
Мой канал: CybernetSystems
Go to the top of the page
 
+Quote Post
konstan
сообщение May 7 2010, 13:15
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 16-02-07
Из: Deutschland
Пользователь №: 25 408



Цитата(PaulB @ May 7 2010, 16:46) *
ЛИР-158 2500имп/мин.


может 2500 имп/оборот?
Какова скорость вращения вала энкодера и какова частота импульсов.

А вы устраняли "дребезг"?
Go to the top of the page
 
+Quote Post
x736C
сообщение May 7 2010, 14:31
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942



И на чем написана программа, и каким образом она написана? Может можно оптимальней.
Go to the top of the page
 
+Quote Post
PaulB
сообщение May 7 2010, 17:32
Сообщение #4


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

Группа: Участник
Сообщений: 147
Регистрация: 20-08-06
Пользователь №: 19 681



Цитата(konstan @ May 7 2010, 17:15) *
может 2500 имп/оборот?
Какова скорость вращения вала энкодера и какова частота импульсов.

А вы устраняли "дребезг"?


Да, Вы правы2500имп/оборот
В паспорте написано что мах.частота вращения вала 10000об/мин и выходного сигнала 2,5МГц

Пишу в кодвижене
вот часть кода:
CODE
while(PINA.1==1){ //Стоп
if (PINB.2==1) {
while(PINB.2==1){

}
q=q+1;
}}


--------------------
Мой канал: CybernetSystems
Go to the top of the page
 
+Quote Post
haker_fox
сообщение May 8 2010, 04:10
Сообщение #5


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(PaulB @ May 8 2010, 02:32) *
Да, Вы правы2500имп/оборот

Однако, такие частоты нужно обрабатывать аппаратно, а не программно (ИМХО).
Как вариант, Вы можете использовать специализированные микросхемы, предназначенные для этого, либо (если нет дребезга) что-нибудь на базе D-триггеров и счетчиков из дискретной логики. Но еще лучше, опять же ИМХО, взять CPLD и организовать на ней необходимые функции.
Если нужно программно, то не следует забывать, что частота опроса энкодера должна быть в несколько раз выше максимальной частоты импульсов с энкодера для конкретного случая. Например, если Вы будете вращать вал с максимальной скорость 10 об/сек, то частота опроса может быть 10 * 2500 *4 = 100 кГц. Т.е. в 4 раза больше. А с учетом цифровой фильтрации различных помех и еще выше. Таким образом, все ресурсы МК будут затрачены на обработку энкодера.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
PaulB
сообщение May 8 2010, 14:50
Сообщение #6


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

Группа: Участник
Сообщений: 147
Регистрация: 20-08-06
Пользователь №: 19 681



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


--------------------
Мой канал: CybernetSystems
Go to the top of the page
 
+Quote Post
Duhas
сообщение May 9 2010, 02:08
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 227
Регистрация: 13-04-07
Пользователь №: 27 018



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

а вообще для норм энкодеров с приличным разрешением - нужно хардварное считывание... либо как писали выше.. либо менять МК ...
Go to the top of the page
 
+Quote Post
RW9UAO
сообщение May 9 2010, 11:06
Сообщение #8


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

Группа: Свой
Сообщений: 115
Регистрация: 23-01-07
Пользователь №: 24 688



на INT0 повесить и не париться.
Go to the top of the page
 
+Quote Post
Stas
сообщение May 9 2010, 11:35
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 464
Регистрация: 1-10-04
Из: Челябинск
Пользователь №: 751



Для ЛИР-158 на 5000 дискрет на оборот делал энкодер со счетчиком приращения на max7128s, считывал контроллером уже обработанные данные.
При реализации программы энкодера обратите внимание на следующий нюанс - при неподвижном вале ЛИРА по одной из линий возможно прохождение ложных импульсов, которые вызовут ошибку подсчета перемещения. В принципе видел эту ошибку и при вращении вала ЛИР шаговым приводом. Поэтому инкремент/декремент счетчика положения следует осуществлять при смене состояния на обеих линиях датчика.
Go to the top of the page
 
+Quote Post
=GM=
сообщение May 11 2010, 13:04
Сообщение #10


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(PaulB @ May 7 2010, 11:46) *
Есть отладочная плата AVR-MT-128 и подключеный к ней энкодер вращения ЛИР-158 2500имп/об, как увеличить быстродействие контроллера? В паспорте написано что мах. частота вращения вала 10000об/мин и выходного сигнала 2,5МГц


Что если для увеличения быстродействия сигнал канала А подать на int0 и counter1, а сигнал канала B на int1 и counter3? Почти аппаратное решение без всяких затрат :-).

Кстати, откуда 2.5 МГц, если 2500*10000/60=416667=417кГц максимум?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
PaulB
сообщение May 11 2010, 14:22
Сообщение #11


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

Группа: Участник
Сообщений: 147
Регистрация: 20-08-06
Пользователь №: 19 681



Натолкнули меня на идею использовать D-триггер, а в прошивке домножать на коэффициент деления. Что думаете по этому поводу?


--------------------
Мой канал: CybernetSystems
Go to the top of the page
 
+Quote Post
=GM=
сообщение May 11 2010, 15:28
Сообщение #12


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Ну так, timer/counter1 и есть цепочка D-триггеров.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
PaulB
сообщение May 11 2010, 16:17
Сообщение #13


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

Группа: Участник
Сообщений: 147
Регистрация: 20-08-06
Пользователь №: 19 681



В паспорте на датчик рекомендуется использовать ИС AM26LS32 и AM26C32, но толком не чего на них найти не могу. Может кто нибудь работал с ними или знает о них что нибудь?


--------------------
Мой канал: CybernetSystems
Go to the top of the page
 
+Quote Post
SysRq
сообщение May 11 2010, 17:53
Сообщение #14


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(PaulB @ May 11 2010, 20:17) *
..AM26LS32 и AM26C32 ..кто нибудь работал с ними или знает о них что нибудь?
А что конкретно интересует? Это всего лишь приёмники дифференциального сигнала (пара A+\A- в один A), они ничего не считают. Даташиты Google укажет при поиске по названию м\с.
Go to the top of the page
 
+Quote Post
PaulB
сообщение May 12 2010, 05:23
Сообщение #15


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

Группа: Участник
Сообщений: 147
Регистрация: 20-08-06
Пользователь №: 19 681



Да даташиты в основном все на буржуйском. Рас они ничего несчитают, то к чорту их.
Значит надо какуюто схему на логике искать.


--------------------
Мой канал: CybernetSystems
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:38
Рейтинг@Mail.ru


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