Подскажите в какие разъемы на Arduino и Stepper Motor Driver Carrier включать. Насколько я понял в Драйвере в VMOT подключается "+" питания для ШД, а в GND "-". В 1А,2А,1В,2В -ноги ШД. А к каким разъемам Ардуино подключать Драйвер (в Драйвере VDD, GND, STEP, DIR)? А в разъемы в Драйвере 5V и VDD подключать питание для работы самого Драйвера? В 5V подключать "+", а VDD -"-"? Вообщем, вопросов много, незнаю с чего начать. Надеюсь на помощь грамотных товарищей
Ну вот же схемка. STEP, DIR вы программируете сами, т.е. выбираете (почти любую) лапку на контроллере. Только не забудьте, что неследует подавать на мотор напряжение выше номинального.
Александр Коробцов пишет: STEP, DIR я вставляю в мк в блок DIGITAL (PWM)
Да. На STEP подаешь саму ШИМ, а на DIR даёшь VDD или GND и от этого меняется направление вращения.
Цитата
Александр Коробцов пишет: И в digital есть разъемы с ~ и без них. Чем они отличаются?
"~" - означает аппаратный ШИМ. Конечно же псевдоаппаратный, т.к. таймеры в Arduino уже зарезервированы. В любом случае желательно покопаться в архитектуре AVR, иначе все будет работать на честном слове.
Цитата
Александр Коробцов пишет: STEP, DIR
Я думаю ты понял что делать, втыкаешь разъемы и находишь в Arduino IDE примерчики с ШИМ, и не забываешь указать там свой пин для STEP и DIR(если используешь и его). Для начала конечно лучше DIR заграундить и поиграться со STEP'ом. Подай на него в начале слабую частоту, а потом увеличивай и смотри на результаты!
Кстати, 5V и VDD сначала соединять НЕ СЛЕДУЕТ:!:. Т.к. встроенный регулятор скорее всего работать не будет (требует 8-35V). Дайте на VDD отдельные 5 вольт. Когда прочтете A4988 datasheet и научитесь пользоваться встроенным резистором, тогда подавайте на VMOT большое напряжение и можете соединить 5V и VDD.
Не ясно, в примере Arduino MotorKnob сказано, что назначаем пины МК с 8 по 11, но я ШД подключаю через Драйвер, так с каких раъемов Драйвера вести провода на пины МК с 8 по 11? А step подключать к аналоговым разъемам, например А0, или можно подключить к цифровому 12? Нужно ли подавать доп. питание на МК? Счас МК подключен только по usb. Подскажите, пожалуйста, в Arduino IDE примерчики с ШИМ, названия их.
Александр Коробцов пишет: Не ясно, в примере Arduino MotorKnob
Походу в примерах и правда ничего путнего.
Попробуйте это (ЧИМ, подключить STEP к D9):
Код
void begin(uint16_t i_move_a)
{
TCCR1A = 1<<WGM11;
TCCR1A |= 1<<COM1A1;
DDRB |= 1<<1;
//---
TCCR1B = 1<<WGM12 | 1<<CS10 | 1<<CS12; // CTC and 1024
TIMSK1 = 0;
TIFR1 = 0;
ICR1 = 0;
OCR1A = i_move_a;
OCR1B = 0;
TCNT1 = 0;
}
//---------------------------------------------------------------
void upd ate(uint16_t i_move_a)
{
OCR1A = i_move_a;
}
//---------------------------------------------------------------
void se tup()
{
begin(78); // 200 step's per second
}
void loop()
{
update(78); // 10 step's per second.
delay(1000); // wait for a second
update(1562); // 10 step's per second.
delay(1000); // wait for a second
}
Получается что 15625 степов делить на i_move_a = ваши степы. begin() инициируешь один раз в se tup(), а update() сколько хочешь в loop'е, т.е. задаёшь скорость.
Цитата
Александр Коробцов пишет: Нужно ли подавать доп. питание на МК? Счас МК подключен только по usb.
Наоборот - запитайте Драйвер от Контроллера. 5V от МК к VDD драйвера.
Сигнал с МК идет, но ШД не крутит. С МК подал 5V на VDD драйвера, а GND мк на GND драйвера. С D9 мк на step драйвера, а с gnd мк на dir драйвера. К VMOT и gnd драйвера подключил соответственно питание для ШД. Обмотки шд подключил к драйверу 1А,1В,2А,2В. Питание мк от usb. Может что-то не верно подключил?
Заработало! Сопротивление на 10 Ом помогло. Огромное спасибо, Сергей! А как заставить шд вращаться в обратную сторону программно? Изменение знака на "-" в update не дает требуемого результата. Насколько я понимаю минимальный шаг составляет 1,8 град? А дробный шаг можно реализовать? 1/4, 1/16? Откуда взялось значение 15625? Оно чем-то обусловлено? Значение 78 -это 1 шаг шд?
Александр Коробцов пишет: А как заставить шд вращаться в обратную сторону программно?
Подключите DIR драйвера к любому цифровому пину МК (например D10) и подайте на него сигнал digitalWrite(D10, HIGH) для вращения в одну сторону, или digitalWrite(D10, LOW) для обратного хода. В setup'е установите pinMode(D10, OUTPUT);
Цитата
Александр Коробцов пишет: Насколько я понимаю минимальный шаг составляет 1,8 град? А дробный шаг можно реализовать? 1/4, 1/16?
Читайте datasheet к драйверу и ШД там как то можно, мне уже лень.
Цитата
Александр Коробцов пишет: Откуда взялось значение 15625? Оно чем-то обусловлено? Значение 78 -это 1 шаг шд?
Частота контроллера 16MHz, мы установили делитель таймера на 1024. Делим и получаем 15625Hz. Например нам нужно подать сигнал на пин STEP 200 тактов/сек, считаем 15625/200=78.125, т.е. 78 единиц это наша частота в 200Hz.
Но, такое ощужение, что движок не полностью обрабатывает команды. Шд должен повернуться в одну сторону, затем 1 сек ждет, затем поворачивается в другую сторону, потом опять 1 сек ждет и т.д. по кругу. Но по факту некоторые повороты пропускает. Пробывал увеличивать и уменьшать время ожадания с 0,1 сек до 3 сек не результат не повлияло. В чем может быть подвох?
Сергей Скляров пишет: Двигатель совершит 100 шагов (с интервалом 10 миллисекунд), затем подождет одну секунду и сделает тоже самое, только в другую сторону и так по циклу.
Шд крутится только в одну сторону, игнорирует наличие "-". В чем может быть проблема?