Генеротор и дисплей

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Генеротор и дисплей

#21

Сообщение Слимпер » 05.12.2016{, 14:33}

vacz, так как у меня нет не двигателя не драйвера, то тестировать вам.
Вот бета версия блока. Больше для проверки будет ли работать или нет.
Можно использовать только один. Потом буду думать как переделать для возможности использовать нескольких.
Описание есть в блоке, но если есть вопросы задавайте.
Вложения
STEPDIR__V0.1.1.ubi
(91.49 КБ) 100 скачиваний

Аватара пользователя
vacz
Лейтенант
Сообщения: 485
Зарегистрирован: 17.10.2016{, 05:56}
Репутация: 52
Имя: Владимир

Генеротор и дисплей

#22

Сообщение vacz » 05.12.2016{, 20:03}

Спасибо. Буду пробовать!

Добавлено (05.12.2016, 20:03)
---------------------------------------------
Протестировал блок.
Как бета версия, работает хорошо. Вам удалось развязать зависимость генератора двигателя от программного цикла. И это очень радует! Теперь частота не меняется.
Единственное в данном блоке не работает изменение, сохранение параметров пользователя в проекте. Для того, чтобы изменить параметры приходится удалить блок из проекта, зайти в блок через библиотеку, сделать там изменения, сохранить в библиотеке и затем уже вставить его в проект. Немного не удобно для общего пользования.
Ну и конечно пожелания к блоку:
1. Изменение направления оборотов двигателя в таком виде (от знака числа зависит направление вращения) совершенно не приемлемо. Желательно сделать 1 вход в блоке, для изменения направления оборотов, меняя лог. 1 на 0 и на оборот. Либо поставить 2 входа и и управлять ими выходом DIR. Что было бы намного удобнее для подключения датчиков.
2. Добавить вход, для включения и выключения работы двигателя в постоянном режиме, без установки количества шагов. Тогда появится возможность использовать блок в разных режимах.
3. Если есть возможность, увеличить частоту генератора раза в 3 -4. Тогда двигатель можно будет включать в режиме микрошага 1/16, 1/32. И вообще увеличить скорость двигателя при необходимости.
4. Добавить возможность использования нескольких блоков. В проектах работает несколько двигателей.

И еще раз большое спасибо! Очень хочется увидеть Ваш новый блок.
Последний раз редактировалось vacz 05.12.2016{, 20:05}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

Гость

Генеротор и дисплей

#23

Сообщение Гость » 05.12.2016{, 21:10}

vacz писал(а):И еще раз большое спасибо!
Тогда нажмите на большой палец справа вверху сообщения.....

Пока этот блок не нужен , но в будущем очень пригодится !!!
Ждём улучшений блока!

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Генеротор и дисплей

#24

Сообщение Слимпер » 06.12.2016{, 14:43}

vacz писал(а):Единственное в данном блоке не работает изменение, сохранение параметров пользователя в проекте. Для того, чтобы изменить параметры приходится удалить блок из проекта, зайти в блок через библиотеку, сделать там изменения, сохранить в библиотеке и затем уже вставить его в проект. Немного не удобно для общего пользования.
Вот это я не понял, может не так делает. Надо:
1 Правой кнопкой мыши на блок
2 Из выпавшего списка выбрать Изменить параметры
3 Во вкладке параметры настраиваем нужные значения
СпойлерПоказать
vacz писал(а):Желательно сделать 1 вход в блоке, для изменения направления оборотов, меняя лог. 1 на 0 и на оборот. Либо поставить 2 входа и и управлять ими выходом DIR. Что было бы намного удобнее для подключения датчиков.
Ладно для сделаю пока один вход Лево /Право.
2. Это тоже сделаю.
3 .Вот тут вопрос сложный, скорее даже экспериментальный, можно попробовать, но после увеличения больше в несколько раз могут начаться проблемы, особенно когда будет несколько двигателей. Но это определяется только экспериментальным путем.

Перенесу период прерывания в Параметры пользователя, будете сам эксперименты ставить  Было 200мкс (5кГц), можно пробовать понизить до 100мкс  (10кГц), возможно и меньше, но там шанс глюк уже значительный. Ниже 20 точно нельзя.

