КУЛИБИН ПОМОГИТЕ Энкодер с выводом на ЛСД 1602

Код для ATMega8 и подобных где прерывания int0&int1 висят на пинах PIND.2 PIND.3
Памяти задействовано всего один байт под temp и всего 3 регистра под всю обработку!
Ни чего не мешает опрашивать по таймеру любые другие ноги любой AVR. Нужно всего лишь сравнивать результат после 4 строки кода и пропускать если не было вращения.
!ldi r16,2 ;
!sbis PIND,3 ;если ноль...
!clr r16 ;стереть
!sbic PIND,2 ;если единица...
!inc r16 ;+1
!LDS r18,{temp} ;взять предыдущее состояние
!ldi r17,4 ;множитель
!mul r18,r17 ;умножить на 4> результат в R0
!sts {temp},r16 ;сохранить для следующей обработки
!ADD r16,r0 ;сложить текущее с предыдущим*4
!inc r16 ;результат для поиска в таблице;)
;как взять байт с таблицы не пишу.
!Val_: ; таблица состояний
! Data 2 , 2 , 1 , 0 , 2 , 0 , 2 , 2 , 1 , 1 , 2 , 2 , 0 , 2 , 0 , 1
!RET
Вращение влево>5,3,12,14,5,3,12,14 и так далее
Вращение вправо>9,2,8,15,9,2,8,15
Любое отличие от кода Грея (например дребезг контактов если валкод механический) будет всегда давать двойку выбранную в таблице. 0 и 1 истинные состояния.

PS:готов выслушать поэтов-шутников с примером кода обработки валкодера компактнее и быстрее.
 
  • Последнее редактирование:
Последнее редактирование:
Закрались смутные сомнения
Речь идет за оптический инкрементальный энкодер LPD3806-600BM-G5-24C
Хотел сперва уточнить его подключении к Ардуино
1703044070917.png
Сомнения возникли когда увидел схему включения
wiring.jpg

В данной схеме прямое включение к плате Ардуино.
Далее во всезнающем Яндексе заметил разброд в величине подтягивающих резисторов.
На пример вчера на видео в обзоре за энкодер было обозначено сопротивление 15 кОм
А на одном из форумов
1703045258765.png
(пытался если перейти по ссылке -не работает. там похоже сервер слёг)
Нашел кое что похожее на даташит. В нем указано сопротивление 10 кОм
Глядя на всё это я прихожу к выводу о том, что величина сопротивления резистора зависит от величины подводимого напряжения питания.
В моем случае напряжение будет не выше 5В.
С другой стороны! Отдельно про подтягивающие резисторы.
Известно, что ряд контроллеров имеет встроенные подтягивающие резисторы.
1703048645135.png
Если подключается к нему устройство с подтягивающим резистором, то при параллельном включении резисторов общее сопротивление будет значительно меньше
1703046925989.png
В таком случае может стоит согласиться с решением приведённым в схеме выше?
Я не бог весть какой знаток Ардуино и за это прошу прощения.
И вот еще скри видео
1703053041310.png
 
Если подключается к нему устройство с подтягивающим резистором, то при параллельном включении резисторов общее сопротивление будет значительно меньше
У таких валкодеров выходы открытый коллектор и ток нагрузки до 100мА. Исходя из этого можете прикинуть какой нужен резистор для нагрузки.:) Ни когда не цеплял внешние подтягивающие резисторы. Достаточно встроенных в атмеги.

PS: по питанию в них стоит стабилизатотр пятивольтовый. По этому питают их от 7 вольт и больше. При питании 5 вольт попадались экземпляры которые пропускали шаги. Тогда открывал его и закорачивал вход-выход кренки.
 
Тут есть немного подключений всяких... :cautious:
 
Тут есть немного подключений всяких... :cautious:
Ну да! Я и на эиом сайте смотрел. Есть схемы с резисторами 4,7 и 10 кОм, а также без них. Хорошо нет схем с проходными резисторами на 100 или 510 ом.
Так што пока погодю. Еще не все активные тут вновь собрались.
 
Еще не все активные тут вновь собрались.
Наблюдаю... Насчет резисторов, тут без разницы, от 510 Ом до 20кОм,от этого зависит только помехоустойчивость при длинной линии, чем меньше номинал тем выше помехоустойчивость. Больше должна заботить организация считывания, программная или на аппаратных прерываниях и способу обработки считываемых сигналов. Аппаратные прерывания можно строить по типу двух прерыванй по соответствующим каналам либо по способу STEP/DIR, где по одному каналу работает вход прерывания, а в обработчике считывается текущее состояние другого канала и тем определяется направление счета. Для низких скоростей допустимо использовать и программный обработчик (по опросу входов) по программным прерываниям.
 
