Набор блоков ЭНКОДЕР

Пользовательские блоки расширяющие базовый функуионал программы по работе с различными датчиками и энкодерами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2465
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 8 раз
Поблагодарили: 35 раз

Набор блоков ЭНКОДЕР

Сообщение Dryundel »

[ref]Олега[/ref], Вы попробовали 3.0.1 ?
Работает? Замораживает значение через En?
Олега
Рядовой
Сообщения: 3
Зарегистрирован: 09 янв 2018, 21:29
Имя: Олег

Набор блоков ЭНКОДЕР

Сообщение Олега »

Попробовал Plus v 3.0.1 Да!! этот действительно работает так как мне надо. Значения замораживаются. все отлично! Спасибо за блок. Удачи :smile9:
starik2000
Рядовой
Сообщения: 14
Зарегистрирован: 04 мар 2020, 11:40
Имя: Павел

Набор блоков ЭНКОДЕР

Сообщение starik2000 »

может кто поделится блоком енкодера на 8266. Сколько перепробовал - ни один не работает
Andrejka
Рядовой
Сообщения: 40
Зарегистрирован: 13 дек 2018, 19:40
Имя: Андрей

Набор блоков ЭНКОДЕР

Сообщение Andrejka »

starik2000 писал(а): 05 мар 2020, 22:16 может кто поделится блоком енкодера на 8266. Сколько перепробовал - ни один не работает
Добрый день. Вот рабочий проект в FLPROG 6.31, правда IDE брал от FLROG 5.3 (V1.8.9).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Goosr
Сержант
Сообщения: 184
Зарегистрирован: 07 июн 2016, 08:25
Откуда: Тольятти
Имя: Дмитрий

Набор блоков ЭНКОДЕР

Сообщение Goosr »

Хоть тема старая, но спрошу.
Какую частоту входящих импульсов от энкодера может обработать uno, mega или due?
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

Набор блоков ЭНКОДЕР

Сообщение Di123 »

у блока есть минус
он не понимает что нужно остановится
2020-07-01_180457.png
мне нужны импулься от 0-100 что мне и выделяет блок лимита
но стоит при достижении 100 убежать чуть дальше как при попытке начать крутить обратно он не убавляет пока ручка не врнётся в положении 100 и только тогда начнёт убавляться
тоесть каждый раз приходится искать значние 100 при убавлении а точнее предвкушать его что вот вот оно начнёт убавляться
в общем это чуство поиска напрягает :smile37:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Набор блоков ЭНКОДЕР

Сообщение Ingwar »

Попробуйте этот
[spoiler]
Безымянный.png
[/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

Набор блоков ЭНКОДЕР

Сообщение Di123 »

я встречал там похожий 3,1
но нет информации по нему и остановился пока на этом
Andrejka
Рядовой
Сообщения: 40
Зарегистрирован: 13 дек 2018, 19:40
Имя: Андрей

Набор блоков ЭНКОДЕР

Сообщение Andrejka »

Добрый день. Прошу поделиться блоком для ESP33, не смог найти.

Отправлено спустя 1 минуту 45 секунд:
Andrejka писал(а): 02 июл 2020, 08:14 Добрый день. Прошу поделиться блоком для ESP33, не смог найти.
ESP 32..
Аватара пользователя
Davit07
Сержант
Сообщения: 175
Зарегистрирован: 05 янв 2020, 03:39
Откуда: Краснодар
Имя: Давит
Благодарил (а): 7 раз

Набор блоков ЭНКОДЕР

Сообщение Davit07 »

Доброго дня.
Приобрел инкрементальный энкодер (Omron E6B2-CWZ6C, 1000 импульсов , 3х фазный.
Большинство блоком с 2 входами, данный же энкодер 3 выходами (A.B.Z.)
Подскажите, каким блоком можно получить точную скорость вращения с данного энкодера?

Отправлено спустя 3 часа 22 минуты 46 секунд:
Хочу услышать Ваше мнение.
Получиться считать обороты энкодера ?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Davit07
Сержант
Сообщения: 175
Зарегистрирован: 05 янв 2020, 03:39
Откуда: Краснодар
Имя: Давит
Благодарил (а): 7 раз

Набор блоков ЭНКОДЕР

Сообщение Davit07 »

Всем привет.
Парни, подскажите пожалуйста как блоком можно получить точные показание с Энкодер?
Энкодер инкрементальный, выход NPN, фазы A, B, Z, разрешение 1000имп/об, питание 5-24В,Omron E6B2-CWZ6C.
Перелистал форум, попробовал кучу блоков , но без результата :smile390:. Энкодер соединил с ШД для проверки на полним обороте, по показаниям энкодера не хватает несколько десятков импульса, то излишки .
Данным энкодером хочу считывать обороты шпинделя на фрезерном станке, обороты не более 400 об\мин
Прошу Вашей помощи в подборе блока
Всем спасибо
Аватара пользователя
Davit07
Сержант
Сообщения: 175
Зарегистрирован: 05 янв 2020, 03:39
Откуда: Краснодар
Имя: Давит
Благодарил (а): 7 раз

Набор блоков ЭНКОДЕР

Сообщение Davit07 »

[ref]av[/ref], посоветуй решение . Любое ))))
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Набор блоков ЭНКОДЕР