4 Как писал выше, чем больше двигателей, тем больше будет ограничена максимальная частота.
Сделать любое католичество не получится, но несколько можно.
Вопрос сколько максимально возможное количество, может понадобится?
Вложения
1132953.png
Последний раз редактировалось Слимпер 06.12.2016{, 14:51}, всего редактировалось 1 раз.

Аватара пользователя
Max
Лейтенант
Сообщения: 691
Зарегистрирован: 06.09.2015{, 13:12}
Репутация: 5
Откуда: Тюмень-Баку
Имя: Максим

Генеротор и дисплей

#25

Сообщение Max » 06.12.2016{, 14:52}

Если есть возможность, то можно разделить между ардуинками функции. Например, одна (нано, микро) исполняет роль драйвера и управляет чисто двигателями и по COM порту соединена с другой, которая делает все остальное.

Аватара пользователя
vacz
Лейтенант
Сообщения: 485
Зарегистрирован: 17.10.2016{, 05:56}
Репутация: 52
Имя: Владимир

Генеротор и дисплей

#26

Сообщение vacz » 06.12.2016{, 15:28}

Слимпер писал(а):Вот это я не понял, может не так делает. Надо:1 Правой кнопкой мыши на блок
2 Из выпавшего списка выбрать Изменить параметры
3 Во вкладке параметры настраиваем нужные значения
Это мой недочет. попытался изменить параметры через "редактировать". Там действительно не хочет "обновить только в проекте".
Слимпер писал(а):Перенесу период прерывания в Параметры пользователя, будете сам эксперименты ставить Было 200мкс (5кГц), можно пробовать понизить до 100мкс (10кГц), возможно и меньше, но там шанс глюк уже значительный. Ниже 20 точно нельзя.
Наверно до 15 кГц будет достаточно. Если кому то не будет хватать оборотов, то можно будет перейти на шаг, полушаг, 1/2, 1/4.
Ну а если поставить в Параметры, это буде вообще идеально.
Слимпер писал(а):Вопрос сколько максимально возможное количество, может понадобится?
Обычно в станках с ЧПУ и 3D принтерах стоит 4 двигателя.
Последний раз редактировалось vacz 06.12.2016{, 15:39}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Генеротор и дисплей

#27

Сообщение Слимпер » 06.12.2016{, 16:19}

vacz, Вот новый вариант блока

Но реализовать, несколько блоков в одном проекте пока не получилось, не тривиальная зада. Пока думаю.
Вложения
STEPDIR_V0.2-CO.ubi
(134.59 КБ) 98 скачиваний

Аватара пользователя
vacz
Лейтенант
Сообщения: 485
Зарегистрирован: 17.10.2016{, 05:56}
Репутация: 52
Имя: Владимир

Генеротор и дисплей

#28

Сообщение vacz » 07.12.2016{, 06:00}

Протестировал блок. Опишу поэтапно:
1. В режиме StartSteps:
Частота 90 мкс и выше - двигатель работает нормально. Плавно.
Частота меньше 90 мкс - двигатель дергается и не запускается.
90 мкс - нижний  предел работы двигателя. Но этого вполне достаточно.
Вход Direction не работает , пока не выполнит заданное количество шагов. Этого не должно быть. Обороты должны менять направление в любое время работы двигателя.
2. В режиме Continuous:
Частота от 220 мкс и выше - двигатель работает нормально в непрерывном режиме.
Вход Direction  работает нормально. Меняет направление в любое время работы двигателя.
Частота  210 мкс - двигатель начинает шуметь. (частота падает с 4,75кГц до4,5кГц)
Частота  200мкс - двигатель начинает дребезжать. (частота падает с 5кГц до4,5кГц)
Частота  100мкс - двигатель  дергается и дребезжит. (частота падает с 10кГц до4,5кГц)
Надо, чтобы частота в режиме Continuous была такой же, как и в режиме StartSteps.
_________________________
Да, забыл сказать: Выход balanceSteps не нужен в этом блоке. Считать остаток шагов не для чего.

