Три энкодера.

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
Prolog
Вымогатель припоя
Сообщения: 623
Зарегистрирован: Вт окт 06, 2009 18:35:13
Откуда: Молдавия, Кишинев

Три энкодера.

Сообщение Prolog »

Здравствуйте. Есть задача как-то прикрутить три энкодера на один чип. Один для ручного ввода данных, остальные два управляются механикой. Проблема в том что у чипа только один вход прерывания. Для первого энкодера точность не так уж важна, вторые два должны отрабатывать идеально бит в бит. Как это можно реализовать.
Реклама
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Три энкодера.

Сообщение Пока_без_кота »

Использовать алгоритм не привязанный ко входам прерываний.
Реклама
Аватара пользователя
Prolog
Вымогатель припоя
Сообщения: 623
Зарегистрирован: Вт окт 06, 2009 18:35:13
Откуда: Молдавия, Кишинев

Re: Три энкодера.

Сообщение Prolog »

Это как? Опишите примерно.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Три энкодера.

Сообщение Albert_V »

Prolog, не знаю под какой PIC контроллер вы пишите программу, но я бы под работу с энкодерами выделил бы отдельный таймер (прерывания по таймеру; приоритет выше системного; время что-то типа 20µS) и по нему опрашивал бы выводы энкодеров.
Если делать программу на ASM - там получится не много строк.
С INT-ами (по входу) связываться не советую, поскольку от "дребезга" избавиться не получится.
Но, как говорится, у каждого свои методы решения задач...
Реклама
Эиком - электронные компоненты и радиодетали
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

Re: Три энкодера.

Сообщение -=Vovka=- »

А если такой вариант: три энкодера через диоды посадить на прерывание, а каждый энкодер на отдельную ногу МК.
Суть: пришло прерывание - смотрим, на какой ноге появился сигнал
Реклама
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Три энкодера.

Сообщение Albert_V »

-=Vovka=- писал(а):А если такой вариант:...
Два вопроса:
1. Как решите проблему с "дребезгом"?
2. Уверены что прерывания по "дребезгу" оставят время на выполнение основной программы?
Реклама
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Три энкодера.

Сообщение Пока_без_кота »

Я тоже сперва хотел предложить такой вариант (с подключением ко входу внешнего прерывания через развязывающие диоды), как второй возможный, но определение направления вращения при использовании внешнего прерывания как раз завязано на опрос состояния второго пина. И получается неоднозначность. Тоесть возникло прерывание - смотрим состояние второго пина: если высокий уровень - крутится в одну сторону, если низкий - в другую. Ну так оно может быть например высоким не потому что мы 1 энкодером крутим вправо, а потому что он неподвижен, а прерывание возникло потому, что 2 энкодер мы крутим например влево))
А дребезг при использовании внешнего прерывания в принципе неплохо лечится конденсаторами. Но я это пробовал только для механического инкрементального энкодера, который крутим ручками, для всяких крутых высокооборотистых опыта приминения нет.

П.С. Насчет алгоритма без приминения внешних прерываний - поищите описание агоритма от Ридико (кажется). Краткий смысл - запоминаете состояние, и делаете опрос по таймеру, как предложил Albert_V (достаточно часто, чтобы Вам хватало, но и достаточно редко, чтобы исключить друбезг), если состояние стало другое, определяете направление вращения. Заодно отсекаете невозможные состояния (а они есть). К сожаления готового кода под ПИКи нет, игрался, когда писал под MCS-51, это сечас как то но ПИКи потянуло :)))
Аватара пользователя
Prolog
Вымогатель припоя
Сообщения: 623
Зарегистрирован: Вт окт 06, 2009 18:35:13
Откуда: Молдавия, Кишинев

Re: Три энкодера.

Сообщение Prolog »

Пишу под PIC16F877, тактовая 10МГц. Насколько понял алгоритм такой: срабатывает прерывание по таймеру, смотрим состояние входов, если например in1=1 AND in2=0 --> var=var+1 и наоборот in1=0 AND in2=1 --> var=var-1 , а как быть если пошло следующее прерывание а энкодер ещё не поменял значение или наоборот уже проскочил. Частота вращения постоянно меняется. Кроме того чип сильно загружен - слушает кнопки, 4 АЦП, выводит данные на экранчик, управляет 10 выходами где тоже важна точность срабатывания.
-=Vovka=- писал(а):А если такой вариант: три энкодера через диоды посадить на прерывание
Хех, интересный вариант только не совсем понятный...
В первом варианте у меня энкодер работал так: одна нога на INT вторая на ногу МК (переменная n).
Срабатывает прерывание, смотрим состояние второй ноги - if n=1 прибавляем значение if n=0 отнимаем.
Albert_V писал(а):Как решите проблему с "дребезгом"?
У меня энкодеры без дребезга.
https://ru.aliexpress.com/item/1pcs-E6B ... .10.9H01hX
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 359
Зарегистрирован: Чт авг 08, 2013 01:06:54

Re: Три энкодера.

Сообщение Пока_без_кота »

Prolog писал(а):... а как быть если пошло следующее прерывание а энкодер ещё не поменял значение или наоборот уже проскочил...
Период опроса по таймеру должен быть меньше времени между сменой 2 ближайших состояний.
А вообще, в вашем случае (2 и больше высокооборотистых энкодера), я бы повесил все 3 энкодера на 3 старших линии порта В, и насторил бы прерывание по изминению состояния. Но более опытные люди могут подсказать и чего получше.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Три энкодера.

Сообщение Albert_V »

Prolog писал(а):...Пишу под PIC16F877, тактовая 10МГц...
Здесь вариантов мало.
Не хотите перейти на 18-ую серию?
Prolog писал(а):...У меня энкодеры без дребезга....
Ага.
Выберите положение энкодера "на грани щелчка" и убедитесь что не будет "лишних" импульсов....
Vano79
Открыл глаза
Сообщения: 60
Зарегистрирован: Пт янв 11, 2013 10:54:43

Re: Три энкодера.

Сообщение Vano79 »

Аватара пользователя
Prolog
Вымогатель припоя
Сообщения: 623
Зарегистрирован: Вт окт 06, 2009 18:35:13
Откуда: Молдавия, Кишинев

Re: Три энкодера.

Сообщение Prolog »

Albert_V писал(а):Не хотите перейти на 18-ую серию?
А что посоветуете из 18-ых?
Albert_V писал(а):Выберите положение энкодера "на грани щелчка" и убедитесь что не будет "лишних" импульсов....
Сам энкодер со встроенной "умной" схемой и не допускает дребезга т.е. полностью проходит цикл 00 10 11 01 00. "На грани щелчка" его трудновато выставить, всё таки 2000 импульсов на один оборот.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Три энкодера.

Сообщение Albert_V »

Prolog писал(а):А что посоветуете из 18-ых?...
Сложно что-то советовать не зная полного ТЗ.
Надо, вначале, определиться с напряжением питания контроллера (3,3V или 5V), расписать какая периферия (в контроллере) необходима, прикинуть какая математика (8 или 16 бит) нужна, требуется ли DMA и т.д.
К тому же, я не знаю что вы можете купить в ваших магазинах (я ориентируюсь на Тритон).
Если из 18-ых - рассмотрите PIC18F46K22.
Хотя, если я правильно вас понял, на мой взгляд наиболее оптимальным в вашем изделии был бы PIC24FJ64GB004 (из того, что есть в наличии в Тритоне).
Но, это лично моё мнение...
Аватара пользователя
Prolog
Вымогатель припоя
Сообщения: 623
Зарегистрирован: Вт окт 06, 2009 18:35:13
Откуда: Молдавия, Кишинев

Re: Три энкодера.

Сообщение Prolog »

Попробую примерно описать ТЗ. Это будет производственная линия по изготовлению металлоизделий. Сначала сырая стальная лента заражается в прокаточные валы. Валы крутит двигатель с редуктором управляемый частотником. Тензодатчики (4 АЦП) постоянно контролируют нужную силу прокатки. Далее формованная лента проходит через вал с энкодером и отсчитывает нужную длину (погрешность +- 0.1мм), поступает в пробивной пресс. Пресс пробивает отверстия (количество отверстий и расстояние между каждым отверстием задаются в ручную). Затем срабатывает гильотина и отрубает изделие. Изделие поступает на гибочный станок где второй знкодер следит за радиусом загиба (опять-же погрешность +- 1градус). МК так-же смотрит за наличием ленты в валах, текущим состоянием пресса, гильотины и гибочного что-бы не зажевало металл, считает количество изделий и выводит все данные на экран. Если где-то происходит сбой вся линия тормозится и на экран выводится сообщение где произошла ошибка.
Аватара пользователя
Albert_V
Друг Кота
Сообщения: 4119
Зарегистрирован: Чт сен 12, 2013 00:54:12
Откуда: ЗаМКАДье. Там, где ЦУП

Re: Три энкодера.

Сообщение Albert_V »

Выкладывайте блок-схему (с разрисовкой линий входов и управления) но, чую, что "подходим" к PIC24 (16bit).
-=Vovka=-
Опытный кот
Сообщения: 844
Зарегистрирован: Пн апр 11, 2011 10:08:52

Re: Три энкодера.

Сообщение -=Vovka=- »

Prolog, может имеет смысл для каждого станка свой МК, объединив их в сеть?
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: Три энкодера.

Сообщение botchin »

Здесь просто плачет для промъшленного контроллера. И цена уже не будет как для 16F877, а на порядок два-три въше. Но за то получите работающая линия, а не куча (ряд) машин.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Аватара пользователя
Prolog
Вымогатель припоя
Сообщения: 623
Зарегистрирован: Вт окт 06, 2009 18:35:13
Откуда: Молдавия, Кишинев

Re: Три энкодера.

Сообщение Prolog »

-=Vovka=- писал(а):может имеет смысл для каждого станка свой МК, объединив их в сеть?
Думал и об этом но вопрос по поводу энкодеров всё равно остаётся. Получается к главному МК подключаются только два энкодера - ручной ввод и считывание длины ленты.

Добавлено after 3 minutes 7 seconds:
botchin писал(а):И цена уже не будет как для 16F877, а на порядок два-три въше
Угу, 2.5 килобакса :roll: . Я уж лучше немного помучаюсь с рассыпухой.
Аватара пользователя
maxlab
Мучитель микросхем
Сообщения: 480
Зарегистрирован: Вт апр 23, 2013 22:21:18
Откуда: KUBAN, Krasnodar

Re: Три энкодера.

Сообщение maxlab »

Здраствуйте. В одном из своих древних проектов я боролся с дребезгом как во вложенной схеме. Спасало на всех мех. энкодерах.
Скорость реакции регулируется RC цепочкой. Может наведет на какие мысли... ?
Вложения
sintez_v2.pdf
(143.79 КБ) 197 скачиваний
Девице - Device
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

Re: Три энкодера.

Сообщение Zhuk72 »

Это не тот случай. У меня на обычном энкодере вообще без конденсаторов дребезгов (ложных срабатываний) нет ни при каких "ручных" скоростях.
Но тут станок, совсем другие скорости, я полагаю, поэтому обычные методы наверное не сработают.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Ответить

Вернуться в «PIC»