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

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

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

#1

Сообщение vacz » 01.12.2016{, 20:16}

Нужен совет. Для управления шаговым двигателем стоит генератор импульсов. Как только подключаю дисплей, для индикации режимов, сразу же падает частота импульсов генератора (падают обороты двигателя). При подключении через 12С, то же самое. Подскажите пожалуйста, как это можно исправить?
Последний раз редактировалось vacz 01.12.2016{, 20:26}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

Гость

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

#2

Сообщение Гость » 01.12.2016{, 20:39}

Нужно сделать в проекте так чтобы отсчёт шагов и изменение индикации было по отдельности.

Отсчитали- показали, отсчитали-показали , только так.

Аватара пользователя
DerAlex
Лейтенант
Сообщения: 437
Зарегистрирован: 06.09.2015{, 08:39}
Репутация: 11
Откуда: Новосибирск

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

#3

Сообщение DerAlex » 01.12.2016{, 20:50}

Для генератора нужно использовать блок пользователя в кодах.
Посмотрите раздел - БЛОКИ пользователей.
Там есть блок - 8мгц генератор меандра(CODE).
аврора

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

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

#4

Сообщение vacz » 02.12.2016{, 11:13}

Возникает два вопроса:
1. У меня в проекте стоит два шаговых двигателя.  Работают они на разных частотах и с разным управлением, поэтому необходимо использовать два генератора с разными частотами, а у этого генератора выход один на Pin11 (Mega2560).  Возможно ли на выход подключать другие Pin ?
2. Очень не желательно использовать дополнительные выходы и входы микроконтроллера. Ведь приходится возвращать импульсы генератора обратно в МК. Возможно ли сделать выход генератора с блока, а не на Pin ? И добавить разрешающий работу блока, вход En ? Для дальнейшего подключения непосредственно в проекте.
Последний раз редактировалось vacz 04.12.2016{, 14:49}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

Аватара пользователя
DerAlex
Лейтенант
Сообщения: 437
Зарегистрирован: 06.09.2015{, 08:39}
Репутация: 11
Откуда: Новосибирск

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

#5

Сообщение DerAlex » 02.12.2016{, 11:26}

Попробуйте задать этот вопрос автору блока.Может он сможет разъяснить.Действительно нужно иметь два генератора.Я с этой же проблемой столкнулся.
аврора

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

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

#6

Сообщение vacz » 04.12.2016{, 15:08}

sser писал(а):Нужно сделать в проекте так чтобы отсчёт шагов и изменение индикации было по отдельности.Отсчитали- показали, отсчитали-показали , только так.
Блок - 8мгц генератор меандра(CODE), так же не стал работать с блоками дисплея. Сразу меняется частота. Подключил по отдельности, да работает. Но..., в проекте работает несколько шаговых двигателей и они постоянно в работе, индикация практически ничего не показывает, мигая. А она нужна постоянно, для контроля ( параметров несколько).
Уважаемые разработчики программы, пожалуйста подскажите как избавиться от этого бага? Невозможно сделать программу  для станков без индикации контроля над ним. Есть старая поговорка мастеров: "Аппарат работает настолько хорошо, на сколько он выглядит". Люди разговаривают смотря в лицо друг другу. Дисплей, это лицо машины и оно должно выглядеть достойно, чтобы приятно было с ней общаться.
Последний раз редактировалось vacz 04.12.2016{, 16:21}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

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

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

#7

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

vacz писал(а):Блок - 8мгц генератор меандра(CODE), так же не стал работать с блоками дисплея.
Посмотрел как устроен это блок, он вашу проблему не может решить.
Так как генерирует импульсы также в цикле программы, а значит если программный цикл превышает период  необходимого вам периода импульса, толку не будет.

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

Могу  пробовать сделать, использовал я в одном блоке библиотеку  TimerOne.
Получалось сделать обработчик на прерываниях. Но при этом ШИМ режим (аналоговый выход) выхода на пинах 9 и 10  в штатном режиме становится недоступен.

Если нужно опешите подробно что требуется. Чем подробнее тем лучше.
А я скажу смогу это сделать или нет.

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

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

#8

Сообщение vacz » 04.12.2016{, 16:48}

Не буду описывать весь проект, а остановлюсь на проблемном: Берем два (любое количество) шаговых двигателя с драйвером ТВ6600 (любым). Запускаем их от генераторов, настроенных на разные частоты. Двигатели работают нормально. Но стоит вставить в проект блоки дисплея (для индикации параметров), сразу же частота генераторов снижается и двигатели вращаются с другими скоростями. Необходимо, что бы не изменялась частота и индикатор (в проекте их 20 блоков дисплея) работал постоянно, в нормальном режиме, не мигая.
Вложения
3423691.gif
Последний раз редактировалось vacz 04.12.2016{, 17:06}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

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

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

