Помогите чайнику с управлением контроллера ШД через STEP/DIR/ENABLE входы.
- Войдите на сайт для отправки комментариев
Сори, сли тема, быть может, создана не в том разделе. Прошу не закидывать тухлыми помидорами.
Итак, есть плата Freeduino 2009. И есть драйвер ШД PLD330. У драйвера PLD330 есть 4 входа управления (+COMM, -STEP, -DIR, -ENB). Так вот, необходимо из этих двух элементов (ну, естесственно, не учитывая БП для фридуины и контроллера ШД) создать привод (с функционалом вкл/выкл, изменения направления и скорости вращения моторчика). На вход STEP драйвера нужно подавать импульсы (продолжительностью не менее 2мкс, 5В, 10-20 мА), 1 импульс - 1 шаг (с учетом деления), срабатывает по переднему фронту импульса. На вход DIR подается сигнал направления (те же ВА характеристики), а на ENB - сигнал готовности.
Собственно, вопрос, как с платы Freeduino организовать управление этим контроллером? Как работает выход в ШИМ режиме на фридуине? Смогу ли я, например, задавать n-ное количество импульсов для N-ного количества шагов мотра (чтобы, например, моторчик крутился несколько шагов в одну сторону, потом - в другую, или скорость таким способом регулировать...)? Можно ли так управлять моторчиком? Или есть способ получше?
Опыта в этом деле у меня нет, а знания вопроса - на уровне средней школы. Делаю устройство-дозатор, позволяющее выдвигать из катушки определенное количество проволоки с определенной скоростью.
Заранее спасибо.
Сори, в теме ошибся. Перефразирую: Помогите чайнику с управлением драйвером ШД через STEP/DIR/ENABLE входы.
А поиском воспользоваться прежде чем тему заводить не пробовали?
http://arduino.ru/forum/apparatnye-voprosy/shd-i-biblioteka-stepper
Привет
подскажите пожалуйста как подключить шаговые биполярные движки с родными драйверами к Ардуино (ваще просто дуб)
на выходе драйвера
STEP — Тактирующий сигнал, сигнал шага. Один импульс приводит к повороту
ротора ШД на один шаг (не физический шаг ШД, а шаг выставленный на драйвере — 1:1, 1:8, 1:16
и т.д.). Обычно драйвер отрабатывает шаг по переднему или заднему фронту импульса.
DIR — Потенциальный сигнал, сигнал направления. Логическая единица — ШД
вращается по часовой стрелке, ноль — ШД вращается против часовой стрелки, или наоборот.
Инвертировать сигнал DIR обычно можно либо из программы управления или поменять местами
подключение фаз ШД в разъеме подключения в драйвере.
ENABLE — Потенциальный сигнал, сигнал включения/выключения драйвера.
Обычно логика работы такая: логическая единица (подано 5В на вход) — драйвер ШД
выключен и обмотки ШД обесточены, ноль (ничего не подано или 0В на вход) — драйвер ШД
включен и обмотки ШД запитаны.
Vcc+2,5....5v
и как использовать библиотеку,... по пунктам пж, ваще тяж. дается
Просто.
Если, скажем, Step подключим к 4, Dir к 5, то иницилизация будет:
AccelStepper MyStep(1,4,5);
С сигналом ENABLE нужно разбираться отдельно - библиотека его не поддерживает. Есть пример: www.schmalzhaus.com/EasyDriver/Examples/EasyDriverExamples.html
Спасибо! Еще такой вопрос, у них на сайте (freeduino.ru) нашел LCD Keypad shield. Вот, собственно, вопрос, можно ли с него через фридуинину и драйвер управлять в такой системе шаговым моторчиком? И в чем принципиальная разница между этими устройствами для шин I2C и SPI?
Управлять можно.
Принципиальной разницы между I2C и SPI нету, просто если например SPI у вас используется для связи с другим устройством, то нужно брать I2C, а если вам нужны все аналоговые входы (например аппаратный I2C на дуине уно на 4 и 5 аналоговых выводах), то нужно брать SPI.
Огромное спасибо! У вас отличный форум, отвечаете быстро и по делу. Всем участникам форума - респект.:)
Подскажите начинающему, как заставить ардуину управлять скоростью шагового двигателя (драйвер ТВ6560) в зависимости от температуры с датчика ds18b20 (зависимость линейная)? Хотя бы направление покажите, куда копать.
Заранее благодарен.
З.Ы. Также возможен другой вариант - есть таблица соответствий температура-скорость, количество значений температуры порядка 20-ти. Удобнее будет использовать массив?
edcop - три года регистрации на форуме и все еще настолько начинающий? - наверно уже и продолжать не стоит...
Ответить на ваш вопрос примерно так же "просто", как обьяснить блондинке. как перебрать коробку передач...
Я больше по сборке электроники, а с программированием до сих пор туго. Но желание разобраться есть.
В основном пользуюсь готовыми проектами, а в данном случае решил воплотить свою идею.
Во-первых прочитать документацию на драйвер - гугл в помощь. Во-вторых понять, а какой двигатель Вы будете подключать к драйверу. Соответственно сколько выходов контроллера Вы используете на выход. В-третих попытаться запустить двигатель на любой скорости - полный оборот двигателя это когда Вы перебрали все его катушки и вернулись к первой. Между подключениями катушек надо делать паузы, которые и определяют скорость вращения. Далее - научится считывать температуру, составить нужный Вам график зависимости скорости вращения двигателя от температуры. И, в итоге, написать программу.
З.Ы. Также возможен другой вариант - есть таблица соответствий температура-скорость, количество значений температуры порядка 20-ти. Удобнее будет использовать массив?
кто ж знает. что вам удобнее?
Вопрос в чем? - не знаете как температуру измерить? как скорость менять? или как собрать это вместе?
Драйвер ТВ6560. Поэтому задача менять частоту step. Думал в направлении дёргать ногой с delay (t), где t - значение температуры.
Думал в направлении дёргать ного с delay (t), где t - значение температуры.
неправильное направление.
Одновременно мерить температуру и выдерживать скорость вы при таком подходе не сможете.
Т.е., как я понимаю, разницы нет: медленней должен двигатель мотать или быстрее - главное, чтобы от T зависел.
Мне скорость удерживать не нужно, она должна падать с ростом температуры. При повышении на 1 градус снижение скорости на 6%.
Как мерять температуру и как собрать, я знаю. Как говорится, языками не владею. (((
stepDelay = map(currentTemperature, minTemperature, maxTemperature, minDelay, maxDelay);
Мне скорость удерживать не нужно, она должна падать с ростом температуры.
простите, но эта фраза лишена смысла.
насколько я понял. если температура не меняется. то и скорость должна быть постоянной? - это и называется "поддерживать скорость".
Так вот, если вы будете писать управление двигателем на основе функций delay() - ничего другого в программе вы уже делать не сможете, в том числе и измерять температуру.
поймите, я задаю вам верное направление. а то вы потратите кучу сил. чтоб написать управление двигателем - и очень быстро упретесь в то, что регулировка по температуре просто-напросто не работает. И в итоге придется все переписывать.
Спасибо. В этом смысле конечно поддерживать нужно. Строка кода (выше) сможет это сделать?
Если не секрет - зачем шаговик на температуру завязывать? Чего мне только не предлагали на моторе сделать, но такое в первый раз.
Управление перистальтическим насосом при ректификации по температуре в баке.
Если не секрет - зачем шаговик на температуру завязывать? Чего мне только не предлагали на моторе сделать, но такое в первый раз.
ну, на производстве такое запросто :) скорость подачи конвейера в зависимости от температуры... В быту - не знаю, разве что скорость вращения дичи в гриле :)))))
Самогон на шаговиках от лазерных принтеров... это необычно.
А что думаете про управление командой tone (pin_tone, freq_tone)?
А что думаете про управление командой tone (pin_tone, freq_tone)?
это читерство