Ну да! Я и на эиом сайте смотрел. Есть схемы с резисторами 4,7 и 10 кОм, а также без них. Хорошо нет схем с проходными резисторами на 100 или 510 ом.
Так што пока погодю. Еще не все активные тут вновь собрались.
Ставь 15, если не заработает поставишь 10 и т.д
ПС. Отметился в активных, чтобы в пассивные не записали.
 
Наблюдаю... Насчет резисторов, тут без разницы, от 510 Ом до 20кОм,от этого зависит только помехоустойчивость при длинной линии, чем меньше номинал тем выше помехоустойчивость. Больше должна заботить организация считывания, программная или на аппаратных прерываниях и способу обработки считываемых сигналов. Аппаратные прерывания можно строить по типу двух прерыванй по соответствующим каналам либо по способу STEP/DIR, где по одному каналу работает вход прерывания, а в обработчике считывается текущее состояние другого канала и тем определяется направление счета. Для низких скоростей допустимо использовать и программный обработчик (по опросу входов) по программным прерываниям.
1. Проходной, это когда с выхода энкодера на вход контроллера.
2. Скорость вращения 62 оборота в минуту - максимальная. Минимальная 31 оборот.
Энкодер присоединяется к зубчатому колесу редуктора и к нему же ходовой винт.

S8864a69599a6472d95b2e0c77b14c16cl.jpg
 
1. Проходной, это когда с выхода энкодера на вход контроллера.
2. Скорость вращения 62 оборота в минуту - максимальная. Минимальная 31 оборот.
Энкодер присоединяется к зубчатому колесу редуктора и к нему же ходовой винт.

S8864a69599a6472d95b2e0c77b14c16cl.jpg
Проходной резистор не более,чем 1/20 подтягивающего, он только для гашения паразитных колебаний от отражений и то только на высоких скоростях нарастания, а значит, в данном случае необязателен вообще. У вас скорость шаговика около 1200 об/мин должна получиться? Это не для Ардуины, с неё больше 400 об/мин не получите.
 
Это не для Ардуины, с неё больше 400 об/мин не получите.
А больше делать не стоит. Я поэкспериментировал с китайскими НЕМА17, у них момент сильно падает при скоростях выше 500 об/мин.
 
  • Последнее редактирование:
Последнее редактирование:
Проходной резистор не более,чем 1/20 подтягивающего, он только для гашения паразитных колебаний от отражений и то только на высоких скоростях нарастания, а значит, в данном случае необязателен вообще. У вас скорость шаговика около 1200 об/мин должна получиться? Это не для Ардуины, с неё больше 400 об/мин не получите.
Я Вас разочарую! нет ни каких шаговиков, обычный щеточный. Управление кнопочное "Нажал - отпустил". На ардуино только линейка по двум осям.
Если быть точнее с передаточным числом, то: Передаточное число редуктора составляет около 1:300, передаточное число выходной червячной передачи составляет 1:20.
Это для заточного - шлифовального.
Макет:
1703099700875.png

Параллельно дорабатываю вариант с ШД с планетарным 10:1. Тоже 2 оси. 3-ю ось попробую двигать пневмоцилиндром примерно такой модели
1703100498464.png
Это чисто под плоскошлиф.
 
  • Последнее редактирование:
Последнее редактирование:
А я думал, что поставит дядя Вова ШД с управлением от ардуины на червячную передачу. И назовет все это "червякеино". :D
И тут разочарую. Плоскошлиф будет на AT89s51. На ШД версия коммерческая. А на обычных двигунах чисто для собственных нужд по инструменталке и хобби.
 
Это не для Ардуины, с неё больше 400 об/мин не получите.
Почему? Шаговики крутить через драйвер задача простейшая. Всего двумя линиями управлять которые на драйвер. 400\60 сек=20 герц частота смены состояния. На мегагерце тактовой меги можно получить раз в 50 больше с учётом обработок и прочего.
 
Почему? Шаговики крутить через драйвер задача простейшая. Всего двумя линиями управлять которые на драйвер. 400\60 сек=20 герц частота смены состояния. На мегагерце тактовой меги можно получить раз в 50 больше с учётом обработок и прочего.
Потому что... :p
...у них момент сильно падает при скоростях выше 500 об/мин.
 
Сверху Снизу
Обнаружен блокировщик рекламы AdBlock

МЫ ДОГАДЫВАЕМСЯ, ЧТО РЕКЛАМА ВАС РАЗДРАЖАЕТ!

Конечно, Ваше программное обеспечение для блокировки рекламы отлично справляется с блокировкой рекламы на нашем сайте, но оно также блокирует полезные функции. Мы стараемся для Вас и не обязываем Вас донатить и скидывать денег на наши кошельки, чтобы пользоваться форумом, но реклама это единственное, что позволяет поддерживать проект и развивать его.

Спасибо за Ваше понимание!

Я отключил свой AdBlock    Нет, я не буду ничего отключать