#9

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

vacz писал(а):Не буду описывать весь проект, а остановлюсь на проблемном: Берем два (любое количество) шаговых двигателя с драйвером ТВ6600 (любым). Запускаем их от генераторов, настроенных на разные частоты. Двигатели работают нормально. Но стоит вставить в проект блоки дисплея (для индикации параметров), сразу же частота генераторов снижается и двигатели вращаются с другими скоростями. Необходимо, что бы не изменялась частота и индикатор работал постоянно, в нормальном режиме, не мигая.
Лучше напишете параметры работы генератора.
Так как надо писать блок с другим генератором импульсов.
И то какие какие входа выхода нужны.

Добавлено (04.12.2016, 16:58)
---------------------------------------------
Вообще я не пользовался шаговыми двигателями.
Там какой принцип работы? Один импульс один шаг? 

А как вам надо просто шагать пока не поменяется внешнее условие или сделать столько то шагов.

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

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

#10

Сообщение vacz » 04.12.2016{, 17:43}

Один двигатель работает  в режиме микрошага 1/8 с частотой генератора 5000Hz (5kHz), 1600 импульсов на 1 оборот двигателя с драйвером ТВ6600. Работает по входу на заданное количество микрошагов с приходом синхроимпульса. С каждым приходом  синхроимпульса отрабатывается заданное количество шагов. на входе кол-во  шагов меняется от заданных в меню. В процессе работы, направление оборотов двигателя меняется, с приходом сигналов с датчиков (вправо, влево). Так же стоят кнопки (вправо, влево) для ручной настройки. Т.е принудительное движение двигателя вправо и влево. На драйвере входа: PUL - вход импульсов, DIR - вправо/влево, ENA - вход вкл/выкл питания драйвера.
Второй двигатель работает в режиме микрошага 1/8 с частотой генератора 2000Hz (2kHz), 1600 импульсов на 1 оборот двигателя. С (приходом сигналов с датчиков), пока идет сигнал с датчика. двигатель крутится в право, с другого датчика влево. Нет сигнала стоит в ожидании.
Вот в принципе работа этого узла. Всю эту программу я уже написал и в отдельности все узлы работают нормально в железе. Проблема начинается когда вставляешь в проект блоки дисплея из меню.
--------------------------------------
Вот возникла идея, отсюда и вопрос: Возможно ли сделать блок независимого генератора? С подключением через Pin кварца (при необходимости).
Последний раз редактировалось vacz 04.12.2016{, 17:56}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

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

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

#11

Сообщение Слимпер » 04.12.2016{, 18:07}

Вот поискал про такие драйверы, нашел статью и специальную библиотеку на эту темы
STEP/DIR драйверы шаговых двигателей. Основные понятия. Протокол STEP/DIR.

Подключение STEP/DIR драйверов шаговых двигателей к Ардуино. Библиотека StepDirDriver.

Если описание подходит к вашей задачи то можно попробовать сделать на базе этой библиотеки.

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

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

#12

Сообщение vacz » 04.12.2016{, 19:22}

Подключение к драйверам не представляет ни каких проблем. Я уже писал, что программу управления я составил и она прекрасно работает. Необходимо развязать зависимость генераторов двигателя от программного цикла. Сделать  этот генератор независимым, чтобы выполнение программы дисплея никак не влияло на изменение его частоты. Блок генератора, с возможностью задавать свои необходимые параметры и возможностью использования нескольких блоков-генераторов в одном проекте. Такой блок просто необходим. В программе, во встроенных есть генератор, но он привязан к программному циклу.
Последний раз редактировалось vacz 04.12.2016{, 19:26}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

Гость

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

#13

Сообщение Гость » 04.12.2016{, 19:47}

vacz писал(а):Подключение к драйверам не представляет ни каких проблем. Я уже писал, что программу управления я составил и она прекрасно работает.
Прекрасно работает!? -Но не работает с дисплеем.
Возможно та библиотека, предложенная Слимпером ,будет работать....
Последний раз редактировалось Гость 04.12.2016{, 19:52}, всего редактировалось 1 раз.

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

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

#14

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

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

И еще генератор будет генерировать именно импульсы на выходе контроллера (выхода Q не будет) с заданной частотой, если на входе EN будет 1. 
Как при этом считать число импульсов вопрос интересный. Или это не нужно?

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

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

#15

Сообщение vacz » 04.12.2016{, 20:42}

Думаю дело не в драйверах. Я ставил просто один генератор из встроенных, выставлял 5 kHz, подключал частотомер (показывает 5). Затем вставляю блок дисплея. И  частота сразу падает в несколько раз, нечего при этом не подключая. Дисплей сразу давит частоту.