Сообщение Ingwar »

Davit07 писал(а): 05 июл 2020, 18:23 Данным энкодером хочу считывать обороты шпинделя на фрезерном станке, обороты не более 400 об\мин
Если вопрос только в измерении скорости вращения - используйте одну фазу из энкодера и скоростной счетчик...
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Davit07
Сержант
Сообщения: 175
Зарегистрирован: 05 янв 2020, 03:39
Откуда: Краснодар
Имя: Давит
Благодарил (а): 7 раз

Набор блоков ЭНКОДЕР

Сообщение Davit07 »

[ref]av[/ref], [ref]Ingwar[/ref], Парни , спасибо !

Отправлено спустя 18 минут 45 секунд:
К примеру , если с 2х счётчиков суминовать показания и разделить на количество счётчиков , то мы получим среднее показания . Будет ли работать данный блок и не будет запаздывать математическое решение для определение скорости ?
Аватара пользователя
Davit07
Сержант
Сообщения: 175
Зарегистрирован: 05 янв 2020, 03:39
Откуда: Краснодар
Имя: Давит
Благодарил (а): 7 раз

Набор блоков ЭНКОДЕР

Сообщение Davit07 »

[ref]av[/ref], показания счётчика скачут , в характеристиках энкодер на 1000 импульсов на оборот , счётчик нашитует 1337,+- 10 импульсов. Для расчета скорости надо постоянное значение, для этого пытался вывести среднее среднее показания двух счётчиков . Возможно ошибаюсь .
Благодарю за помощь . Буду ломать голову дальше )
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

Набор блоков ЭНКОДЕР

Сообщение Ingwar »

Эх... Вот смотрите ЧТО и КАК считаем. В примере сигнал от генератора, но для примера модифицированый. Частота неизменна и выделена красным. Для вашего варианта примерно 366,6 об/мин.
Пример 1
На входной ноге контроллера (завален фронт)
[spoiler]
ч3.png
[/spoiler]
В программе
[spoiler]
ч1.png
[/spoiler]
Пример 2 (сигнал немного приблизили к правильному)
На входной ноге контроллера
[spoiler]
ч4.png
[/spoiler]
В программе
[spoiler]
ч2.png
[/spoiler]
Это к тому, что для начала нужно сформировать входной сигнал.

Отправлено спустя 19 минут 21 секунду:
Davit07 писал(а): 06 июл 2020, 09:02 пытался вывести среднее среднее показания двух счётчиков . Возможно ошибаюсь .
Не нужно это. Делайте замер не 1 секунду, а 2, 3 или больше и будет Вам точность.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
SSSergeich
Капитан
Сообщения: 708
Зарегистрирован: 06 фев 2016, 11:01
Откуда: Ярославль
Имя: Сергей

Набор блоков ЭНКОДЕР

Сообщение SSSergeich »

