Помогите чайнику с управлением контроллера ШД через STEP/DIR/ENABLE входы.

my4there
Offline
Зарегистрирован: 19.07.2012

 Сори, сли тема, быть может, создана не в том разделе. Прошу не закидывать тухлыми помидорами.

Итак, есть плата Freeduino 2009. И есть драйвер ШД PLD330. У драйвера PLD330 есть 4 входа управления (+COMM, -STEP, -DIR, -ENB). Так вот, необходимо из этих двух элементов (ну, естесственно, не учитывая БП для фридуины и контроллера ШД) создать привод (с функционалом вкл/выкл, изменения направления и скорости вращения моторчика). На вход STEP драйвера нужно подавать импульсы (продолжительностью не менее 2мкс, 5В, 10-20 мА), 1 импульс - 1 шаг (с учетом деления), срабатывает по переднему фронту импульса. На вход DIR подается сигнал направления (те же ВА характеристики), а на ENB - сигнал готовности.

 

Собственно, вопрос, как с платы Freeduino организовать управление этим контроллером? Как работает выход в ШИМ режиме на фридуине? Смогу ли я, например, задавать n-ное количество импульсов для N-ного количества шагов мотра (чтобы, например, моторчик крутился несколько шагов в одну сторону, потом - в другую, или скорость таким способом регулировать...)? Можно ли так управлять моторчиком? Или есть способ получше?

 

Опыта в этом деле у меня нет, а знания вопроса - на уровне средней школы. Делаю устройство-дозатор, позволяющее выдвигать из катушки определенное количество проволоки с определенной скоростью.

 

Заранее спасибо.

my4there
Offline
Зарегистрирован: 19.07.2012

 Сори, в теме ошибся. Перефразирую: Помогите чайнику с управлением драйвером ШД через STEP/DIR/ENABLE входы.

maksim
Offline
Зарегистрирован: 12.02.2012

А поиском воспользоваться прежде чем тему заводить не пробовали?

http://arduino.ru/forum/apparatnye-voprosy/shd-i-biblioteka-stepper 

valeross пишет:

Привет

подскажите пожалуйста как подключить шаговые биполярные движки с родными драйверами к Ардуино (ваще просто дуб)

на выходе драйвера

STEP — Тактирующий сигнал, сигнал шага. Один импульс приводит к повороту
ротора ШД на один шаг (не физический шаг ШД, а шаг выставленный на драйвере — 1:1, 1:8, 1:16
и т.д.). Обычно драйвер отрабатывает шаг по переднему или заднему фронту импульса.
DIR — Потенциальный сигнал, сигнал направления. Логическая единица — ШД
вращается по часовой стрелке, ноль — ШД вращается против часовой стрелки, или наоборот.
Инвертировать сигнал DIR обычно можно либо из программы управления или поменять местами
подключение фаз ШД в разъеме подключения в драйвере.
ENABLE — Потенциальный сигнал, сигнал включения/выключения драйвера.
Обычно логика работы такая: логическая единица (подано 5В на вход) — драйвер ШД
выключен и обмотки ШД обесточены, ноль (ничего не подано или 0В на вход) — драйвер ШД
включен и обмотки ШД запитаны.
Vcc+2,5....5v

и как использовать библиотеку,... по пунктам пж, ваще тяж. дается

AlexFisher пишет:

Просто.

Если, скажем, Step подключим к 4, Dir к 5, то иницилизация будет:
AccelStepper MyStep(1,4,5);

С сигналом ENABLE нужно разбираться отдельно - библиотека его не поддерживает. Есть пример: www.schmalzhaus.com/EasyDriver/Examples/EasyDriverExamples.html

my4there
Offline
Зарегистрирован: 19.07.2012

 Спасибо! Еще такой вопрос, у них на сайте (freeduino.ru) нашел LCD Keypad shield. Вот, собственно, вопрос, можно ли с него через фридуинину и драйвер управлять в такой системе шаговым моторчиком? И в чем принципиальная разница между этими устройствами для шин I2C и SPI?

maksim
Offline
Зарегистрирован: 12.02.2012

Управлять можно.

Принципиальной разницы между I2C и SPI нету, просто если например SPI у вас используется для связи с другим устройством, то нужно брать I2C, а если вам нужны все аналоговые входы (например аппаратный I2C на дуине уно на 4 и 5 аналоговых выводах), то нужно брать SPI.

my4there
Offline
Зарегистрирован: 19.07.2012

 Огромное спасибо! У вас отличный форум, отвечаете быстро и по делу. Всем участникам форума - респект.:)