Добавлено (04.12.2016, 20:42)
---------------------------------------------
Слимпер писал(а):последний вопрос, какая максимальная частота может понадобится, больше 10кГц вряд ли получится.И еще генератор будет генерировать именно импульсы на выходе контроллера (выхода Q не будет) с заданной частотой, если на входе EN будет 1.
Как при этом считать число импульсов вопрос интересный. Или это не нужно?
До 10кГц будет достаточно. Если я правильно понял, насчет выхода на контроллере (это как в  "Блоке - 8мгц генератор меандра(CODE)", на один из выходов Pin), то импульс возвратим назад в контроллер. И будем использовать для подсчета. Это я уже пробовал с Блоком - 8мгц генератор меандра(CODE). Проблем не было.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

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

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

#16

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

vacz писал(а):До 10кГц будет достаточно.
Понятно.
vacz писал(а):Если я правильно понял, насчет выхода на контроллере (это как в  "Блоке - 8мгц генератор меандра(CODE)", на один из выходов Pin), то импульс возвратим назад в контроллер. И будем использовать для подсчета.
Не правильно.
Я уже писал ранее, но похоже недостаточно понятно. Попробую объяснить подробнее.
В МК все операции выпоняются последовательно в одном программном цикле. Чем больше операций или зем они медленнее, тем больше длительность программного цикла  (читать за сколько выполнится все с перво по последнюю платы в FLProg). У вас возникла проблема как раз из-за того, время выполнения одного программного цикла превысило период необходимого вам генератора импульсов (причина скорей всего блок экран).

Чтобы  обойти такие ситуации есть возможность выполнять некоторые операции как бы параллельно основному программному цикла. Это называется выполнение функций по прерыванию по таймеру. Но фактически это реализуется так. Запускается аппаратный таймер, и при достижении заданного времени основная программа останавливается, выполняется обработка прерывания, затем возобновляется основной программный цикл.

Но из этого вытекает тот факт из основного программного цикла (блоками в FLProg) невозможно посчитать количество операций совершенных в прерываниях.

По этому я и написал:
Слимпер писал(а):И еще генератор будет генерировать именно импульсы на выходе контроллера (выхода Q не будет) с заданной частотой, если на входе EN будет 1. Как при этом считать число импульсов вопрос интересный. Или это не нужно?
Ели нужно считать число импульсов, то это придется делать внутри блока (во время прерывания), и делать выход число импульсов. А следовательно надо еще определить когда будет производится сброс счетчика. 

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

Так что думайте, пока описал ряд проблем которые вижу сразу, может еще что позже появится.

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

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

#17

Сообщение vacz » 05.12.2016{, 08:53}

Прошу извинить. Я столкнулся с программированием впервые. Поэтому, что-то могу сформулировать не так.  У меня в проекте подсчет и сброс работает по такой схеме:

С приходом синхроимпульса переключается SR - триггер ,дает разрешение на вкл. генератора и включает, через выход ENA драйвер. Далее импульсы (с частотой 5кГц) поступают на выход PUL драйвера. Одновременно импульсы поступают на вход счетчика. На счетчик поступает количество шагов из блока меню. При достижении установленного уровня, происходит сброс счетчика и переключение SR - триггера в режим ожидания, остановка двигателя и выключение драйвера.
Вложения
7903819.gif
Последний раз редактировалось vacz 05.12.2016{, 12:30}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

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

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

#18

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

vacz, Похоже получится, что необходимо почти всю вашу схему внутрь блока свернуть.
Но получится уже, что то похожее тому, что было описано в статье, приведенной  раньше. 
Ладно для начал, пойду по простому пути и сделаю блок для управления STEP/DIR драйверами на основе той статьи, там все подробно расписано, устроит хорошо, нет переделаю.

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

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

#19

Сообщение vacz » 05.12.2016{, 12:17}

Наверно надо показать весь блок управления этим двигателем:

Датчики "вправо","влево" подают сигнал на DIR драйвера и меняют направление вращения двигателя. Кнопки "вправо", "влево" включают двигатель вправо, влево. При настройке с меньшей скоростью (импульсы с генератора идут через два делителя частоты ТТ - триггера, с частотой 1.25кГц).
Вложения
9129417.gif
Последний раз редактировалось vacz 05.12.2016{, 12:26}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

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

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

#20

Сообщение vacz » 05.12.2016{, 12:53}

И второй двигатель. Работает с частотой 2кГц, в режиме микрошага 1/8. С приходом сигнала с датчиков "вправо-2, влево-2" включают и удерживают двигатель - 2 влево, в
право. В отсутствии сигнала с датчиков - режим ожидания.
Вложения
2573282.gif
Последний раз редактировалось vacz 05.12.2016{, 13:11}, всего редактировалось 1 раз.
Будь проще к людям. Хочешь быть мудрей - не делай больно мудростью своей. "Омар Хайям"

Ответить

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