Добавлено (07.12.2016, 06:00)
---------------------------------------------
Хочется отдельно протестировать сам генератор из блока. Интересно как он будет вести себя в качестве опорного и затем через делители, с разными частотами подключить к нему несколько драйверов. Если возможно, для эксперимента, убрать все из блока и оставить только сам генератор, входы: делитель частоты, разрешение работы блока. В параметрах: период прерывания, вывод сигнала.
Последний раз редактировалось vacz 07.12.2016{, 08:16}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

Аватара пользователя
vacz
Лейтенант
Сообщения: 485
Зарегистрирован: 17.10.2016{, 05:56}
Репутация: 52
Имя: Владимир

Генеротор и дисплей

#29

Сообщение vacz » 07.12.2016{, 08:31}

.
Последний раз редактировалось vacz 07.12.2016{, 11:25}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Генеротор и дисплей

#30

Сообщение Слимпер » 07.12.2016{, 08:55}

vacz писал(а):Вход Direction не работает , пока не выполнит заданное количество шагов. Этого не должно быть. Обороты должны менять направление в любое время работы двигателя.
Вот тут я не согласен. Если даешь команду двигателю сделать 100 шагов по часовой стрелки, то пока он их не завершит, не должно быть реакции. Если надо развернутся, даёшь команду стоп (команда сделать 0 шагов), затем уже команду сделать столько то шагов против часовой стрелки.

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

Генератор попробую сделать, но как я уже писал раньше, в этом случаи сделать точное количество шагов будет не возможно.
Вложения
STEPDIR_V0.3-CO.ubi
(135.18 КБ) 84 скачивания

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Генеротор и дисплей

#31

Сообщение Слимпер » 07.12.2016{, 09:26}

Вот Блок Генератора, не проверял.
Но он просто выдает импульсы на конкретном пине, без возможности их подсчета в программе.
Вложения
_V0.1-CODE-.ubi
(75.07 КБ) 99 скачиваний

Аватара пользователя
vacz
Лейтенант
Сообщения: 485
Зарегистрирован: 17.10.2016{, 05:56}
Репутация: 52
Имя: Владимир

Генеротор и дисплей

#32

Сообщение vacz » 07.12.2016{, 14:07}

Добрый день. Протестировал блоки.
Блок Генератора работает хорошо. Выдает импульсы и не зависим от программного цикла. Жаль, что не возможно вернуть импульсы обратно в процессор, для использования их в программе ( как это возможно в блоке - 8мгц генератор меандра(CODE) из  «БЛОКИ пользователей»). Не знаю, возможно ли это? А так, у Вас получился очень хороший, самостоятельный блок Генератора. Вполне  может пригодиться.
Блок VO.3-CO: Частота, в режиме постоянного вращения, стала стабильной и одинаковой в обоих режимах.
Начиная со 120 мкс, стал запускаться только со второго  или третьего сигнала в обоих режимах.В режиме Continuous: меняет направление оборотов влево сразу. В право только после остановки.
Слимпер писал(а):Вот тут я не согласен. Если даешь команду двигателю сделать 100 шагов по часовой стрелки, то пока он их не завершит, не должно быть реакции. Если надо развернутся, даёшь команду стоп (команда сделать 0 шагов), затем уже команду сделать столько то шагов против часовой стрелки.
Здесь я с Вами, совершенно согласен.  Для того, чтобы не сжечь двигатель при резкой смене направления оборотов, обязательно нужно сделать
остановку для снятия встречных токов.  И эту остановку всегда нужно программировать  для всех драйверов с четырьмя входными импульсами  управления.
В драйверах ТВ6600, A4988 с одним входным импульсом и им подобных, цикл остановки, для защиты двигателя уже установлен в программе драйвера изготовителем. И дублировать ее второй раз нет необходимости, затрачивая при этом ресурсы контроллера . К тому же, если мы прервем работу двигателя в процессе исполнения шагов, то мы будем терять остатки шагов в этих импульсах, накапливая огромную ошибку в процессе. Когда остановку делает драйвер, мы теряем всего 1/8 шага, если это будет делать блок, мы будем терять сотни шагов за каждый разворот.  Если дадим завершить шаги, то узел, движимый этим двигателем, дойдя до точки разворота, не остановится вовремя и нарушит точность или разнесет  весь узел.Поэтому, в данном блоке необходимо делать смену направления в процессе работы двигателя. А цикл остановки двигателя для защиты, сделает сам драйвер.  Этот блок может работать с драйверами, управляемыми одним  входным импульсом.  Другие драйвера не могут с ним работать.
Последний раз редактировалось vacz 07.12.2016{, 14:23}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Генеротор и дисплей