Offtop
[spoiler]
Davit07 писал(а): 05 июл 2020, 18:23 Энкодер инкрементальный, выход NPN, фазы A, B, Z, разрешение 1000имп/об, питание 5-24В,Omron E6B2-CWZ6C.
Цена в чипдипе :shok: [/spoiler]
Аватара пользователя
Davit07
Сержант
Сообщения: 175
Зарегистрирован: 05 янв 2020, 03:39
Откуда: Краснодар
Имя: Давит
Благодарил (а): 7 раз

Набор блоков ЭНКОДЕР

Сообщение Davit07 »

av писал(а): 06 июл 2020, 09:32 [ref]Davit07[/ref], чем замеряете обороты вала (соответственно энкодера). Ведь энкодер считывает на один импульс угол поворота вала 0,36 градусов.
Благодарю ещё раз за ответ.
[ref]av[/ref], раскроете Вашу мысль более подробно .
Я понял ,что Вы имеете в виду , но как то не до конца )) понял , но не понял )).

Отправлено спустя 1 минуту 54 секунды:
SSSergeich писал(а): 06 июл 2020, 10:35 Offtop
[spoiler]
Davit07 писал(а): 05 июл 2020, 18:23 Энкодер инкрементальный, выход NPN, фазы A, B, Z, разрешение 1000имп/об, питание 5-24В,Omron E6B2-CWZ6C.
Цена в чипдипе :shok: [/spoiler]
Золотой )))
Покупал в Китае за 1,8р

Отправлено спустя 8 минут :
[ref]Ingwar[/ref], спасибо за развернутый ответ . Буду пробовать .
Замер производил за 100 милилекунд.
Построил такую прибуду для подсчёта сигналов на оборот. Наверно в этом моя ошибка .
[ref]Ingwar[/ref], [ref]av[/ref], спасибо вам за помощь

Отправлено спустя 1 минуту 5 секунд:
Davit07 писал(а): 06 июл 2020, 11:03
av писал(а): 06 июл 2020, 09:32 [ref]Davit07[/ref], чем замеряете обороты вала (соответственно энкодера). Ведь энкодер считывает на один импульс угол поворота вала 0,36 градусов.
Благодарю ещё раз за ответ.
[ref]av[/ref], раскроете Вашу мысль более подробно .
Я понял ,что Вы имеете в виду , но как то не до конца )) понял , но не понял )).

Отправлено спустя 1 минуту 54 секунды:
SSSergeich писал(а): 06 июл 2020, 10:35 Offtop
[spoiler]
Цена в чипдипе :shok: [/spoiler]
Золотой )))
Покупал в Китае за 1,8р

Отправлено спустя 8 минут :
[ref]Ingwar[/ref], спасибо за развернутый ответ . Буду пробовать .
Замер производил за 100 милилекунд.
Построил такую прибуду для подсчёта сигналов на оборот. Наверно в этом моя ошибка .
[ref]Ingwar[/ref], [ref]av[/ref], спасибо вам за помощь
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Davit07
Сержант
Сообщения: 175
Зарегистрирован: 05 янв 2020, 03:39
Откуда: Краснодар
Имя: Давит
Благодарил (а): 7 раз

Набор блоков ЭНКОДЕР

Сообщение Davit07 »

av писал(а): 06 июл 2020, 11:21
Davit07 писал(а): 06 июл 2020, 11:04 av, раскроете Вашу мысль более подробно .
Я понял ,что Вы имеете в виду , но как то не до конца )) понял , но не понял )).
Я имел ввиду, что на один градус получается 3 с лишним импульса. А вот как вы замерили один оборот вала визуально или каким то прибором. Может из за этого такая большая погрешность в измерениях количества импульсов на оборот.
В предещушем сообщении есть фото привода ШД и энкодера. Проверял какое количество импульсов на полный оборот ШД
Аватара пользователя
Davit07
Сержант
Сообщения: 175
Зарегистрирован: 05 янв 2020, 03:39
Откуда: Краснодар
Имя: Давит
Благодарил (а): 7 раз

Набор блоков ЭНКОДЕР

Сообщение Davit07 »

Всем привет.
Искал в интернете похожие работы с энкодером и попалась страница, где туземец написал скетч для энкодера .
Ссылка:
https://electricdiylab.com/how-to-conne ... h-arduino/
Проверил через монитор порт, как в описание по ссылке. Результат показаний удивил своей точностью из последних опытов с энкодером, +-1-3 импульса на оборот

Хочу к Вам обратиться за помощью в создании блока из скетча. К сожалению в этом вопросе мой опыт и познания пока, ранен нулю.
Наверно надо удалит из скетча монитор порта и также хотелось бы добавить в блок деление показаний на 2, что бы можно было получать показания на выходе равные указанным характеристикам на экодере. Так же, требуется выход для использование блока с другими блоками.

Скетч:

volatile long temp, counter = 0 ; //This variable will increase or decrease depending on the rotation of encoder

void setup( ) {
Serial.begin ( 9600 );
pinMode( 2, INPUT_PULLUP) ; // internal pullup input pin 2

pinMode( 3, INPUT_PULLUP) ; // internalเป็น pullup input pin 3
//Setting up interrupt
//A rising pulse from encodenren activated ai0(). AttachInterrupt 0 is DigitalPin nr 2 on moust Arduino.
attachInterrupt( 0, ai0, RISING);

//B rising pulse from encodenren activated ai1(). AttachInterrupt 1 is DigitalPin nr 3 on moust Arduino.
attachInterrupt( 1, ai1, RISING);
}

void loop( ) {
// Send the value of counter
if( counter != temp ){
Serial.println (counter);
temp = counter;
}
}

void ai0() {
// ai0 is activated if DigitalPin nr 2 is going from LOW to HIGH
// Check pin 3 to determine the direction
if(digitalRead( 3) ==LOW) {
counter++;
} else{
counter--;
}
}

void ai1() {
// ai0 is activated if DigitalPin nr 3 is going from LOW to HIGH
// Check with pin 2 to determine the direction
if(digitalRead( 2) ==LOW) {
counter--;
} else{
counter++;
}
}


Вот еще один . Посмотрите какой проще и луче для создание блока. Но этот скетч не переходит в отрицательное значение как предыдущий . Выглядит это так :
Скетч 1) 3,2,1,0,-1,-2,-3
скетч 2) 3,2,1,65535, 65534. При вращении в положительную сторону и достижении 65535 отсчет начинается с нуля до этого значения по кругу . Наверно данный скетч хуже. Судить не могу, не знаю )

by Ben-Tommy Eriksen

https://github.com/BenTommyE/BenRotaryEncoder

*/

// Encoder connect to digitalpin 2 and 3 on the Arduino.

volatile unsigned int counter = 0; //This variable will increase or decrease depending on the rotation of encoder

void setup() {
Serial.begin (9600);

pinMode(2, INPUT); // set pin to input
pinMode(3, INPUT); // set pin to input

digitalWrite(2, HIGH); // turn on pullup resistors
digitalWrite(3, HIGH); // turn on pullup resistors


//Setting up interrupt
//A rising pulse from encodenren activated ai0(). AttachInterrupt 0 is DigitalPin nr 2 on moust Arduino.
attachInterrupt(0, ai0, RISING);

//B rising pulse from encodenren activated ai1(). AttachInterrupt 1 is DigitalPin nr 3 on moust Arduino.
attachInterrupt(1, ai1, RISING);
}

void loop() {
// Send the value of counter
Serial.println (counter);
}

void ai0() {
// ai0 is activated if DigitalPin nr 2 is going from LOW to HIGH
// Check pin 3 to determine the direction
if(digitalRead(3)==LOW) {
counter++;
}else{
counter--;
}
}

void ai1() {
// ai0 is activated if DigitalPin nr 3 is going from LOW to HIGH
// Check with pin 2 to determine the direction
if(digitalRead(2)==LOW) {
counter--;
}else{
counter++;
}
}

Спасибо за помощь
Ответить

Вернуться в «Датчики и энкодеры»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя