Программное сопряжение оптического энкодера и шаговика

Nick_SPb

★✩✩✩✩✩✩
1 Ноя 2018
55
12
Привет форумчане... смотрю тема у вас забуксовала)))
как один из вариантов можно добавить железа... типа счётчика импульсов ...
МК считывает с него значение, обнуляет счётчик и посылает шаговику количество полных шагов... кстати перед отправкой можно множить на динамический коэффициент (задаваемый допустим тактовой кнопкой с индикацией на семисигментник) количества импульсов на шаг (о котором упоминал автор темы)... вот ссылочка нужная) Счетчики импульсов
и пока МК ёрзает шаговиком счётчик считывает значения энкодера... периодичность опроса и будет максимальной погрешностью... незнаю сколько раз ты успеешь дёрнуть влево-вправо за секунду... но мне кажеться МК будет быстрей...)
 
Изменено:

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
@Nick_SPb, погоди, у нас уже есть и код и схема и видео. Осталось понять только почему это не работает ))))
Со счетчиком всё равно будет работать через прерывания.
Лучше помоги разобраться в коде который на первой странице скинули)
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
@serega_k,
Есть один вариант почему не работает! На DRV8825 есть такой маленький пиздюк-потенцометр. Вот его нужно поднастроить. Крутить на доли миллиметра пока шаговик не заработает!
 

Nick_SPb

★✩✩✩✩✩✩
1 Ноя 2018
55
12
@serega_k,
Есть один вариант почему не работает! На DRV8825 есть такой маленький пиздюк-потенцометр. Вот его нужно поднастроить. Крутить на доли миллиметра пока шаговик не заработает!
Ну крути пока...))) я пока покурю твой код...
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
@serega_k, по схеме несколько вопросов.
1) Энкодер от 12в питается?
2) На питание которое на двигатель советуют ставить конденсатор на 100мФ 36в.
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
@Nick_SPb,
мне крутить нечего, я тут в роли советчика выступаю ))))
можешь мне объяснить те строчки кода про которые писал выше?
 

Nick_SPb

★✩✩✩✩✩✩
1 Ноя 2018
55
12
ну однозначно наверх допиши ...
#include <Stepper.h>
хотя онлайн компилятор и без подключения библиотеки без ошибки скомпилировал...
 

Nick_SPb

★✩✩✩✩✩✩
1 Ноя 2018
55
12
при чём тут прерывания... библиотека описывает функции и классы которые вы используете в программировании ... облегчая ваш труд...
Функции

или вы думали что их вместе с пластиком залили в МК...
p.s. не благодарное это дело в чужом коде ковырятся... легче по моему заново написать...
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
@Nick_SPb, а после того как мы занесли значение в функцию библиотеки что происходит? Магия?
Не получится использовать Stepper.h в этой задаче. По причинам которые я описал выше.
 

Nick_SPb

★✩✩✩✩✩✩
1 Ноя 2018
55
12
ладно не письками меряться тут собрались, надо вопрос решить... чтоб мне в нэте не рыть...есть чистый код для опроса энкодера?
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
@Nick_SPb,
C++:
const int encoderIn = 8; // вход для прерывателя
const int statusLED = 13; // выход для индикации
const int pulseOutput = 12; // выход для осциллографа
int detectState=0; // переменная для чтения состояния энкодера
void setup()
{
pinMode(encoderIn, INPUT); //Настраиваем контакт 8 на вход
pinMode(statusLED, OUTPUT); //Настраиваем контакт 13 на выход
pinMode(pulseOutput, OUTPUT); // Настраиваем контакт 12 на выход
}
void loop() {
detectState=digitalRead(encoderIn);
if (detectState == HIGH) { //Если выход энкодера в высоком логическом состоянии
digitalWrite(statusLED, HIGH); //включаем светодиод
digitalWrite(pulseOutput,HIGH); //выход 13 устанавливаем в высокое логическое состояние
}
else {
digitalWrite(statusLED, LOW); //выключаем светодиод
digitalWrite(pulseOutput,LOW); //выход 13 устанавливаем в низкое логическое состояние
}
}
Такой? :D
 

Nick_SPb

★✩✩✩✩✩✩
1 Ноя 2018
55
12
Нашёл уже...
вот такая проблема у тебя вылезет если даже запустим...
=================================================
Вопрос, с какой частотой необходимо опрашивать энкодер. У меня в программе цикл прерывания 250 мкс и 4 выборки при фильтрации. В итоге период реакции на изменения состояния сигналов 1 мс.

Все зависит от того с какой частотой сигналы энкодера могут изменять свое состояние. А это определяют максимальная скорость вращения энкодера и параметр - число импульсов на оборот.

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

читай тут... Работа с инкрементальным энкодером в Ардуино
=================================================

проще говоря... даже если у тебя всё будет работать на приемлимых скоростях (плавное перемещение энкодера),
то резкий рывок или быстрое перемещение пропустит шаги, и каждое такое поведение будет наращивать погрешность...
 

Nick_SPb

★✩✩✩✩✩✩
1 Ноя 2018
55
12
Вот там он делает перемещение шпинделя сверлильного станка с помощью энкодера... готовый код...тебе на съедение)))
 

serega_k

✩✩✩✩✩✩✩
4 Ноя 2018
26
0
Нашёл уже...
вот такая проблема у тебя вылезет если даже запустим...
=================================================
Вопрос, с какой частотой необходимо опрашивать энкодер. У меня в программе цикл прерывания 250 мкс и 4 выборки при фильтрации. В итоге период реакции на изменения состояния сигналов 1 мс.

Все зависит от того с какой частотой сигналы энкодера могут изменять свое состояние. А это определяют максимальная скорость вращения энкодера и параметр - число импульсов на оборот.

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

читай тут... Работа с инкрементальным энкодером в Ардуино
=================================================

проще говоря... даже если у тебя всё будет работать на приемлимых скоростях (плавное перемещение энкодера),
то резкий рывок или быстрое перемещение пропустит шаги, и каждое такое поведение будет наращивать погрешность...
Я уже писал что отдельно энкодер и шаговик работают, но вот вместе не могу запустить!
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
@serega_k, ты покрутил пиздюка у drv8825? Ставлю чирик что проблема в нем )
 

serega_k

✩✩✩✩✩✩✩
4 Ноя 2018
26
0
Поспоришь.....Я собирал 3d принтер и имел дело с этим драйвером! Так что ПОКРУТИЛ....
 

KOHb

★✩✩✩✩✩✩
25 Окт 2018
119
16
@serega_k, эго нужно настраивать в зависимости от навешанной на него нагрузки...