#33

Сообщение Слимпер » 07.12.2016{, 14:39}

vacz писал(а):Жаль, что не возможно вернуть импульсы обратно в процессор, для использования их в программе
Сделал, еще одну версию генератора, другого варианта передать количество импульсов я не вижу.
Выход Steps - на нем будет выдаваться значение импульсов выданных генератором с последнего программного цикла, т.е. с последнего раза когда было обработан блок генератора в FLProg.
Вложения
_V0.2-CODE-.ubi
(85.35 КБ) 101 скачивание

Аватара пользователя
vacz
Лейтенант
Сообщения: 485
Зарегистрирован: 17.10.2016{, 05:56}
Репутация: 52
Имя: Владимир

Генеротор и дисплей

#34

Сообщение vacz » 07.12.2016{, 16:43}

Блок работает хорошо. На обоих выходах частота одинаковая. Теперь ломаю голову - как вести управление с аналогового выхода, как вести подсчет, перевести его в цифровой?
Последний раз редактировалось vacz 07.12.2016{, 17:15}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Генеротор и дисплей

#35

Сообщение Слимпер » 08.12.2016{, 05:16}

vacz писал(а):Теперь ломаю голову - как вести управление с аналогового выхода, как вести подсчет, перевести его в цифровой?
Ну я делал этот выход в расчете примерно на такое применение 
СпойлерПоказать
А дальше уже элемент сравнение и т.д.

Ошибка позиционирования будет, но думаю не сильно большая

Примечание. Дальнейшее использование переменной счетчик лучше перенести на другую плату. Меньше шансов получить запаздывание на 1 цикл.
Вложения
3446598.png

Аватара пользователя
vacz
Лейтенант
Сообщения: 485
Зарегистрирован: 17.10.2016{, 05:56}
Репутация: 52
Имя: Владимир

Генеротор и дисплей

#36

Сообщение vacz » 08.12.2016{, 09:45}

Спасибо.

Добавлено (08.12.2016, 09:45)
---------------------------------------------
В ходе тестирования выявилось, что Выход Steps работает только когда, подключен дисплей. Стоит только убрать дисплей с проекта, сразу перестает работать выход Steps .
Использовать для для управления в процессоре не получается. Дает очень большие ошибки.
А как генератор, для внешних блоков, очень даже хорош. Для этого больше подходит блок _V0.1-CODE-.
Последний раз редактировалось vacz 08.12.2016{, 14:25}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

solo
Рядовой
Сообщения: 54
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

Генеротор и дисплей

#37

Сообщение solo » 08.12.2016{, 16:48}

Слимпер писал(а):vacz, Вот новый вариант блокаНо реализовать, несколько блоков в одном проекте пока не получилось, не тривиальная зада. Пока думаю.
Прикрепления: STEPDIR_V0.2-CO.ubi(135Kb)
 не очень понял как задавать скорость перемещения , и есть ли у компонента такая характеристика как "ускорение" то есть плавное увеличение частоты от 0 до мах и потом плавное снижение от мах до 0

с скоростью разобрался

Скорость вращения можно вычислить по следующей формуле:
Rpm = 60 000  /   ( divider  * Tcontrol * Nдвигателя  ) / Nмикрошагов
Последний раз редактировалось solo 08.12.2016{, 17:21}, всего редактировалось 1 раз.

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Генеротор и дисплей

#38

Сообщение Слимпер » 11.12.2016{, 20:58}

vacz писал(а):В ходе тестирования выявилось, что Выход Steps работает только когда, подключен дисплей. Стоит только убрать дисплей с проекта, сразу перестает работать выход Steps .
Странно, проверял при передачи в ком порт, все отлично работало.

