Страница 1 из 6

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

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

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

Добавлено: 01.12.2016{, 20:39}
Гость
Нужно сделать в проекте так чтобы отсчёт шагов и изменение индикации было по отдельности.

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

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

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

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

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

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

Добавлено: 02.12.2016{, 11:26}
DerAlex
Попробуйте задать этот вопрос автору блока.Может он сможет разъяснить.Действительно нужно иметь два генератора.Я с этой же проблемой столкнулся.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

С приходом синхроимпульса переключается SR - триггер ,дает разрешение на вкл. генератора и включает, через выход ENA драйвер. Далее импульсы (с частотой 5кГц) поступают на выход PUL драйвера. Одновременно импульсы поступают на вход счетчика. На счетчик поступает количество шагов из блока меню. При достижении установленного уровня, происходит сброс счетчика и переключение SR - триггера в режим ожидания, остановка двигателя и выключение драйвера.

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

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

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

Добавлено: 05.12.2016{, 12:17}
vacz
Наверно надо показать весь блок управления этим двигателем:

Датчики "вправо","влево" подают сигнал на DIR драйвера и меняют направление вращения двигателя. Кнопки "вправо", "влево" включают двигатель вправо, влево. При настройке с меньшей скоростью (импульсы с генератора идут через два делителя частоты ТТ - триггера, с частотой 1.25кГц).

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

Добавлено: 05.12.2016{, 12:53}
vacz
И второй двигатель. Работает с частотой 2кГц, в режиме микрошага 1/8. С приходом сигнала с датчиков "вправо-2, влево-2" включают и удерживают двигатель - 2 влево, в
право. В отсутствии сигнала с датчиков - режим ожидания.