PaulB 0 7 мая, 2010 Опубликовано 7 мая, 2010 · Жалоба Есть отладочная плата AVR-MT-128 и подключоный к ней энкодер вращения ЛИР-158 2500имп/мин. Написал прошивку но она неуспевает считать все импульсы и зависает, при установке более простого энкодера прошивка работает исправно. Вопрос: как увеличить быстродействие контроллера? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
konstan 0 7 мая, 2010 Опубликовано 7 мая, 2010 · Жалоба ЛИР-158 2500имп/мин. может 2500 имп/оборот? Какова скорость вращения вала энкодера и какова частота импульсов. А вы устраняли "дребезг"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x736C 0 7 мая, 2010 Опубликовано 7 мая, 2010 · Жалоба И на чем написана программа, и каким образом она написана? Может можно оптимальней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PaulB 0 7 мая, 2010 Опубликовано 7 мая, 2010 · Жалоба может 2500 имп/оборот? Какова скорость вращения вала энкодера и какова частота импульсов. А вы устраняли "дребезг"? Да, Вы правы2500имп/оборот В паспорте написано что мах.частота вращения вала 10000об/мин и выходного сигнала 2,5МГц Пишу в кодвижене вот часть кода: while(PINA.1==1){ //Стоп if (PINB.2==1) { while(PINB.2==1){ } q=q+1; }} Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 8 мая, 2010 Опубликовано 8 мая, 2010 · Жалоба Да, Вы правы2500имп/оборот Однако, такие частоты нужно обрабатывать аппаратно, а не программно (ИМХО). Как вариант, Вы можете использовать специализированные микросхемы, предназначенные для этого, либо (если нет дребезга) что-нибудь на базе D-триггеров и счетчиков из дискретной логики. Но еще лучше, опять же ИМХО, взять CPLD и организовать на ней необходимые функции. Если нужно программно, то не следует забывать, что частота опроса энкодера должна быть в несколько раз выше максимальной частоты импульсов с энкодера для конкретного случая. Например, если Вы будете вращать вал с максимальной скорость 10 об/сек, то частота опроса может быть 10 * 2500 *4 = 100 кГц. Т.е. в 4 раза больше. А с учетом цифровой фильтрации различных помех и еще выше. Таким образом, все ресурсы МК будут затрачены на обработку энкодера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PaulB 0 8 мая, 2010 Опубликовано 8 мая, 2010 · Жалоба Понятно, лучше обрабатывать энкодер аппаратно, значит датчик подключаем к спецовой микрухе (вопрос только к какой и какая лучше?) и микруху к выводам прерывания на мк, или можно к любым выводам? Хотя для моих целей наверное и программное решение пойдет, только вот как это сделать? - не представляю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Duhas 0 9 мая, 2010 Опубликовано 9 мая, 2010 · Жалоба не мегу мона на прерывание повесить один канал, второй читать в прерывании.. а вообще для норм энкодеров с приличным разрешением - нужно хардварное считывание... либо как писали выше.. либо менять МК ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rw9uao 0 9 мая, 2010 Опубликовано 9 мая, 2010 · Жалоба на INT0 повесить и не париться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Stas 1 9 мая, 2010 Опубликовано 9 мая, 2010 · Жалоба Для ЛИР-158 на 5000 дискрет на оборот делал энкодер со счетчиком приращения на max7128s, считывал контроллером уже обработанные данные. При реализации программы энкодера обратите внимание на следующий нюанс - при неподвижном вале ЛИРА по одной из линий возможно прохождение ложных импульсов, которые вызовут ошибку подсчета перемещения. В принципе видел эту ошибку и при вращении вала ЛИР шаговым приводом. Поэтому инкремент/декремент счетчика положения следует осуществлять при смене состояния на обеих линиях датчика. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 11 мая, 2010 Опубликовано 11 мая, 2010 · Жалоба Есть отладочная плата AVR-MT-128 и подключеный к ней энкодер вращения ЛИР-158 2500имп/об, как увеличить быстродействие контроллера? В паспорте написано что мах. частота вращения вала 10000об/мин и выходного сигнала 2,5МГц Что если для увеличения быстродействия сигнал канала А подать на int0 и counter1, а сигнал канала B на int1 и counter3? Почти аппаратное решение без всяких затрат :-). Кстати, откуда 2.5 МГц, если 2500*10000/60=416667=417кГц максимум? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PaulB 0 11 мая, 2010 Опубликовано 11 мая, 2010 · Жалоба Натолкнули меня на идею использовать D-триггер, а в прошивке домножать на коэффициент деления. Что думаете по этому поводу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=GM= 0 11 мая, 2010 Опубликовано 11 мая, 2010 · Жалоба Ну так, timer/counter1 и есть цепочка D-триггеров. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PaulB 0 11 мая, 2010 Опубликовано 11 мая, 2010 · Жалоба В паспорте на датчик рекомендуется использовать ИС AM26LS32 и AM26C32, но толком не чего на них найти не могу. Может кто нибудь работал с ними или знает о них что нибудь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NullPointer 0 11 мая, 2010 Опубликовано 11 мая, 2010 · Жалоба ..AM26LS32 и AM26C32 ..кто нибудь работал с ними или знает о них что нибудь?А что конкретно интересует? Это всего лишь приёмники дифференциального сигнала (пара A+\A- в один A), они ничего не считают. Даташиты Google укажет при поиске по названию м\с. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PaulB 0 12 мая, 2010 Опубликовано 12 мая, 2010 · Жалоба Да даташиты в основном все на буржуйском. Рас они ничего несчитают, то к чорту их. Значит надо какуюто схему на логике искать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться