admin

Намоточный станок на Arduino

35 сообщений в этой теме

Здравствуйте! Собираю ваш станок. Электронная часть уже готова. Есть одна проблема, при переходе по меню. На один щелчок энкодера стрелка в меню перемещается через строку. Чтобы попасть на нужную строку проходиться держать энкодер между щелчками. Подскажите как это устранить

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
victord    0
В 11/5/2018 в 21:50, Максим Максимыч сказал:

Здравствуйте! Собираю ваш станок. Электронная часть уже готова. Есть одна проблема, при переходе по меню. На один щелчок энкодера стрелка в меню перемещается через строку. Чтобы попасть на нужную строку проходиться держать энкодер между щелчками. Подскажите как это устранить

та же беда, я думал что-то не так спаял. хотя, возможно, у нас такие энкодеры. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 404

проблема не в эндкодере , проблема в коде обработчика.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
TDA    13
В 05.11.2018 в 21:50, Максим Максимыч сказал:

Здравствуйте! Собираю ваш станок. Электронная часть уже готова. Есть одна проблема, при переходе по меню. На один щелчок энкодера стрелка в меню перемещается через строку. Чтобы попасть на нужную строку проходиться держать энкодер между щелчками. Подскажите как это устранить

 

13 часа назад, victord сказал:

та же беда, я думал что-то не так спаял. хотя, возможно, у нас такие энкодеры. 

 

11 час назад, IMXO сказал:

проблема не в эндкодере , проблема в коде обработчика.

Да, тут я дал маху))) Вот обработчик работающий лучше:

ISR(INT0_vect) {  // Вектор прерывания от энкодера
static byte Enc_Temp, Enc_Temp_prev;    // Временная переменная для хранения состояния порта
Enc_Temp = PIND & 0b00100100;                                                                                             // Маскируем все пины порта D кроме PD2 и PD5
     if (Enc_Temp==0b00000100 && Enc_Temp_prev==0b00100000) {Encoder_Dir = -1;}                                           // -1 - шаг против часовой
else if (Enc_Temp==0b00100100 && Enc_Temp_prev==0b00000000) {Encoder_Dir =  1;}                                           // +1 - шаг по часовой 
Enc_Temp_prev = Enc_Temp;
     if (Var_Set == true && Encoder_Dir != 0) {                                                                            // Если находимся в режиме изменения переменной 
        *Menu[Menu_Index].param += Encoder_Dir; Encoder_Dir = 0;                                                           // то меняем ее сразу и
        *Menu[Menu_Index].param = constrain(*Menu[Menu_Index].param, Menu[Menu_Index].var_Min, Menu[Menu_Index].var_Max);} // ограничиваем в диапазоне var_Min ÷ var_Max
     if (AutoWindStart == true && Encoder_Dir != 0) {Set_Speed = constrain(Set_Speed + Encoder_Dir, 1, 100);}}             // Если повернуть энкодер во время автонамотки 
                                                                                                                           // то меняем значение скорости

Еще одна ошибка в "// Подпрограмма автоматической намотки" 

Motor_Num = 1; MotorStep(200, Dir);

меняем на 

Motor_Num = 1; MotorStep(200, 1);

По хорошему вместо Dir нужно создать еще одну переменную, но пока так)))

Изменено пользователем TDA

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
TDA    13

Экспериментировал вот с таким энкодером, дополнительного антидребезга ставить не пришлось)

1.thumb.png.15d216df7c956e75299263d81a3e8e37.png

https://ru.aliexpress.com/item/-/32841409125.html?spm=a2g0s.9042311.0.0.2e0133edpKo4LW

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 404
6 часов назад, TDA сказал:

Вот обработчик

попробуйте это http://www.microchip.su/showpost.php?p=205936&postcount=201

приспособить , проверенно работает без глюков.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
TDA    13
7 минут назад, IMXO сказал:

проверенно работает без глюков.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Rbin    0

Доброго дня. Решил тоже собрать намотчик для ТВЗ. Сразу хочу выразить особую благодарность Дмитрию, чей код взял на вооружение.
По теме. В своем проекте использую мышу для навигации по меню, установке параметров... Подправил немного код под себя. Все работает.
Из хотелок... добавить предустановки для основных параметров. Еще было бы неплохо организовать ввод ширины укладки (высоту окна намотки) чтобы МК сам просчитывал с каким шагом должен двигаться укладчик и сколько полных витков поместится в одном слое. Также у меня на валу двигателя с катушкой транса установлен инкрементный энкодер по которому я отслеживаю сколько витков намотано (112 отсчетов на виток, через редуктор). Скажем, можно было бы дописать функцию которая бы принимала в качестве параметров 1/2 оборота(в моем случае это 56 отсчетов энкодера), направление укладки и осуществляла перемещение каретки укладчика на половину диаметра провода.

По поводу  изменения направления вращения основного двигателя... В моем случае эта переменная необходима, потому как половинки обмоток мотаются в разных направлениях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...