Три энкодера.
- Prolog
- Вымогатель припоя
- Сообщения: 623
- Зарегистрирован: Вт окт 06, 2009 18:35:13
- Откуда: Молдавия, Кишинев
Три энкодера.
Здравствуйте. Есть задача как-то прикрутить три энкодера на один чип. Один для ручного ввода данных, остальные два управляются механикой. Проблема в том что у чипа только один вход прерывания. Для первого энкодера точность не так уж важна, вторые два должны отрабатывать идеально бит в бит. Как это можно реализовать.
- Реклама
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Три энкодера.
Использовать алгоритм не привязанный ко входам прерываний.
- Prolog
- Вымогатель припоя
- Сообщения: 623
- Зарегистрирован: Вт окт 06, 2009 18:35:13
- Откуда: Молдавия, Кишинев
Re: Три энкодера.
Это как? Опишите примерно.
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Три энкодера.
Prolog, не знаю под какой PIC контроллер вы пишите программу, но я бы под работу с энкодерами выделил бы отдельный таймер (прерывания по таймеру; приоритет выше системного; время что-то типа 20µS) и по нему опрашивал бы выводы энкодеров.
Если делать программу на ASM - там получится не много строк.
С INT-ами (по входу) связываться не советую, поскольку от "дребезга" избавиться не получится.
Но, как говорится, у каждого свои методы решения задач...
Если делать программу на ASM - там получится не много строк.
С INT-ами (по входу) связываться не советую, поскольку от "дребезга" избавиться не получится.
Но, как говорится, у каждого свои методы решения задач...
Re: Три энкодера.
А если такой вариант: три энкодера через диоды посадить на прерывание, а каждый энкодер на отдельную ногу МК.
Суть: пришло прерывание - смотрим, на какой ноге появился сигнал
Суть: пришло прерывание - смотрим, на какой ноге появился сигнал
- Реклама
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Три энкодера.
Два вопроса:-=Vovka=- писал(а):А если такой вариант:...
1. Как решите проблему с "дребезгом"?
2. Уверены что прерывания по "дребезгу" оставят время на выполнение основной программы?
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Три энкодера.
Я тоже сперва хотел предложить такой вариант (с подключением ко входу внешнего прерывания через развязывающие диоды), как второй возможный, но определение направления вращения при использовании внешнего прерывания как раз завязано на опрос состояния второго пина. И получается неоднозначность. Тоесть возникло прерывание - смотрим состояние второго пина: если высокий уровень - крутится в одну сторону, если низкий - в другую. Ну так оно может быть например высоким не потому что мы 1 энкодером крутим вправо, а потому что он неподвижен, а прерывание возникло потому, что 2 энкодер мы крутим например влево))
А дребезг при использовании внешнего прерывания в принципе неплохо лечится конденсаторами. Но я это пробовал только для механического инкрементального энкодера, который крутим ручками, для всяких крутых высокооборотистых опыта приминения нет.
П.С. Насчет алгоритма без приминения внешних прерываний - поищите описание агоритма от Ридико (кажется). Краткий смысл - запоминаете состояние, и делаете опрос по таймеру, как предложил Albert_V (достаточно часто, чтобы Вам хватало, но и достаточно редко, чтобы исключить друбезг), если состояние стало другое, определяете направление вращения. Заодно отсекаете невозможные состояния (а они есть). К сожаления готового кода под ПИКи нет, игрался, когда писал под MCS-51, это сечас как то но ПИКи потянуло
А дребезг при использовании внешнего прерывания в принципе неплохо лечится конденсаторами. Но я это пробовал только для механического инкрементального энкодера, который крутим ручками, для всяких крутых высокооборотистых опыта приминения нет.
П.С. Насчет алгоритма без приминения внешних прерываний - поищите описание агоритма от Ридико (кажется). Краткий смысл - запоминаете состояние, и делаете опрос по таймеру, как предложил Albert_V (достаточно часто, чтобы Вам хватало, но и достаточно редко, чтобы исключить друбезг), если состояние стало другое, определяете направление вращения. Заодно отсекаете невозможные состояния (а они есть). К сожаления готового кода под ПИКи нет, игрался, когда писал под MCS-51, это сечас как то но ПИКи потянуло
- Prolog
- Вымогатель припоя
- Сообщения: 623
- Зарегистрирован: Вт окт 06, 2009 18:35:13
- Откуда: Молдавия, Кишинев
Re: Три энкодера.
Пишу под PIC16F877, тактовая 10МГц. Насколько понял алгоритм такой: срабатывает прерывание по таймеру, смотрим состояние входов, если например in1=1 AND in2=0 --> var=var+1 и наоборот in1=0 AND in2=1 --> var=var-1 , а как быть если пошло следующее прерывание а энкодер ещё не поменял значение или наоборот уже проскочил. Частота вращения постоянно меняется. Кроме того чип сильно загружен - слушает кнопки, 4 АЦП, выводит данные на экранчик, управляет 10 выходами где тоже важна точность срабатывания.
В первом варианте у меня энкодер работал так: одна нога на INT вторая на ногу МК (переменная n).
Срабатывает прерывание, смотрим состояние второй ноги - if n=1 прибавляем значение if n=0 отнимаем.
https://ru.aliexpress.com/item/1pcs-E6B ... .10.9H01hX
Хех, интересный вариант только не совсем понятный...-=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: Три энкодера.
Период опроса по таймеру должен быть меньше времени между сменой 2 ближайших состояний.Prolog писал(а):... а как быть если пошло следующее прерывание а энкодер ещё не поменял значение или наоборот уже проскочил...
А вообще, в вашем случае (2 и больше высокооборотистых энкодера), я бы повесил все 3 энкодера на 3 старших линии порта В, и насторил бы прерывание по изминению состояния. Но более опытные люди могут подсказать и чего получше.
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Три энкодера.
Здесь вариантов мало.Prolog писал(а):...Пишу под PIC16F877, тактовая 10МГц...
Не хотите перейти на 18-ую серию?
Ага.Prolog писал(а):...У меня энкодеры без дребезга....
Выберите положение энкодера "на грани щелчка" и убедитесь что не будет "лишних" импульсов....
- Prolog
- Вымогатель припоя
- Сообщения: 623
- Зарегистрирован: Вт окт 06, 2009 18:35:13
- Откуда: Молдавия, Кишинев
Re: Три энкодера.
А что посоветуете из 18-ых?Albert_V писал(а):Не хотите перейти на 18-ую серию?
Сам энкодер со встроенной "умной" схемой и не допускает дребезга т.е. полностью проходит цикл 00 10 11 01 00. "На грани щелчка" его трудновато выставить, всё таки 2000 импульсов на один оборот.Albert_V писал(а):Выберите положение энкодера "на грани щелчка" и убедитесь что не будет "лишних" импульсов....
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Три энкодера.
Сложно что-то советовать не зная полного ТЗ.Prolog писал(а):А что посоветуете из 18-ых?...
Надо, вначале, определиться с напряжением питания контроллера (3,3V или 5V), расписать какая периферия (в контроллере) необходима, прикинуть какая математика (8 или 16 бит) нужна, требуется ли DMA и т.д.
К тому же, я не знаю что вы можете купить в ваших магазинах (я ориентируюсь на Тритон).
Если из 18-ых - рассмотрите PIC18F46K22.
Хотя, если я правильно вас понял, на мой взгляд наиболее оптимальным в вашем изделии был бы PIC24FJ64GB004 (из того, что есть в наличии в Тритоне).
Но, это лично моё мнение...
- Prolog
- Вымогатель припоя
- Сообщения: 623
- Зарегистрирован: Вт окт 06, 2009 18:35:13
- Откуда: Молдавия, Кишинев
Re: Три энкодера.
Попробую примерно описать ТЗ. Это будет производственная линия по изготовлению металлоизделий. Сначала сырая стальная лента заражается в прокаточные валы. Валы крутит двигатель с редуктором управляемый частотником. Тензодатчики (4 АЦП) постоянно контролируют нужную силу прокатки. Далее формованная лента проходит через вал с энкодером и отсчитывает нужную длину (погрешность +- 0.1мм), поступает в пробивной пресс. Пресс пробивает отверстия (количество отверстий и расстояние между каждым отверстием задаются в ручную). Затем срабатывает гильотина и отрубает изделие. Изделие поступает на гибочный станок где второй знкодер следит за радиусом загиба (опять-же погрешность +- 1градус). МК так-же смотрит за наличием ленты в валах, текущим состоянием пресса, гильотины и гибочного что-бы не зажевало металл, считает количество изделий и выводит все данные на экран. Если где-то происходит сбой вся линия тормозится и на экран выводится сообщение где произошла ошибка.
- Albert_V
- Друг Кота
- Сообщения: 4119
- Зарегистрирован: Чт сен 12, 2013 00:54:12
- Откуда: ЗаМКАДье. Там, где ЦУП
Re: Три энкодера.
Выкладывайте блок-схему (с разрисовкой линий входов и управления) но, чую, что "подходим" к PIC24 (16bit).
Re: Три энкодера.
Prolog, может имеет смысл для каждого станка свой МК, объединив их в сеть?
- botchin
- Поставщик валерьянки для Кота
- Сообщения: 2029
- Зарегистрирован: Чт дек 27, 2012 20:46:09
- Откуда: Болгария, г. Лом
Re: Три энкодера.
Здесь просто плачет для промъшленного контроллера. И цена уже не будет как для 16F877, а на порядок два-три въше. Но за то получите работающая линия, а не куча (ряд) машин.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
- Prolog
- Вымогатель припоя
- Сообщения: 623
- Зарегистрирован: Вт окт 06, 2009 18:35:13
- Откуда: Молдавия, Кишинев
Re: Три энкодера.
Думал и об этом но вопрос по поводу энкодеров всё равно остаётся. Получается к главному МК подключаются только два энкодера - ручной ввод и считывание длины ленты.-=Vovka=- писал(а):может имеет смысл для каждого станка свой МК, объединив их в сеть?
Добавлено after 3 minutes 7 seconds:
Угу, 2.5 килобаксаbotchin писал(а):И цена уже не будет как для 16F877, а на порядок два-три въше
- maxlab
- Мучитель микросхем
- Сообщения: 480
- Зарегистрирован: Вт апр 23, 2013 22:21:18
- Откуда: KUBAN, Krasnodar
Re: Три энкодера.
Здраствуйте. В одном из своих древних проектов я боролся с дребезгом как во вложенной схеме. Спасало на всех мех. энкодерах.
Скорость реакции регулируется RC цепочкой. Может наведет на какие мысли... ?
Скорость реакции регулируется RC цепочкой. Может наведет на какие мысли... ?
- Вложения
-
- sintez_v2.pdf
- (143.79 КБ) 197 скачиваний
Девице - Device
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: Три энкодера.
Это не тот случай. У меня на обычном энкодере вообще без конденсаторов дребезгов (ложных срабатываний) нет ни при каких "ручных" скоростях.
Но тут станок, совсем другие скорости, я полагаю, поэтому обычные методы наверное не сработают.
Но тут станок, совсем другие скорости, я полагаю, поэтому обычные методы наверное не сработают.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