Пытаясь решить проблему генерации импульсов сразу на нескольких выходах, пришлось сделать полностью новый блок генератора, который работает с пинами напрямую.
Получилось сделать 4 канальный генератор, импульсы должны генерироваться почти синхронно (если выставлены одинаковые делители ). Максимально возможная частота при этом в теории выросла до 40кГц.
Но есть и свои минусы, жёсткая привязка к конкретным пинам (менять можно только редактированием в блоке ). Возможно в следующей версии FLProg можно будет и через параметры.

Для точного позиционирования, в теории можно попробовать сделать не просто генератор (как сейчас), а генератор заданного количества импульсов.
Вложения
Generator_2_V0..ubi
(229.72 КБ) 88 скачиваний

Аватара пользователя
vacz
Лейтенант
Сообщения: 485
Зарегистрирован: 17.10.2016{, 05:56}
Репутация: 52
Имя: Владимир

Генеротор и дисплей

#39

Сообщение vacz » 12.12.2016{, 09:19}

Протестировал блок в таком режиме:


1 режим - StartSteps1; divider1 - 1: 
На выходе Pin6, частота 10кГц стабильно, двигатель работает нормально.
2 режим - StartSteps2; divider2 - 2: 
На выходе Pin7, частота 5кГц стабильно, двигатель работает нормально.
3 режим - StartSteps3; divider1 - 3: 
На выходе Pin8, частота 3,333кГц стабильно, двигатель работает нормально.
4 режим - StartSteps4; divider4 - 4: 
На выходе Pin9, частота 2,5кГц стабильно, двигатель работает нормально.
Генератор работает хорошо.

1 режим - StartSteps1; divider1 - 1: 
На выходе Steps1, (с блоком дисплея) частота 490 Герц стабильно, двигатель работает не с теми оборотами и частотой (должно быть 10кГц).
На выходе Steps1, (без блока дисплея) частота прыгает  от 490 до 600 Герц , двигатель работает не с теми оборотами и частотой (должно быть 10кГц) .
2 режим - StartSteps2; divider2 - 2: 
На выходе Steps2, (с блоком дисплея) частота 10кГц стабильно, двигатель работает не с теми
оборотами и частотой (должно быть 5кГц).
На выходе Steps2, (без блока дисплея) частота прыгает  от 48кГц до 60 кГц , двигатель
не с теми оборотами и частотой (должно быть 5кГц). Дергается самопроизвольно, без команды.
3 режим - StartSteps3; divider3 - 3: 
На выходе Steps3, (с блоком дисплея) частота 10кГц стабильно, двигатель работает не с теми
оборотами и частотой (должно быть 3,333кГц).
На выходе Steps3, (без блока дисплея) частота прыгает  от 20кГц до 21кГц , двигатель  не работает с теми оборотами и частотой (должно быть 3,333кГц).
4 режим - StartSteps4; divider4 - 4: 
На выходе Steps4, (с блоком дисплея) частота 490 Герц стабильно, двигатель работает не с теми
оборотами и частотой (должно быть 2,5кГц).
На выходе Steps4, (без блока дисплея) частота прыгает  от 1кГц до 2,4кГц , двигатель не работает с теми оборотами и частотой (должно быть 2,5кГц), дергается.
Выхода Steps не работают правильно.
Вложения
4586135.gif
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Генеротор и дисплей

#40

Сообщение Слимпер » 12.12.2016{, 10:09}

vacz писал(а):Генератор работает хорошо.
Ну хоть это радует.
vacz писал(а):Выхода Steps не работают правильно.
Ну это не выход частоты, это сколько импульсов было выдано на соответствующем выходе с момента последнего обращения к блоку.
Так как длительность программного цикла плавает, будет плавать и значение на выходе.
Странно, что при подключении дисплея значения меньше, должно быть наоборот.
Но смотреть мгновенные значения лишено смысла, я этот выход делал для подсчета сделанных шагов. Хотя похоже от этого мало толку. Убрать что ли эти выходы

Добавлено (12.12.2016, 10:09)
---------------------------------------------
Еще не понял, нужен  или нет вариант блока с выдачей заданного количества импульсов вместо непрерывной их генерации?

Ответить

Вернуться в «Спросить у знатоков»