edcop
Offline
Зарегистрирован: 23.07.2016

Подскажите начинающему, как заставить ардуину управлять скоростью шагового двигателя (драйвер ТВ6560) в зависимости от температуры с датчика ds18b20 (зависимость линейная)? Хотя бы направление покажите, куда копать.

Заранее благодарен.

З.Ы. Также возможен другой вариант - есть таблица соответствий температура-скорость, количество значений температуры порядка 20-ти. Удобнее будет использовать массив?

b707
Offline
Зарегистрирован: 26.05.2017

edcop - три года регистрации на форуме и все еще настолько начинающий? - наверно уже и продолжать не стоит...

Ответить на ваш вопрос примерно так же "просто", как обьяснить блондинке. как перебрать коробку передач...

edcop
Offline
Зарегистрирован: 23.07.2016

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

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Во-первых прочитать документацию на драйвер - гугл в помощь. Во-вторых понять, а какой двигатель Вы будете подключать к драйверу. Соответственно сколько выходов контроллера Вы используете на выход. В-третих попытаться запустить двигатель на любой скорости - полный оборот двигателя это когда Вы перебрали все его катушки и вернулись к первой. Между подключениями катушек надо делать паузы, которые и определяют скорость вращения. Далее - научится считывать температуру, составить нужный Вам график зависимости скорости вращения двигателя от температуры. И, в итоге, написать программу.

b707
Offline
Зарегистрирован: 26.05.2017

edcop пишет:

З.Ы. Также возможен другой вариант - есть таблица соответствий температура-скорость, количество значений температуры порядка 20-ти. Удобнее будет использовать массив?

кто ж знает. что вам удобнее?

Вопрос в чем? - не знаете как температуру измерить? как скорость менять? или как собрать это вместе?

edcop
Offline
Зарегистрирован: 23.07.2016

Драйвер ТВ6560. Поэтому задача менять частоту step. Думал в направлении дёргать ногой с delay (t), где t - значение температуры.
 

b707
Offline
Зарегистрирован: 26.05.2017

edcop пишет:

Думал в направлении дёргать ного с delay (t), где t - значение температуры.
 

неправильное направление.

Одновременно мерить температуру и выдерживать скорость вы при таком подходе не сможете.

sadman41
Offline
Зарегистрирован: 19.10.2016

Т.е., как я понимаю, разницы нет: медленней должен двигатель мотать или быстрее - главное, чтобы от T зависел.

edcop
Offline
Зарегистрирован: 23.07.2016

Мне скорость удерживать не нужно, она должна падать с ростом температуры. При повышении на 1 градус снижение скорости на 6%.

edcop
Offline
Зарегистрирован: 23.07.2016

Как мерять температуру и как собрать, я знаю. Как говорится, языками не владею. (((

sadman41
Offline
Зарегистрирован: 19.10.2016

stepDelay = map(currentTemperature, minTemperature, maxTemperature, minDelay, maxDelay);

b707
Offline
Зарегистрирован: 26.05.2017

edcop пишет:

Мне скорость удерживать не нужно, она должна падать с ростом температуры.

простите, но эта фраза лишена смысла.

насколько я понял. если температура не меняется. то и скорость должна быть постоянной? - это и называется "поддерживать скорость".

Так вот, если вы будете писать управление двигателем на основе функций delay() - ничего другого в программе вы уже делать не сможете, в том числе и измерять температуру.

 

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

edcop
Offline
Зарегистрирован: 23.07.2016

Спасибо. В этом смысле конечно поддерживать нужно. Строка кода (выше) сможет это сделать?

sadman41
Offline
Зарегистрирован: 19.10.2016

Если не секрет - зачем шаговик на температуру завязывать? Чего мне только не предлагали на моторе сделать, но такое в первый раз.

edcop
Offline
Зарегистрирован: 23.07.2016

Управление перистальтическим насосом при ректификации по температуре в баке.

b707
Offline
Зарегистрирован: 26.05.2017

sadman41 пишет:

Если не секрет - зачем шаговик на температуру завязывать? Чего мне только не предлагали на моторе сделать, но такое в первый раз.

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

sadman41
Offline
Зарегистрирован: 19.10.2016

Самогон на шаговиках от лазерных принтеров... это необычно.

edcop
Offline
Зарегистрирован: 23.07.2016

А что думаете про управление командой tone (pin_tone, freq_tone)?

b707
Offline
Зарегистрирован: 26.05.2017

edcop пишет:

А что думаете про управление командой tone (pin_tone, freq_tone)?

это читерство