В процессе изучения китайских реплик STM мне понадобилось подключить энкодер.
Предпочитаемый мной блок от Андрея (Dryundel) заругался на не поддерживаемый контроллер. Еще один вариант (сорян, не помню чей) тоже "не взлетел".
На github нашел несколько вариантов для stm, но тоже не сложилось. Или не четкая работа и/или нужны знания, которых у меня нет.
В результате набросал вариант без привязки к типу контроллера. Решение примитивное и прошу понимающих не кидаться какахами (...он играет как умеет).
Для нормальной работы необходимо соблюсти 2 условия:
1) пин, к которому будет подключен канал А должен поддерживать прерывание (и описание функции прерывания стандартны для ардуино)
2) желательно сделать физическую подтяжку входов к "+" и шунтировать их на "-" конденсорами малой емкости (т. е. исключить дребезг контактов)
Да, это колхоз и костыль. И такое решение нельзя считать нормальным и приведет к ускоренному износу энкодера.
Но мне "приспичило", а на безрыбье...) Инструкция в описании.
Отправлено спустя 2 часа 27 секунд:
Демка работы такого примера. В программе обновление экрана в каждом цикле (SPI).
https://youtu.be/ZF5rk6U2u38
Примитивный энкодер
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Примитивный энкодер
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
Примитивный энкодер
МНЕ тоже понадобился блок для стм32, я делал на этой библиотеке
выложил сюда лишним не будет.
ну и сам блок
работает отлично. единственно надо в блоке пины менять .выложил сюда лишним не будет.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Примитивный энкодер
Посмотрел библиотеку.
Насколько мне хватает познаний, в ней не используются прерывания (а только блокируются другие на момент выполнения функции чтения).
Допускаю, что при больших значениях времени цикла программы, возможны пропуски считывания.
А по сути, мой блок работает по такому же принципу (самому примитивному), только с использованием прерывания и без отдельной бибки.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
-
- Подполковник
- Сообщения: 1202
- Зарегистрирован: 14 фев 2016, 14:16
- Откуда: kazahstan
- Благодарил (а): 32 раза
- Поблагодарили: 6 раз
Примитивный энкодер
да вроде программа для станка написана пропусков вроде нету и занимает 80% места в контроллере .ставить только буду не знаю когда я в отпуске первую версию делал на уно там пропуски если скорость больше делать .Ingwar писал(а): 13 фев 2023, 16:46 в ней не используются прерывания (а только блокируются другие на момент выполнения функции чтения).
а самое главное конденсаторы не нужны.завтра буду енкодер оптический подключать пока китайским кручу ручным.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость