Энкодер Pro
					Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
	Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Энкодер Pro
Нет, не ошибаюсь.  Промышленные обработчики  энкодеров  выдают именно 10000 инк/ об.
весь вопрос заключается в том что по прерыванию, допустим канала В мы должны:
1 действие: определить DIR , ( соотношение уровней на треках А и В).
2 действие : изменить состояние счетчика импульсов +/- в зависимости от состояния DIR.
Допускаю что на UNO, вероятнее всего, два действия по одному прерыванию осуществить не возможно, но факт есть факт промышленные обработчики в преобразователях частоты, системах ЧПУ учетверяют паспортное значения энкодера.
			
			
									
						весь вопрос заключается в том что по прерыванию, допустим канала В мы должны:
1 действие: определить DIR , ( соотношение уровней на треках А и В).
2 действие : изменить состояние счетчика импульсов +/- в зависимости от состояния DIR.
Допускаю что на UNO, вероятнее всего, два действия по одному прерыванию осуществить не возможно, но факт есть факт промышленные обработчики в преобразователях частоты, системах ЧПУ учетверяют паспортное значения энкодера.
- Dryundel
- Полковник
- Сообщения: 2668
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 34 раза
- Поблагодарили: 289 раз
Энкодер Pro
Пример такого обработчика в студию!MM33 писал(а): 16 сен 2021, 10:46 Нет, не ошибаюсь. Промышленные обработчики энкодеров выдают именно 10000 инк/ об.
Будем препарировать.
Энкодер Pro
на то они и промышленные, что с окружающими своими  решениями  не делятся.
Я просто говорю о том что это существует, не более того.
В свое время был озадачен этой проблемой , строил свой блок - обработчик, но тоже выше 5000 не поднялся. Но я и не программист и тоже не знаю как два действия привязать к одному прерыванию.
			
			
									
						Я просто говорю о том что это существует, не более того.
В свое время был озадачен этой проблемой , строил свой блок - обработчик, но тоже выше 5000 не поднялся. Но я и не программист и тоже не знаю как два действия привязать к одному прерыванию.
- ingener
- Лейтенант
- Сообщения: 582
- Зарегистрирован: 14 окт 2018, 00:26
- Имя: Андрей
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
Энкодер Pro
Это те, что стоят на валах электродвигателей, для подсчета угла поворота и пройденной дистанции.
Здесь же мы о "ручных", менюшных, так ск-ть.
Энкодер Pro
В менюшных пропуск шага не критичен, не сработало на этом щелчке сработает на следующем.
Предложенный Dryundel блок это гораздо больше. 100 кГц без пропусков и ошибок это уже заявка на победу. (промышленные 300 кГц документально, до 500 могут, но без гарантий.) Для личного творчества - более чем.
			
			
									
						Предложенный Dryundel блок это гораздо больше. 100 кГц без пропусков и ошибок это уже заявка на победу. (промышленные 300 кГц документально, до 500 могут, но без гарантий.) Для личного творчества - более чем.
Энкодер Pro
На самом деле, тут не нужно быть программистом. Можете просто, словами или на рисунке, описать, как вы это видите.MM33 писал(а): 16 сен 2021, 11:57 Но я и не программист и тоже не знаю как два действия привязать к одному прерыванию.
А уж перевести это в программу дело программистов.
- Dryundel
- Полковник
- Сообщения: 2668
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 34 раза
- Поблагодарили: 289 раз
Энкодер Pro
100 кГц заявлено автором библиотеки для Ардуинки. По ESP информации нет.
Более того, в следующем релизе добавлю доп настройку оптимизации прерываний, с которой заявленная частота увеличится до 147 кГц. Настройка только для AVR. Правда с такой настройкой вводятся ограничения на другие прерывания. Они просто не будут работать.
Отправлено спустя 7 минут 48 секунд:
Ну вот не получилось у меня добиться пропуска шагов крутая энкодер руками. Конечно от качества энкодера тоже зависит. Возможно мне повезло.Dryundel писал(а): 16 сен 2021, 14:11 В менюшных пропуск шага не критичен, не сработало на этом щелчке сработает на следующем.
 
 Для реально качественной работы, ставьте триггер Шмита.
Отправлено спустя 3 минуты 53 секунды:
[ref]MM33[/ref], а посчитайте ка количество импульсов на одном канале. 2500 это не суммарно?
Энкодер Pro
нет, в фотоимпульсных датчиках  на треках А иВ находится на каждом то количество импульсов что указано на шильдике. в моем случае 2500, но может быть 1024 и 2048, 4096 и т.д
+ трек нуль- метки. На нем один импульс на оборот. Нужен для выхода приводной точки в нулевое положение.
			
			
									
						+ трек нуль- метки. На нем один импульс на оборот. Нужен для выхода приводной точки в нулевое положение.
- Dryundel
- Полковник
- Сообщения: 2668
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 34 раза
- Поблагодарили: 289 раз
Энкодер Pro
Проверял? Дело то на 5 минут.Dryundel писал(а): 10 сен 2021, 13:57 нет, в фотоимпульсных датчиках на треках А иВ находится на каждом то количество импульсов что указано на шильдике.
Энкодер Pro
Проверял позавчера,(сейчас в силу некоторых обстоятельств  не могу физически).
При кол-ве тиков = 4 число за один оборот вала в (контроль через монитор порта ) -1250.
При кол-ве тиков = 1 число за один оборот вала в (контроль через монитор порта ) -5000.
Так как от руки я точно спозиционировать не могу числа получаются близкие к этим.
А то что датчик обсчитывается ЧПУ или ПЧ с учетверением - это классика, это было всегда. 10000 имп / на оборот может получится только в том случае если на каждом треке по 2500 и считается каждый перепад уровня выходного сигнала.
Отправлено спустя 50 минут 43 секунды:
какие то чудеса творятся с Вашим блоком .
то что компилировалось ранее( вариант EN + вых счетчика) и выдавало 5000 инк /об. сегодня не компилируется. выдает ошибку:
exit status 1
'Out_47946759_102165005' was not declared in this scope
Зато в варианте EN+RESET + вых счетчика + оба импульсных выхода компилируется без ошибок и выдает 10000 имп/ об
Отправлено спустя 1 минуту 11 секунд:
при тиках на шаг =1
			
			
									
						При кол-ве тиков = 4 число за один оборот вала в (контроль через монитор порта ) -1250.
При кол-ве тиков = 1 число за один оборот вала в (контроль через монитор порта ) -5000.
Так как от руки я точно спозиционировать не могу числа получаются близкие к этим.
А то что датчик обсчитывается ЧПУ или ПЧ с учетверением - это классика, это было всегда. 10000 имп / на оборот может получится только в том случае если на каждом треке по 2500 и считается каждый перепад уровня выходного сигнала.
Отправлено спустя 50 минут 43 секунды:
какие то чудеса творятся с Вашим блоком .
то что компилировалось ранее( вариант EN + вых счетчика) и выдавало 5000 инк /об. сегодня не компилируется. выдает ошибку:
exit status 1
'Out_47946759_102165005' was not declared in this scope
Зато в варианте EN+RESET + вых счетчика + оба импульсных выхода компилируется без ошибок и выдает 10000 имп/ об
Отправлено спустя 1 минуту 11 секунд:
при тиках на шаг =1
- Dryundel
- Полковник
- Сообщения: 2668
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 34 раза
- Поблагодарили: 289 раз
Энкодер Pro
Вы точно в этом уверены?
Проверял количество импульсов одной линии на оборот?
Может еще раз перепроверить себя?
.
Я не спрашиваю про проверку блока.
Меня интересует конкретное количество импульсов на одном канале вашего энкодера.
.
Не просто же так я это спрашиваю.
К примеру у простенького энкодера EC-11 ( KY-040) каждый канал выдает по 20 импульсов на оборот.
Однако блок EncPro четко выдает 80 инкрементных импульсов на оборот при тиках на шаг = 1.
.
Так что спрошу еще раз.
Отправлено спустя 6 минут 12 секунд:
Это проблемы компиляции редактора. Какие то глюки. Срочно пришлите мне ваш файл. Я никак не могу отловить закономерность. Сергею не могу сформулировать.MM33 писал(а): 16 сен 2021, 16:53 какие то чудеса творятся с Вашим блоком .
то что компилировалось ранее( вариант EN + вых счетчика) и выдавало 5000 инк /об. сегодня не компилируется. выдает ошибку:
Энкодер Pro
Я не разобрался как  на сайте  прикреплять файлы, проекты в сообщения, поэтому  ниже скомпилированный скетч. В FLPROG   Ваш блок в минимальной комплектации + блок  передачи переменной в UART.
[spoiler][/spoiler]
Отправлено спустя 4 минуты 56 секунд:
кажется нашел как прицепить ошибка : exit status 1
'Out_47946759_102165005' was not declared in this scope
			
			
						[spoiler]
Код: Выделить всё
//#define ENCODER_DO_NOT_USE_INTERRUPTS //Выключить USE_INTERRUPTS.
//#define ENCODER_OPTIMIZE_INTERRUPTS 
#include <Encoder.h>
long _SV1CP0 = 0L;
bool _SV1CP0needSend = 0;
long Out_167890681_102165005;
Encoder myEnc102165005(2, 3);
int _sumStep102165005 = 0;
bool flag102165005 = 0;
long _count = 0;
void setup()
{
    Serial.begin(9600, SERIAL_8N1);
}
void loop()
{
    //Плата:1
    if ((1))
    {
        long _tmpCount = myEnc102165005.read();
        		if(!flag102165005)
        		
        {
            			myEnc102165005.readAndReset();
            			myEnc102165005.write(_count * 1);
            			_sumStep102165005 = _count;
            			flag102165005 = 1;
            		
        }
        		if(!Out_47946759_102165005 && !Out_106233685_102165005)
        		
        {
            			if(_sumStep102165005 < _tmpCount / 1)
            			
            {
                				Out_47946759_102165005 = 1;
                				_sumStep102165005++;
                			
            }
            			else if(_sumStep102165005  > _tmpCount / 1)
            			
            {
                				Out_106233685_102165005 = 1;
                				_sumStep102165005--;
                			
            }
            		
        }
        		else
        		
        {
            			Out_47946759_102165005 = 0;
            Out_106233685_102165005 = 0;
            		
        }
        		if(+0 == 1)
        		
        {
            			myEnc102165005.readAndReset();
            			_sumStep102165005 = 0;
            		
        }
        		if(+0 == 1)
        		
        {
            			myEnc102165005.write((+0) * 1);
            			_sumStep102165005 = +0;
            		
        }
        		_count = _tmpCount / 1;
        		Out_167890681_102165005 = _count;
    }
    else
    {
        Out_47946759_102165005 = 0;
        Out_106233685_102165005 = 0;
        flag102165005 = 0;
    }
     if(!((Out_167890681_102165005)==(_SV1CP0)))
    {
        _SV1CP0needSend = 1;
    }
     _SV1CP0 = Out_167890681_102165005;
    if(_SV1CP0needSend) 
    {
        _SV1CP0needSend = 0;
        Serial.write (1);
        Serial.print (1);
        Serial.write (2);
        Serial.print (_SV1CP0);
        Serial.write (3);
    }
}Отправлено спустя 4 минуты 56 секунд:
кажется нашел как прицепить ошибка : exit status 1
'Out_47946759_102165005' was not declared in this scope
У вас нет необходимых прав для просмотра вложений в этом сообщении.
			
						- Dryundel
- Полковник
- Сообщения: 2668
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 34 раза
- Поблагодарили: 289 раз
Энкодер Pro
[ref]MM33[/ref], В следующий раз архивируйте файлы более 200кб
А код прячте под спойлер.
			
			
									
						А код прячте под спойлер.
Энкодер Pro
По поводу подсчета к-ва импульсов  на одном канале :
безусловно это возможно через скоростной счетчик в интервале от 0 -метки до 0 метки.
Но какой в этом смысл , там будет 2500
Вот в вашем примере число на канале 20 на выходе блока 80. Это ожидаемо, так как блок обсчитывает все фронты и соответственно работает с учетверением.
В моем случае , я вчера писал , комплектация " как есть из пакета" тоже выдала 10000 инк/об. при том что на шильде указано 2500 инк/об. Т.е тоже с учетверением.
Вот минимальная комплектация блока , до тех пор пока компилировалась почему то выдавала 5000 инк/ об.
			
			
									
						безусловно это возможно через скоростной счетчик в интервале от 0 -метки до 0 метки.
Но какой в этом смысл , там будет 2500
Вот в вашем примере число на канале 20 на выходе блока 80. Это ожидаемо, так как блок обсчитывает все фронты и соответственно работает с учетверением.
В моем случае , я вчера писал , комплектация " как есть из пакета" тоже выдала 10000 инк/об. при том что на шильде указано 2500 инк/об. Т.е тоже с учетверением.
Вот минимальная комплектация блока , до тех пор пока компилировалась почему то выдавала 5000 инк/ об.
- Dryundel
- Полковник
- Сообщения: 2668
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 34 раза
- Поблагодарили: 289 раз
- Dryundel
- Полковник
- Сообщения: 2668
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 34 раза
- Поблагодарили: 289 раз
Энкодер Pro
[ref]MM33[/ref], да елки палки ПРОЕКТ нужен.
А не скетч из Arduino IDE
Надо файл с расширением flp
			
			
									
						А не скетч из Arduino IDE
Надо файл с расширением flp
- Dryundel
- Полковник
- Сообщения: 2668
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 34 раза
- Поблагодарили: 289 раз
Энкодер Pro
[ref]MM33[/ref], нашел ошибку в логике компиляции. Почему она раньше не вылезала не могу сказать.
В следующем релизе исправлю, а пока просто включите выходы Up и Down. Поставьте галку использовать.
Выходы можно не использовать. При выполнении кода они не помешают.
			
			
									
						В следующем релизе исправлю, а пока просто включите выходы Up и Down. Поставьте галку использовать.
Выходы можно не использовать. При выполнении кода они не помешают.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей

